Hướng dẫn cài đặt và cấu hình MikroTik CHR trên Proxmox VE cho Network Lab

Networking tutorial - IT technology blog
Networking tutorial - IT technology blog

Các giải pháp router ảo cho Proxmox VE: So sánh những phương pháp phổ biến

Khi xây dựng môi trường staging độc lập hoặc homelab trên Proxmox Virtual Environment (PVE), việc lựa chọn phần mềm định tuyến phù hợp chính là nền móng cho toàn bộ mô hình mạng ảo của bạn. Trong các cụm lab cũng như môi trường production, bạn thường sẽ bắt gặp ba giải pháp ảo hóa chính sau:

  • Linux bridge thông thường kết hợp iptables/nftables: Cực kỳ linh hoạt và tận dụng trực tiếp kernel của máy chủ host, nhưng lại rất khó bảo trì và quản lý khi các chính sách firewall, bảng định tuyến và cấu hình VLAN ngày càng mở rộng.
  • Firewall dựa trên FreeBSD (pfSense / OPNsense): Khả năng kiểm tra trạng thái gói tin (stateful inspection) xuất sắc, giao diện WebGUI trực quan và cộng đồng hỗ trợ đông đảo. Tuy nhiên, các giải pháp này thiên về mô hình thiết bị bảo mật hơn là phục vụ cho nhu cầu định tuyến động cấp nhà mạng hoặc giả lập lab chuẩn ISP.
  • MikroTik Cloud Hosted Router (CHR): Phiên bản RouterOS được tối ưu hóa chuyên biệt cho các nền tảng hypervisor (KVM, Proxmox, VMware, Hyper-V). Giải pháp này mang đến khả năng kiểm soát L3 switching thực thụ, policy routing, MPLS, OSPF, BGP, WireGuard và CAPsMAN với mức tiêu tốn tài nguyên cực kỳ khiêm tốn.

Bảng so sánh trực quan

Dưới đây là so sánh chi tiết giữa các giải pháp lab phổ biến khi triển khai trên Proxmox:

Tính năng / Tiêu chí Linux Bridges + IPTables pfSense / OPNsense MikroTik CHR
Yêu cầu RAM Tận dụng host (~0 MB phát sinh) 1024 MB – 2048 MB 128 MB – 256 MB
Dung lượng ổ đĩa Không có (dùng ổ host) 8 GB – 20 GB 1 GB – 2 GB (disk image dạng RAW)
Thời gian khởi động Tức thì 45 – 90 giây 3 – 5 giây
Hỗ trợ giao thức định tuyến Yêu cầu cài thêm FRR hoặc Bird BGP/OSPF cơ bản qua plugin Tích hợp sẵn trong nhân RouterOS (BGP, OSPF, MPLS, VPLS)
Giao diện quản trị Bash / Systemd Trình duyệt Web WinBox GUI, WebFig, SSH, API

Ưu và nhược điểm khi chạy MikroTik CHR trên Proxmox

Việc triển khai router ảo hóa ngay trên hypervisor luôn đi kèm những đánh đổi về mặt kiến trúc mà bạn cần cân nhắc kỹ trước khi dựng toàn bộ hệ thống mạng ảo phía trên nó.

Ưu điểm

  • Tối ưu tài nguyên vượt trội: RouterOS CHR chỉ cần một vCPU duy nhất cùng 128 MB đến 256 MB RAM là đã đủ sức định tuyến các gói tin ở tốc độ gigabit trong mạng nội bộ ảo.
  • Quản trị chuyên nghiệp với WinBox: Công cụ desktop WinBox cung cấp biểu đồ lưu lượng theo thời gian thực, tính năng bắt gói tin (packet sniffing) tức thì và chế độ an toàn Safe Mode khi cấu hình mà không gặp độ trễ do bộ nhớ đệm trình duyệt.
  • Gói miễn phí cực kỳ hào phóng: Giấy phép CHR miễn phí mở khóa đầy đủ mọi tính năng enterprise mà không bị giới hạn thời gian sử dụng, chỉ giới hạn băng thông ở mức 1 Mbps trên mỗi interface. Giới hạn này hoàn toàn đủ để thử nghiệm các giao thức định tuyến, access list và VPN tunnel trước khi bạn quyết định mua license vĩnh viễn P1 với chi phí rất mềm.
  • Sao lưu độc lập với phần cứng: Tính năng snapshot và export ổ đĩa của Proxmox giúp việc khôi phục trở nên vô cùng dễ dàng trước khi nâng cấp các bản cập nhật RouterOS lớn.

