Cài OpenWrt làm Router ảo trên Proxmox: Giải pháp ‘nhẹ tênh’ để quản lý mạng Lab

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

Quên đống dây nhợ đi, đã đến lúc đưa Router vào máy ảo!

Hồi mới vọc vạch xây Lab để học Linux hay test Docker, mình từng phát điên vì đống dây mạng lòng thòng từ con router cũ dưới gầm bàn. Cứ mỗi lần muốn chia VLAN hay đổi dải IP là lại phải cắm rút thủ công, chưa kể router lởm nên cứ cấu hình sai là phải reset cứng, mất cả tiếng đồng hồ thiết lập lại.

Hiện tại, mình quản lý khoảng 15 máy ảo và Container trên một node Proxmox duy nhất. Bí kíp để mọi thứ gọn gàng chính là biến OpenWrt thành một Router ảo (Virtual Router). Nó đóng vai trò làm “nhà trưởng”, cấp phát DHCP và lọc traffic cho toàn bộ hệ thống. Chỉ cần một con mini PC chạy Proxmox, bạn có thể tạo ra cả một sơ đồ mạng phức tạp mà không tốn thêm một sợi cáp LAN nào.

Tại sao lại là OpenWrt mà không phải pfSense?

pfSense hay OPNsense thực sự rất mạnh, nhưng chúng là những “kẻ tham lam” tài nguyên. Một con pfSense cơ bản thường ngốn ít nhất 2GB RAM. Với OpenWrt, câu chuyện hoàn toàn khác. Mình chỉ cấp cho nó vỏn vẹn 256MB RAM và 1 Core CPU, nhưng nó vẫn “cân” tốt băng thông 1Gbps mà CPU hiếm khi vượt quá 5%.

Điểm mình khoái nhất là tính năng Snapshot của Proxmox. Trước khi định vọc vạch cài thêm plugin chặn quảng cáo hay cấu hình VPN phức tạp, mình chỉ mất 2 giây để tạo một bản sao. Nếu lỡ tay làm hỏng mạng, chỉ cần nhấn ‘Rollback’ là mọi thứ quay về trạng thái ổn định ngay lập tức.

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

Bước 1: Tải file ảnh hệ điều hành (Image)

OpenWrt không cài qua file ISO thông thường. Bạn cần tải file ảnh đĩa (.img). Hãy truy cập trang chủ và chọn bản Generic x86-64.

Mẹo nhỏ: Hãy ưu tiên bản combined-ext4.img.gz. Định dạng ext4 giúp bạn mở rộng dung lượng ổ đĩa sau này cực kỳ dễ dàng nếu lỡ cài quá nhiều gói phần mềm. Bạn có thể dùng lệnh wget để tải trực tiếp vào Proxmox cho nhanh:

# Di chuyển đến thư mục lưu trữ
cd /var/lib/vz/template/iso

# Tải bản OpenWrt (ví dụ 23.05.0)
wget https://downloads.openwrt.org/releases/23.05.0/targets/x86/64/openwrt-23.05.0-x86-64-generic-ext4-combined.img.gz

# Giải nén file
gunzip openwrt-23.05.0-x86-64-generic-ext4-combined.img.gz

Bước 2: Tạo “vỏ” máy ảo trên Proxmox

Chúng ta sẽ xây dựng một khung máy ảo trống trước khi nạp hệ điều hành vào:

  1. Chọn Create VM, đặt ID là 100, tên là “OpenWrt-Core”.
  2. Phần OS: Chọn “Do not use any media”.
  3. Phần Disks: Xóa ổ đĩa mặc định. Chúng ta sẽ dùng lệnh để import sau.
  4. Phần CPU: 1 Core là đủ. Đặt Type là ‘host’ để tối ưu tập lệnh.
  5. Phần Memory: Đặt 256MB hoặc 512MB nếu bạn định cài nhiều app.
  6. Phần Network: Chọn Bridge vmbr0 (Đây sẽ là cổng WAN để ra Internet).

Bước 3: Nạp đĩa cứng bằng lệnh qm importdisk

Đây là bước then chốt. Chúng ta cần chuyển đổi file .img thành ổ đĩa mà Proxmox hiểu được. Quay lại terminal và chạy lệnh:

# Cấu trúc: qm importdisk <VM_ID> <TÊN_FILE> <TÊN_STORAGE>
qm importdisk 100 openwrt-23.05.0-x86-64-generic-ext4-combined.img local-lvm

Xong xuôi, bạn vào lại giao diện Proxmox -> VM 100 -> Hardware. Một ổ đĩa “Unused Disk 0” sẽ xuất hiện. Hãy nhấn đúp vào nó, chọn Add. Đừng quên vào mục Options -> Boot Order để ưu tiên ổ đĩa này lên đầu tiên nhé.

Bước 4: Thiết lập mạng nội bộ (LAN)

Để làm router, máy ảo cần ít nhất 2 tay: một tay nhận mạng (WAN) và một tay phát mạng (LAN).

  • Cổng WAN: Chính là vmbr0 đã tạo lúc nãy.
  • Cổng LAN: Bạn vào phần Network của Proxmox, tạo một Linux Bridge mới (ví dụ vmbr1). Lưu ý: Không điền gì vào ô Bridge ports. Đây sẽ là mạng ảo cô lập chỉ dành cho các VM trong Lab.

Cuối cùng, vào Hardware của VM OpenWrt, chọn Add -> Network Device và trỏ vào vmbr1.

Cấu hình OpenWrt trong 1 nốt nhạc

Bật máy ảo lên và mở Console. Khi màn hình hiện logo OpenWrt, hãy nhấn Enter. Mặc định IP của nó là 192.168.1.1, rất dễ đụng hàng với router nhà bạn. Hãy đổi nó đi:

vi /etc/config/network

Sửa dòng option ipaddr '192.168.1.1' thành một dải khác, ví dụ 10.0.0.1. Lưu lại và gõ lệnh thay đổi: /etc/init.d/network restart.

Giờ bạn chỉ cần lấy một máy ảo bất kỳ (ví dụ Windows 10), đổi card mạng của nó sang vmbr1. Máy ảo đó sẽ nhận IP từ OpenWrt và bạn có thể truy cập giao diện LuCI tại http://10.0.0.1.

Lời khuyên từ thực tế

Sau một thời gian dài sử dụng, mình rút ra vài kinh nghiệm xương máu:

  • Bảo mật ngay lập tức: Việc đầu tiên khi vào Web UI là đặt mật khẩu Root. Đừng để trống, rất nguy hiểm nếu bạn mở port.
  • Tối ưu tốc độ: Hãy chọn model card mạng là VirtIO để đạt tốc độ truyền tải nội bộ lên tới 10Gbps. Đừng dùng E1000 trừ khi gặp vấn đề tương thích.
  • Gói phần mềm hữu ích: Hãy cài luci-app-wireguard. Nó cho phép bạn VPN về nhà và truy cập toàn bộ máy ảo trong Lab như đang ngồi ở quán cafe.

Kết luận

Dùng OpenWrt trên Proxmox không chỉ là cách tiết kiệm tài nguyên mà còn là tư duy quản lý mạng chuyên nghiệp. Bạn sẽ có toàn quyền kiểm soát firewall, băng thông và dịch vụ của từng máy ảo mà không cần tốn một xu cho phần cứng rời. Nếu bạn đang muốn nâng cấp trình độ SysAdmin, đây chính là bài thực hành đầu tiên bạn nên thử. Chúc các bạn có một hệ thống Lab ưng ý!

Share: