IEEE 802.1Q – Trunking và VLAN Gốc
Anh em làm mạng chắc hẳn không lạ với khái niệm trunk – một liên kết duy nhất nhưng có thể mang nhiều VLAN. Nếu coi VLAN như “làn đường” trong cao tốc, thì trunk chính là con đường cao tốc đa làn, mỗi làn mang lưu lượng riêng biệt và không lẫn vào nhau.
1. Cơ chế gắn thẻ VLAN – 802.1Q Tagging
Khi một khung Ethernet đi qua trunk, thiết bị sẽ chèn thêm một tiêu đề VLAN dài 4 byte vào giữa địa chỉ MAC đích/nguồn và trường EtherType/Length.
Cấu trúc thẻ 802.1Q gồm:
💡 Lưu ý kỹ thuật: Khi chèn thẻ, FCS (Frame Check Sequence) ở cuối khung sẽ bị tính toán lại vì nội dung khung đã thay đổi. Điều này giúp đảm bảo tính toàn vẹn dữ liệu.
2. VLAN Gốc (Native VLAN)
Theo chuẩn IEEE 802.1Q, mọi VLAN đều được gắn thẻ khi đi qua trunk, trừ VLAN gốc. VLAN gốc được truyền không gắn thẻ (untagged frame), giúp duy trì khả năng tương thích giữa thiết bị từ nhiều hãng khác nhau.
Đặc điểm & lưu ý khi cấu hình VLAN gốc:
⚠ Nguy cơ bảo mật: Nếu để VLAN 1 làm VLAN gốc, kẻ tấn công có thể khai thác tấn công VLAN hopping hoặc dùng CDP/DTP để thu thập thông tin mạng. Vì vậy, Cisco khuyến nghị thay đổi VLAN gốc mặc định.
3. Cảnh báo từ Cisco Discovery Protocol (CDP)
4. Ví dụ cấu hình trunk với VLAN gốc bảo mật
Switch(config)# interface gigabitEthernet0/1
Switch(config-if)# switchport trunk encapsulation dot1q
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk native vlan 999
Switch(config-if)# switchport trunk allowed vlan 10,20,30
5. Tóm tắt Best Practice
Anh em làm mạng chắc hẳn không lạ với khái niệm trunk – một liên kết duy nhất nhưng có thể mang nhiều VLAN. Nếu coi VLAN như “làn đường” trong cao tốc, thì trunk chính là con đường cao tốc đa làn, mỗi làn mang lưu lượng riêng biệt và không lẫn vào nhau.
1. Cơ chế gắn thẻ VLAN – 802.1Q Tagging
Khi một khung Ethernet đi qua trunk, thiết bị sẽ chèn thêm một tiêu đề VLAN dài 4 byte vào giữa địa chỉ MAC đích/nguồn và trường EtherType/Length.
Cấu trúc thẻ 802.1Q gồm:
- Tag Protocol Identifier (TPID): Luôn có giá trị 0x8100 để cho biết đây là khung được gắn thẻ VLAN theo chuẩn 802.1Q.
- Priority (3 bit): Dùng cho QoS (802.1p), giúp ưu tiên loại lưu lượng (ví dụ: thoại IP cần độ trễ thấp).
- Canonical Format Indicator (CFI): 1 bit, xác định định dạng địa chỉ MAC (0 = canonical, 1 = non-canonical).
- VLAN ID (VID – 12 bit): Xác định VLAN mà khung thuộc về, giá trị từ 1–4094 (0 và 4095 là giá trị đặc biệt).
💡 Lưu ý kỹ thuật: Khi chèn thẻ, FCS (Frame Check Sequence) ở cuối khung sẽ bị tính toán lại vì nội dung khung đã thay đổi. Điều này giúp đảm bảo tính toàn vẹn dữ liệu.
2. VLAN Gốc (Native VLAN)
Theo chuẩn IEEE 802.1Q, mọi VLAN đều được gắn thẻ khi đi qua trunk, trừ VLAN gốc. VLAN gốc được truyền không gắn thẻ (untagged frame), giúp duy trì khả năng tương thích giữa thiết bị từ nhiều hãng khác nhau.
Đặc điểm & lưu ý khi cấu hình VLAN gốc:
- Mặc định VLAN gốc = VLAN 1 trên switch Cisco.
- VLAN gốc phải giống nhau ở hai đầu trunk. Nếu không khớp → lưu lượng có thể bị trộn, gây lỗi nghiêm trọng.
- Có thể cấu hình để gắn thẻ cả VLAN gốc (tag native VLAN), giúp dễ dàng lọc và kiểm soát bảo mật.
- Nên chọn một VLAN không sử dụng làm VLAN gốc để giảm nguy cơ tấn công (ví dụ: VLAN 999 hoặc VLAN 4094).
⚠ Nguy cơ bảo mật: Nếu để VLAN 1 làm VLAN gốc, kẻ tấn công có thể khai thác tấn công VLAN hopping hoặc dùng CDP/DTP để thu thập thông tin mạng. Vì vậy, Cisco khuyến nghị thay đổi VLAN gốc mặc định.
3. Cảnh báo từ Cisco Discovery Protocol (CDP)
- Switch Cisco dùng CDP để phát hiện VLAN gốc không khớp và gửi cảnh báo.
- Một số phiên bản IOS tự động tắt CDP trên trunk nếu VLAN 1 bị vô hiệu hóa. Điều này đôi khi khiến anh em mất công debug nếu không biết lý do.
4. Ví dụ cấu hình trunk với VLAN gốc bảo mật
Switch(config)# interface gigabitEthernet0/1
Switch(config-if)# switchport trunk encapsulation dot1q
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk native vlan 999
Switch(config-if)# switchport trunk allowed vlan 10,20,30
- Native VLAN = 999 (không sử dụng cho dữ liệu thông thường).
- Chỉ cho phép VLAN 10, 20, 30 đi qua trunk để giảm nguy cơ VLAN hopping.
5. Tóm tắt Best Practice
- Không dùng VLAN 1 làm VLAN gốc.
- Đặt native VLAN thành một VLAN riêng biệt, không có user.
- Chỉ cho phép VLAN cần thiết trên trunk.
- Nếu môi trường hỗ trợ, bật tagging cho cả native VLAN để dễ giám sát và lọc.