Nhược điểm

  • Phụ thuộc vào hypervisor: Nếu node Proxmox bị khởi động lại hoặc mất điện, toàn bộ hạ tầng định tuyến của bạn sẽ ngừng hoạt động, trừ khi bạn triển khai cụm cluster dự phòng có tính sẵn sàng cao (HA).
  • Giới hạn tốc độ 1 Mbps ở bản dùng thử mặc định: Để kiểm thử hiệu năng mạng ở tốc độ tối đa, bạn cần đăng ký bản dùng thử 60 ngày hoặc nâng cấp lên gói license trả phí.
  • Cần thao tác import file image KVM thủ công: MikroTik không phát hành bộ cài ISO chính thức cho Proxmox, do đó quá trình triển khai đòi hỏi phải import disk image dạng raw thông qua giao diện dòng lệnh của PVE.

Kiến trúc mạng khuyến nghị cho Network Lab trên Proxmox

Từ kinh nghiệm thực tế, đây là một trong những kỹ năng cốt lõi cần nắm vững khi thiết kế các môi trường staging có khả năng tái lập dễ dàng. Thay vì bridge trực tiếp từng máy ảo vào mạng LAN gia đình, kiến trúc tối ưu nhất là sử dụng MikroTik CHR làm router biên nằm giữa mạng vật lý và các bridge riêng tư nội bộ.

Mô hình kiến trúc sau đây sẽ đem lại khả năng cô lập và độ linh hoạt cao nhất:

  • Interface WAN (vmbr0): Kết nối trực tiếp với cổng mạng vật lý của bạn (`eth0` hoặc `eno1`). CHR sẽ nhận IP qua DHCP từ router gia đình hoặc gateway lớp trên.
  • Bridge LAN / Lab cô lập (vmbr1): Một interface ảo nội bộ được tạo trong Proxmox, hoàn toàn không gắn với cổng mạng vật lý nào. Mọi máy ảo và container trong lab sẽ kết nối vào bridge này.
  • Bridge Quản trị / DMZ (vmbr2, Tùy chọn): Một bridge tách biệt dành riêng cho việc thử nghiệm các reverse proxy công khai ra ngoài hoặc các workload cần cách ly đặc biệt.

Bằng cách định tuyến mọi luồng dữ liệu qua CHR, bạn có thể áp dụng các quy tắc firewall filter nghiêm ngặt, giám sát lưu lượng trong lab và mô phỏng sự cố mất kết nối WAN mà không làm gián đoạn bất kỳ thiết bị nào trên mạng vật lý gia đình.

Hướng dẫn triển khai từng bước

Sau đây, chúng ta sẽ cùng thực hiện quy trình khởi tạo máy ảo trên Proxmox và cấu hình mạng cơ bản trên RouterOS.

Bước 1: Tạo bridge cô lập trên Proxmox

Trước hết, hãy kiểm tra xem máy chủ Proxmox của bạn đã có bridge ảo nội bộ không gắn với cổng mạng vật lý nào hay chưa. Bạn có thể xem cấu hình mạng hiện tại qua CLI:

cat /etc/network/interfaces

Nếu chưa có bridge nội bộ riêng, hãy tạo thêm `vmbr1` bằng cách thêm đoạn cấu hình sau vào cuối file /etc/network/interfaces:

auto vmbr1
iface vmbr1 inet manual
        bridge-ports none
        bridge-stp off
        bridge-fd 0
# Bridge ảo nội bộ dành cho Lab

Áp dụng ngay cấu hình mới mà không cần khởi động lại máy chủ:

ifreload -a

Bước 2: Tải về và giải nén disk image MikroTik CHR

Kết nối SSH vào máy chủ Proxmox. Chuyển đến thư mục tạm và tải file raw disk image từ kho phần mềm chính thức của MikroTik. RouterOS v7 hiện là nhánh ổn định mới nhất:

