VLAN trên OpenWrt không chỉ là thêm .106 vào tên interface. Tôi phải biết thiết bị dùng switch phần cứng kiểu cũ, VLAN do driver tạo hay DSA; từ OpenWrt 21.02, cú pháp và cách đặt port có thể khác đáng kể. Bài này giữ cả ba nhánh mà tài liệu chính thức mô tả.1
Cảnh báo: Sai tagged/untagged hoặc nhầm CPU port có thể làm mất toàn bộ LAN. Chụp cấu hình và chuẩn bị console trước khi đổi
/etc/config/network. Không chép nguyên mapping port của model khác.1
VLAN, tagged, untagged và off
OpenWrt hỗ trợ IEEE 802.1Q và IEEE 802.1ad (QinQ). Trong ví dụ router phổ biến, switch nội bộ có VLAN 1 cho LAN và VLAN 2 cho WAN; CPU nhận hai VLAN ở dạng tagged, còn các cổng thiết bị đầu cuối thường untagged. Tagged port thường làm trunk giữa switch/router, untagged port thường nối máy cuối.1
- Tagged trên CPU port nghĩa là frame mang tag VLAN đi tới CPU; thiết bị phía kia phải hiểu VLAN.
- Untagged nhận frame không tag và gỡ tag khi gửi ra; một port untagged chỉ có một VLAN ID và có thể dùng PVID.
- Off nghĩa là VLAN đó không đi qua port.
- Traffic muốn đi từ LAN sang WAN phải qua CPU/firewall nếu hai VLAN không chia sẻ external port; VLAN cũng có thể bypass CPU khi switch cấu hình như vậy.1
Xác định loại phần cứng và driver
Xem trang hardware của model trước. Trên router, có thể kiểm tra interface bằng:
| |
Một ví dụ khác của tài liệu cho thiết bị có một interface vật lý và các VLAN do switch tạo là:
| |
Nếu chỉ có một interface vật lý nhưng xuất hiện eth0.1, eth0.2, có thể đó là một switch VLAN-capable hoặc VLAN do driver quản lý. DSA tạo các cổng switch thành interface độc lập; không phải thiết bị nào cũng đã chuyển từ swconfig sang DSA. Khi migration thay đổi cú pháp, nếu tôi áp dụng nhầm ví dụ cũ thì mạng có thể không lên.1
Nhánh 1: switch phần cứng kiểu swconfig
Đây là mẫu cho hệ thống không dùng DSA. switch giữ thuộc tính chung, switch_vlan gắn VLAN vào switch device, còn switch_port đặt PVID. Port có hậu tố t là tagged; CPU port trong ví dụ là 5.
| |
Trong mẫu trên, frame untagged đi vào port 0 được gán VLAN 1, đi ra port 1 ở dạng untagged, đi ra port 3 và CPU ở dạng tagged, rồi xuất hiện phía Linux như eth0.1. Frame VLAN 2 đi vào port 2 tới port 4 và CPU ở dạng tagged, xuất hiện như eth0.2. Một untagged port không thể đồng thời thuộc nhiều VLAN ID.1
Nhánh 2: VLAN do driver tạo
Với thiết bị chỉ có một NIC như CPE, VLAN có thể được mô tả bằng interface cha và VLAN ID. Tài liệu cho phép cấu hình tường minh bằng config device với type '8021q', ifname, vid, name; type có thể là 8021q hoặc 8021ad, name và ifname là bắt buộc, vid là VLAN ID.
Mẫu tường minh với VLAN 106 và 204:
| |
Cú pháp rút gọn tương đương để netifd tự suy ra parent và VID từ dot-notation là:
| |
Nếu frame tagged tới eth1 mà chưa có interface VLAN tương ứng, nó có thể bị bỏ; frame untagged đi vào interface cha như bình thường. Khi bridge một interface VLAN với interface không VLAN, kernel tự thêm/gỡ tag ở ranh giới đó. Đây là nhánh khác với cấu hình switch phần cứng.1
Nhánh 3: DSA trên thiết bị có một cổng vật lý
Mẫu sau là cấu hình đầy đủ mà nguồn gọi là working example. Nó tạo br-lan, đặt VLAN 1 untagged trên port lan, VLAN 2 và 3 tagged, rồi đưa iot vào br-lan.2 và guest vào br-lan.3. Muốn WLAN hoạt động, wireless network phải bridge vào đúng interface iot hoặc guest.
| |
Kiểm tra bridge và VLAN sau khi reload:
| |
Nếu đã cài gói hỗ trợ, xem bảng VLAN bằng:
| |
Nếu bridge v không có, nguồn lưu ý có thể cần ip-full. Mẫu DSA cũng giả định một thiết bị khác đang cấp DHCP cho LAN untagged và các VLAN tagged 2/3 trên cùng liên kết; đừng bật thêm DHCP ngẫu nhiên trước khi hiểu topology.1
Kiểm tra cuối
Sau mỗi thay đổi, đối chiếu port thật, VLAN ID, tag state, interface cha, bridge và firewall zone. Test từng segment bằng một client có dây và một SSID, xác nhận client nhận đúng DHCP và không nhìn thấy segment không được phép. Khi còn nghi ngờ, khôi phục file /etc/config/network đã backup qua console; không áp dụng nguyên file của model khác.1


Góp Ý / Bình Luận / Đánh giá