Native VLAN trong 802.1Q trên Cisco IOS — Một khái niệm nhỏ nhưng rất quan trọng
Khi học về 802.1Q trunking, nhiều người tập trung vào VLAN tagging mà đôi khi bỏ qua một thành phần cực kỳ quan trọng: Native VLAN.
Thực tế, rất nhiều lỗi trunk, mismatch, thậm chí một số lỗ hổng bảo mật (VLAN hopping) đều liên quan đến native VLAN.
Hôm nay ta bóc tách khái niệm này theo kiểu CCNA lên CCIE.
1. Native VLAN là gì?
Trong chuẩn IEEE 802.1Q, khi một frame đi qua trunk link, switch sẽ thêm một VLAN tag vào Ethernet frame để định danh nó thuộc VLAN nào.
Ví dụ:
Nhưng có một ngoại lệ:
Traffic thuộc Native VLAN mặc định sẽ không được gắn tag (untagged).
Đây chính là ý nghĩa của Native VLAN.
2. Mặc định Native VLAN là VLAN 1
Trên Cisco switch:
Switch(config-if)#switchport mode trunk
Mặc định:
Native VLAN = VLAN 1
Kiểm tra:
show interfaces fa0/24 trunk
Kết quả:
Port Mode Encapsulation Status Native vlan
Fa0/24 on 802.1q trunking 1
(Tài liệu minh họa rõ ở trang 2)
3. Điều gì xảy ra với frame untagged?
Nếu một switch nhận frame không có VLAN tag trên cổng trunk:
Switch sẽ giả định:
Frame này thuộc Native VLAN
Ví dụ:
=> Frame được đưa vào VLAN 10.
4. Vì sao phải tồn tại Native VLAN?
Một số control-plane protocols truyền untagged:
Trong Wireshark ở tài liệu, CDP frame xuất hiện untagged trên native VLAN. (trang 2)
Đó là lý do native VLAN tồn tại.
5. Đổi Native VLAN
Thông thường best practice là không dùng VLAN 1.
Ví dụ đổi thành VLAN 10:
SW1(config)#interface fa0/24
SW1(config-if)#switchport trunk native vlan 10
SW2(config)#interface fa0/24
SW2(config-if)#switchport trunk native vlan 10
Kiểm tra:
show interfaces trunk
Sẽ thấy:
Native vlan 10
(Tài liệu minh họa ở trang 3)
6. Native VLAN Mismatch — lỗi rất hay gặp
Nếu hai đầu trunk khác nhau:
Switch A:
native vlan 10
Switch B:
native vlan 20
Sẽ sinh lỗi:
CDP-4-NATIVE_VLAN_MISMATCH
Vì:
Frame untagged từ A được B cho là thuộc VLAN 20.
Hậu quả:
Đây là lỗi kinh điển trong production.
7. Tag luôn Native VLAN (Best Practice nâng cao)
Cisco hỗ trợ bắt cả native VLAN phải tagged:
vlan dot1q tag native
Cấu hình global:
SW(config)#vlan dot1q tag native
(Tài liệu trang 3 có minh họa)
Điều này thay đổi gì?
Bình thường:
Native VLAN traffic = untagged
Sau lệnh này:
Native VLAN traffic = tagged luôn
Không còn untagged traffic trên trunk.
Đây là best practice rất tốt.
8. Liên quan bảo mật — VLAN Hopping Attack
Một kiểu tấn công cổ điển: Double Tagging Attack
Attacker gửi frame:
Outer tag = Native VLAN
Inner tag = Target VLAN
Switch đầu:
Switch sau:
Kẻ tấn công “nhảy VLAN”.
Mitigation:
9. Voice VLAN cũng liên quan Native VLAN
IP Phone Cisco thường:
Ví dụ:
switchport access vlan 10
switchport voice vlan 20
PC traffic:
Voice:
Đây là cùng nguyên lý native/untagged.
10. Cấu hình hoàn chỉnh
interface fa0/24
switchport trunk encapsulation dot1q
switchport mode trunk
switchport trunk native vlan 10
Best practice thêm:
vlan dot1q tag native
11. Best Practices (CCIE style)
✔ Không dùng VLAN 1 làm native VLAN
✔ Dùng VLAN không sử dụng cho user:
999
4094
(thường gặp)
✔ Native VLAN phải match hai đầu trunk
✔ Tag native VLAN nếu có thể
✔ Tắt DTP trên trunk tĩnh:
switchport nonegotiate
12. Một điều hay bị hiểu sai
Nhiều người nghĩ:
Native VLAN = management VLAN
Sai.
Management VLAN có thể là VLAN 99.
Native VLAN có thể là VLAN 999.
Hai khái niệm độc lập.
Tóm tắt nhanh
Native VLAN:
Một câu hỏi CCIE hay gặp:
Nếu cả hai đầu trunk đều bật vlan dot1q tag native, Native VLAN còn “native” không?
Về logic vẫn là native VLAN, nhưng lúc này nó không còn untagged nữa.
Đây là chỗ nhiều người dễ nhầm.
Khi học về 802.1Q trunking, nhiều người tập trung vào VLAN tagging mà đôi khi bỏ qua một thành phần cực kỳ quan trọng: Native VLAN.
Thực tế, rất nhiều lỗi trunk, mismatch, thậm chí một số lỗ hổng bảo mật (VLAN hopping) đều liên quan đến native VLAN.
Hôm nay ta bóc tách khái niệm này theo kiểu CCNA lên CCIE.
1. Native VLAN là gì?
Trong chuẩn IEEE 802.1Q, khi một frame đi qua trunk link, switch sẽ thêm một VLAN tag vào Ethernet frame để định danh nó thuộc VLAN nào.
Ví dụ:
- VLAN 10 → gắn tag VLAN 10
- VLAN 20 → gắn tag VLAN 20
Nhưng có một ngoại lệ:
Traffic thuộc Native VLAN mặc định sẽ không được gắn tag (untagged).
Đây chính là ý nghĩa của Native VLAN.
2. Mặc định Native VLAN là VLAN 1
Trên Cisco switch:
Switch(config-if)#switchport mode trunk
Mặc định:
Native VLAN = VLAN 1
Kiểm tra:
show interfaces fa0/24 trunk
Kết quả:
Port Mode Encapsulation Status Native vlan
Fa0/24 on 802.1q trunking 1
(Tài liệu minh họa rõ ở trang 2)
3. Điều gì xảy ra với frame untagged?
Nếu một switch nhận frame không có VLAN tag trên cổng trunk:
Switch sẽ giả định:
Frame này thuộc Native VLAN
Ví dụ:
- Untagged frame đi vào trunk
- Native VLAN = 10
=> Frame được đưa vào VLAN 10.
4. Vì sao phải tồn tại Native VLAN?
Một số control-plane protocols truyền untagged:
- CDP
- VTP
- DTP
- PAgP
- LACP (trong vài trường hợp platform dependent)
Trong Wireshark ở tài liệu, CDP frame xuất hiện untagged trên native VLAN. (trang 2)
Đó là lý do native VLAN tồn tại.
5. Đổi Native VLAN
Thông thường best practice là không dùng VLAN 1.
Ví dụ đổi thành VLAN 10:
SW1(config)#interface fa0/24
SW1(config-if)#switchport trunk native vlan 10
SW2(config)#interface fa0/24
SW2(config-if)#switchport trunk native vlan 10
Kiểm tra:
show interfaces trunk
Sẽ thấy:
Native vlan 10
(Tài liệu minh họa ở trang 3)
6. Native VLAN Mismatch — lỗi rất hay gặp
Nếu hai đầu trunk khác nhau:
Switch A:
native vlan 10
Switch B:
native vlan 20
Sẽ sinh lỗi:
CDP-4-NATIVE_VLAN_MISMATCH
Vì:
Frame untagged từ A được B cho là thuộc VLAN 20.
Hậu quả:
- Traffic đi sai VLAN
- Layer 2 loop kỳ lạ
- STP bất thường
- Security risk
Đây là lỗi kinh điển trong production.
7. Tag luôn Native VLAN (Best Practice nâng cao)
Cisco hỗ trợ bắt cả native VLAN phải tagged:
vlan dot1q tag native
Cấu hình global:
SW(config)#vlan dot1q tag native
(Tài liệu trang 3 có minh họa)
Điều này thay đổi gì?
Bình thường:
Native VLAN traffic = untagged
Sau lệnh này:
Native VLAN traffic = tagged luôn
Không còn untagged traffic trên trunk.
Đây là best practice rất tốt.
8. Liên quan bảo mật — VLAN Hopping Attack
Một kiểu tấn công cổ điển: Double Tagging Attack
Attacker gửi frame:
Outer tag = Native VLAN
Inner tag = Target VLAN
Switch đầu:
- bỏ outer tag (do native VLAN)
Switch sau:
- thấy inner tag và forward vào VLAN mục tiêu.
Kẻ tấn công “nhảy VLAN”.
Mitigation:
- Không dùng VLAN 1 làm native
- Dùng VLAN rác không dùng cho user
- Tag native VLAN:
9. Voice VLAN cũng liên quan Native VLAN
IP Phone Cisco thường:
- Data VLAN untagged
- Voice VLAN tagged
Ví dụ:
switchport access vlan 10
switchport voice vlan 20
PC traffic:
- untagged → VLAN 10
Voice:
- tagged → VLAN 20
Đây là cùng nguyên lý native/untagged.
10. Cấu hình hoàn chỉnh
interface fa0/24
switchport trunk encapsulation dot1q
switchport mode trunk
switchport trunk native vlan 10
Best practice thêm:
vlan dot1q tag native
11. Best Practices (CCIE style)
✔ Không dùng VLAN 1 làm native VLAN
✔ Dùng VLAN không sử dụng cho user:
999
4094
(thường gặp)
✔ Native VLAN phải match hai đầu trunk
✔ Tag native VLAN nếu có thể
✔ Tắt DTP trên trunk tĩnh:
switchport nonegotiate
12. Một điều hay bị hiểu sai
Nhiều người nghĩ:
Native VLAN = management VLAN
Sai.
Management VLAN có thể là VLAN 99.
Native VLAN có thể là VLAN 999.
Hai khái niệm độc lập.
Tóm tắt nhanh
Native VLAN:
- là VLAN xử lý untagged traffic trên trunk
- mặc định VLAN 1
- có thể thay đổi:
- có thể ép tag:
- mismatch gây lỗi và risk bảo mật.
Một câu hỏi CCIE hay gặp:
Nếu cả hai đầu trunk đều bật vlan dot1q tag native, Native VLAN còn “native” không?
Về logic vẫn là native VLAN, nhưng lúc này nó không còn untagged nữa.
Đây là chỗ nhiều người dễ nhầm.