cd /tmp
wget https://download.mikrotik.com/routeros/7.16.1/chr-7.16.1.img.zip

# Giải nén file raw disk image
apt-get install -y unzip
unzip chr-7.16.1.img.zip

Bước 3: Khởi tạo khung máy ảo (VM)

Chúng ta sẽ tạo khung máy ảo rỗng bằng công cụ qm. Trong ví dụ này, chúng ta đặt VM ID là 900:

qm create 900 \
  --name "MikroTik-CHR" \
  --memory 256 \
  --cores 1 \
  --cpu host \
  --net0 virtio,bridge=vmbr0 \
  --net1 virtio,bridge=vmbr1 \
  --ostype other \
  --onboot 1 \
  --boot order=scsi0

Bước 4: Import disk image và gắn vào máy ảo

Import trực tiếp file image đã giải nén vào storage pool tương ứng trên Proxmox của bạn (thay thế local-lvm bằng local-zfs hoặc ceph tùy thuộc vào storage backend đang dùng):

qm importdisk 900 chr-7.16.1.img local-lvm

Sau khi import xong ổ đĩa, hãy gắn nó vào bộ điều khiển SCSI 0 sử dụng chuẩn VirtIO SCSI:

qm set 900 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-900-disk-0

Xóa các file cài đặt đã tải về để giải phóng dung lượng lưu trữ:

rm -f /tmp/chr-7.16.1.img /tmp/chr-7.16.1.img.zip

Bước 5: Khởi động router và thực hiện thiết lập ban đầu

Bật máy ảo router từ giao diện dòng lệnh của Proxmox:

qm start 900

Mở màn hình console của VM 900 trên giao diện Proxmox Web UI. Đăng nhập bằng thông tin mặc định:

  • Login: admin
  • Password: (nhấn Enter, mặc định không có mật khẩu)

Khi được hỏi có muốn xem thỏa thuận cấp phép (license agreement) hay không, hãy nhấn n, sau đó đặt mật khẩu quản trị an toàn theo yêu cầu hiển thị.

Bước 6: Cấu hình Interface, IP và NAT Masquerade

Thực thi các lệnh RouterOS cơ bản sau trong console để đặt tên giao diện rõ ràng, gán IP gateway nội bộ và cấp quyền truy cập Internet cho các máy trong lab:

# 1. Đổi tên các interface cho dễ nhận biết
/interface set ether1 name=ether1-WAN
/interface set ether2 name=ether2-LAN

# 2. Cấu hình DHCP Client trên cổng WAN
/ip dhcp-client add interface=ether1-WAN disabled=no

# 3. Gán địa chỉ gateway tĩnh cho bridge lab nội bộ
/ip address add address=10.10.10.1/24 interface=ether2-LAN

# 4. Tạo dải cấp phát DHCP pool và DHCP server cho các máy trạm trong lab
/ip pool add name=lab-pool ranges=10.10.10.50-10.10.10.200
/ip dhcp-server add name=lab-dhcp interface=ether2-LAN address-pool=lab-pool disabled=no
/ip dhcp-server network add address=10.10.10.0/24 gateway=10.10.10.1 dns-server=1.1.1.1,8.8.8.8

# 5. Kích hoạt Source NAT (Masquerade) để máy ảo lab có thể ra internet
/ip firewall nat add chain=srcnat out-interface=ether1-WAN action=masquerade

# 6. Bật tính năng DNS cache cho các truy vấn nội bộ
/ip dns set allow-remote-requests=yes servers=1.1.1.1,8.8.8.8

Bước 7: Kiểm tra kết nối ra Internet

Kiểm tra xem RouterOS đã kết nối thông suốt với mạng bên ngoài hay chưa bằng lệnh ping trực tiếp từ CLI:

/ping 1.1.1.1 count=4

Giờ đây, bất kỳ máy ảo hoặc LXC container nào mới được gắn vào vmbr1 sẽ tự động nhận địa chỉ IP trong dải 10.10.10.0/24, được định tuyến qua router MikroTik ảo và được cách ly an toàn bằng firewall khỏi mạng vật lý gia đình của bạn.

Share: