Danh mục sản phẩm
Bài 24: Trunk & Access Port — Encapsulation 802.1Q
💡 Liên hệ thực tế
Ở Bài 23, mỗi cổng Access chỉ phục vụ 1 VLAN duy nhất — giống như một chiếc xe giao hàng chỉ chở hàng của một cửa hàng.
Nhưng khi 2 switch ở hai tầng hoặc hai tòa nhà cần kết nối với nhau, cả hai đều có VLAN 10, VLAN 20 và VLAN 30. Chẳng lẽ phải kéo 3 sợi cáp riêng, mỗi sợi chỉ để truyền dữ liệu của một VLAN?
🚚 May mắn là không cần. Hãy tưởng tượng thay vì dùng nhiều xe nhỏ, ta sử dụng một chiếc xe tải lớn để chở hàng của nhiều cửa hàng cùng lúc. Mỗi kiện hàng đều được gắn nhãn ghi rõ thuộc cửa hàng nào, nên khi đến nơi vẫn được phân loại chính xác mà không bị lẫn với nhau.
Trong mạng máy tính cũng vậy, Trunk Port cho phép nhiều VLAN cùng truyền qua một sợi cáp duy nhất. Mỗi Ethernet Frame sẽ được gắn thêm một thẻ (VLAN Tag) theo chuẩn IEEE 802.1Q, giúp switch ở đầu bên kia biết chính xác frame đó thuộc VLAN nào để đưa vào đúng VLAN tương ứng.
📘 Kiến thức cốt lõi
⚖️ Phân biệt Access Port và Trunk Port:
| Access Port | Trunk Port | |
|---|---|---|
| Số VLAN mang được | Chỉ 1 VLAN duy nhất | Nhiều VLAN cùng lúc |
| Dùng để nối với | Thiết bị đầu cuối (PC, máy in, camera) | Switch khác, Router, Access Point |
| Có gắn thẻ VLAN (tag) không | Không — Frame đi ra là Frame thường | Có — mỗi Frame được gắn thêm tag xác định thuộc VLAN nào |
🏷️ 802.1Q là gì? Là chuẩn IEEE quy định cách gắn thẻ (tag) vào Frame Ethernet để xác định Frame đó thuộc VLAN nào, khi đi qua đường Trunk. Về bản chất, 802.1Q chèn thêm 4 byte vào giữa Frame gốc — ngay sau Source MAC, trước EtherType — trước khi Frame đó được gửi qua cổng Trunk.
📦 Bên trong 4 byte của tag 802.1Q đó gồm những gì? Không phải chỉ có mỗi số VLAN — 4 byte này chia làm 2 phần nhỏ hơn:
| Trường | Kích thước | Vai trò |
|---|---|---|
| TPID (Tag Protocol Identifier) | 2 byte | Luôn có giá trị cố định 0x8100, báo hiệu "Frame này đã được gắn tag 802.1Q" — nhờ giá trị đặc biệt này, thiết bị nhận biết 2 byte tiếp theo là thông tin tag, không phải EtherType gốc |
| TCI (Tag Control Information) | 2 byte | Chia tiếp thành 3 trường nhỏ hơn bên dưới |
| ┗ PCP (Priority Code Point) | 3 bit | Dùng cho QoS, xác định độ ưu tiên của gói tin (từ 0 đến 7, VoIP thường dùng 5 hoặc 6) |
| ┗ DEI (Drop Eligible Indicator) | 1 bit | Đánh dấu Frame có thể bị loại bỏ trước tiên nếu mạng bị nghẽn hay không |
| ┗ VID (VLAN Identifier) | 12 bit | Chứa VLAN ID (1–4094), dùng để xác định VLAN của Frame. Đây là trường mang số hiệu VLAN trong thẻ 802.1Q. |
📎 Vì VID chỉ chiếm 12 bit (2^12 = 4096 giá trị, trừ đi 2 giá trị dự trữ 0 và 4095), đây chính là lý do kỹ thuật giải thích tại sao số hiệu VLAN trên switch Cisco chỉ nằm trong khoảng 1-4094 chứ không phải một con số tùy ý.
📎 Liên hệ lại kiến thức Encapsulation (Bài 6): đây chính là một lớp "đóng gói bổ sung" ở tầng Data Link — Frame gốc được "dán thêm nhãn VLAN" trước khi đi qua Trunk, và bị bóc nhãn ra khi đến switch đích, hoàn toàn giống tinh thần encapsulation/de-encapsulation đã học.
⚙️ Cấu hình Trunk Port trên switch Cisco:
Switch(config)# interface gigabitEthernet 0/1 Switch(config-if)# switchport trunk encapsulation dot1q Switch(config-if)# switchport mode trunk Switch(config-if)# switchport trunk allowed vlan 10,20,30 Switch(config-if)# exit
📎 Giải thích từng lệnh:
switchport trunk encapsulation dot1q: chỉ định dùng chuẩn đóng gói 802.1Q (một số dòng switch cũ hỗ trợ thêm chuẩn ISL độc quyền của Cisco, nhưng 802.1Q là chuẩn phổ biến và được khuyến nghị hiện nay). Lệnh này chỉ cần thiết trên các switch hỗ trợ nhiều loại encapsulation; nhiều switch đời mới chỉ hỗ trợ dot1q nên lệnh này không xuất hiện hoặc không bắt buộc.switchport mode trunk: chuyển cổng sang chế độ Trunk.switchport trunk allowed vlan 10,20,30: chỉ định rõ những VLAN nào được phép đi qua đường Trunk này — có thể giới hạn để tăng bảo mật, tránh VLAN không liên quan bị "lọt" qua.
🏴 Native VLAN — khái niệm dễ gây nhầm lẫn: Trên mỗi cổng Trunk luôn có 1 VLAN đặc biệt gọi là Native VLAN — Frame thuộc VLAN này không bị gắn thẻ (untagged) khi đi qua Trunk, khác với các VLAN khác đều bị gắn thẻ. Mặc định, Native VLAN là VLAN 1.
Switch(config-if)# switchport trunk native vlan 99
⚠️ Lỗi cấu hình phổ biến nhất liên quan đến Trunk: Native VLAN mismatch — khi 2 đầu Trunk của 2 switch được cấu hình Native VLAN khác nhau (ví dụ 1 bên là VLAN 1, bên kia là VLAN 99), switch sẽ báo lỗi cảnh báo và có thể gây ra sự cố định tuyến Frame sai VLAN. Luôn đảm bảo Native VLAN khớp nhau ở cả 2 đầu của cùng 1 đường Trunk — không cần lo các cổng Trunk khác trên switch phải dùng chung giá trị này
❓ Native VLAN là 1 giá trị chung cho cả switch, hay có thể khác nhau trên từng cổng Trunk?
Đây là điểm rất dễ hiểu nhầm: Native VLAN được cấu hình theo từng cổng Trunk riêng lẻ (lệnh
switchport trunk native vlannằm dưới chế độconfig-if, tức là chỉ áp dụng cho đúng cổng đang cấu hình) — không phải 1 giá trị cố định chung cho toàn bộ switch.Ví dụ, switch hoàn toàn có thể có:
Switch(config)# interface gi0/1 Switch(config-if)# switchport trunk native vlan 99 Switch(config)# interface gi0/2 Switch(config-if)# switchport trunk native vlan 100→ Cổng Gi0/1 mang Native VLAN 99, cổng Gi0/2 mang Native VLAN 100 — hoàn toàn độc lập, không xung đột với nhau.
⚠️ Double-Tag Attack — vì sao Native VLAN untagged lại là rủi ro bảo mật? Đây là 1 kỹ thuật tấn công VLAN Hopping (nhảy VLAN), khai thác đúng cơ chế Native VLAN vừa học: kẻ tấn công gắn 2 lớp thẻ 802.1Q chồng lên nhau vào 1 Frame — lớp ngoài mang VLAN ID trùng với Native VLAN, lớp trong mang VLAN ID của mạng muốn tấn công.
Cách frame "lách" qua được: switch đầu tiên nhận Frame, thấy tag ngoài khớp Native VLAN nên bóc tag ngoài đi (vì Native VLAN vốn được xử lý untagged) rồi chuyển tiếp — nhưng bên trong Frame vẫn còn nguyên tag thứ 2. Switch kế tiếp nhận được Frame tưởng đây là Frame thường mang tag hợp lệ, liền chuyển Frame vào đúng VLAN ghi trong tag còn lại — dù kẻ tấn công ban đầu không hề thuộc VLAN đó.
🛡️ Cách phòng chống cơ bản (đã có sẵn trong các thực hành đúng chuẩn từ đầu bài): không dùng VLAN 1 làm Native VLAN mặc định, đổi Native VLAN sang 1 VLAN riêng không gán cho bất kỳ thiết bị đầu cuối nào (ví dụ VLAN 99 như ví dụ cấu hình ở trên), và tuyệt đối không để Native VLAN trùng với bất kỳ VLAN dữ liệu thực tế nào.
📎 Ở cấp CCNA, chỉ yêu cầu hiểu nguyên lý vì sao lỗ hổng này tồn tại và cách phòng chống cơ bản — không yêu cầu tự dựng tấn công demo.
☎️ Quay lại Voice VLAN (Bài 22) — cơ chế tagged/untagged thực sự diễn ra thế nào:
Ở Bài 22, Voice VLAN mới chỉ dừng ở mức khái niệm: PC và IP Phone dùng chung 1 dây nhờ switch mini bên trong điện thoại. Giờ đã học 802.1Q, ta có thể hiểu rõ cơ chế: cổng switch nối với IP Phone thực chất hoạt động như 1 dạng Trunk thu nhỏ, chỉ mang đúng 2 VLAN:
- Data VLAN — coi như Native VLAN của cổng đó: lưu lượng từ PC được IP Phone chuyển tiếp ra switch dạng untagged.
- Voice VLAN — lưu lượng thoại của chính IP Phone được gắn thẻ (tagged) trước khi gửi ra switch.
Nhờ vậy, dù đi chung 1 dây vật lý, switch vẫn tách biệt và xử lý đúng chính sách QoS riêng cho từng loại lưu lượng — hoàn toàn dựa trên đúng cơ chế 802.1Q vừa học ở trên, chỉ khác đối tượng gắn Trunk là 1 IP Phone thay vì 1 switch khác.
📡 LLDP-MED — cách điện thoại "biết" phải dùng VLAN nào:
Switch có thể cấu hình sẵn Voice VLAN cho 1 cổng, nhưng bản thân điện thoại phải được thông báo thì mới biết dùng đúng VLAN đó, với đúng thẻ (tag) nào. LLDP-MED (Media Endpoint Discovery) là phần mở rộng của LLDP (sẽ học ở Bài 36), chuyên thiết kế cho các thiết bị đầu cuối đa phương tiện như điện thoại IP, camera hội nghị. Qua LLDP-MED, switch gửi kèm 1 Network Policy trong gói LLDP tới điện thoại, báo rõ: "hãy gắn thẻ lưu lượng thoại của bạn vào VLAN số X, với mức ưu tiên QoS là Y". Điện thoại nhận được thông tin này, tự cấu hình lại theo đúng chính sách switch đưa ra — hoàn toàn tự động, không cần kỹ thuật viên cấu hình tay từng máy điện thoại.
🤖 Auto Voice VLAN — tự động phát hiện, không cần khai báo cổng nào cắm điện thoại:
Ở quy mô hàng trăm cổng switch, việc kỹ thuật viên phải nhớ chính xác cổng nào cắm điện thoại để cấu hình Voice VLAN riêng cho từng cổng là không thực tế. Auto Voice VLAN cho phép switch tự động phát hiện khi có điện thoại IP cắm vào bất kỳ cổng nào (dựa trên thông tin trao đổi qua CDP/LLDP-MED, hoặc nhận diện qua OUI — mã định danh nhà sản xuất nằm trong địa chỉ MAC của điện thoại), rồi tự động đưa đúng cổng đó vào Voice VLAN mà không cần cấu hình thủ công từng cổng một.
📎 Ở cấp CCNA, không yêu cầu cấu hình chi tiết Voice VLAN/LLDP-MED trên thiết bị thật — chỉ cần hiểu khái niệm: cổng nối IP Phone hoạt động theo đúng nguyên lý tagged/untagged của 802.1Q, và LLDP-MED/Auto Voice VLAN là cơ chế giúp việc gán VLAN cho điện thoại diễn ra tự động thay vì thủ công.
🔍 Kiểm tra cấu hình Trunk:
Switch# show interfaces trunk
Kết quả trả về dạng bảng, cho biết cổng nào đang ở chế độ Trunk, kiểu encapsulation, trạng thái, Native VLAN, và danh sách VLAN được phép đi qua:
Port Mode Encapsulation Status Native vlan Gi0/1 on 802.1q trunking 99 Port Vlans allowed on trunk Gi0/1 10,20,30 Port Vlans allowed and active in management domain Gi0/1 10,20,30 Port Vlans in spanning tree forwarding state and not pruned Gi0/1 10,20,30
📎 Dòng
Native vlancho biết ngay VLAN nào đang được cấu hình làm Native trên cổng này — đây chính là chỗ đầu tiên cần kiểm tra khi nghi ngờ có lỗi Native VLAN mismatch giữa 2 đầu Trunk.
💬 Hỏi & Đáp nhanh
❓ Nếu không giới hạn switchport trunk allowed vlan, mặc định Trunk sẽ cho phép bao nhiêu VLAN đi qua?
✅ Mặc định, nếu không cấu hình giới hạn, cổng Trunk sẽ cho phép tất cả VLAN (1 đến 4094) đi qua. Việc chỉ định rõ allowed vlan là thực hành bảo mật tốt, giúp giới hạn đúng những VLAN thực sự cần thiết đi qua đường Trunk đó, tránh rủi ro không cần thiết.
❓ Native VLAN mismatch nguy hiểm đến mức nào trong thực tế?
✅ Đây là 1 trong những lỗi cấu hình phổ biến và khó phát hiện nhất với người mới — vì mạng vẫn có thể hoạt động một phần, nhưng Frame thuộc Native VLAN có thể bị chuyển nhầm sang VLAN khác ở đầu bên kia, gây ra các sự cố kết nối khó lường và khó debug nếu không biết kiểm tra bằng lệnh show interfaces trunk.
❓ Có phải mọi cổng nối giữa 2 switch đều phải là Trunk không?
❌ Không bắt buộc — nếu 2 switch chỉ cần trao đổi dữ liệu của đúng 1 VLAN duy nhất, cổng nối giữa chúng vẫn có thể để ở chế độ Access bình thường. Trunk chỉ thực sự cần thiết khi có từ 2 VLAN trở lên cần cùng đi qua 1 đường kết nối.
❓ Vì sao đổi Native VLAN sang 1 VLAN "vô danh" (không gán thiết bị nào) lại giúp phòng chống Double-Tag Attack?
✅ Vì kỹ thuật này phụ thuộc vào việc đoán đúng Native VLAN đang dùng (thường kẻ tấn công thử VLAN 1 - giá trị mặc định). Nếu Native VLAN được đổi sang 1 số không đoán được và không có traffic hợp lệ nào thuộc VLAN đó, tag ngoài của Frame giả mạo sẽ không khớp Native VLAN thực tế của switch, khiến toàn bộ kỹ thuật thất bại ngay từ bước đầu.
❓ Cổng nối IP Phone (Bài 22) có phải cấu hình switchport mode trunk giống hệt Trunk nối 2 switch không?
❌ Không hoàn toàn giống — cổng nối IP Phone thường vẫn cấu hình ở dạng Access kèm thêm lệnh khai báo Voice VLAN riêng (switchport voice vlan), không cần bật hẳn chế độ Trunk đầy đủ. Nhưng về nguyên lý đóng gói (Data VLAN đi untagged, Voice VLAN đi tagged), nó vẫn tuân theo đúng cơ chế 802.1Q vừa học.
📝 Bài tập đánh giá
Câu 1: Lệnh nào dùng để chuyển 1 cổng switch sang chế độ Trunk?
- A.
switchport access vlan trunk - B.
switchport mode trunk - C.
vlan trunk enable - D.
interface trunk mode
Câu 2: Native VLAN có đặc điểm gì khác biệt so với các VLAN khác khi đi qua cổng Trunk?
- A. Native VLAN luôn có tốc độ nhanh hơn các VLAN khác
- B. Frame thuộc Native VLAN không bị gắn thẻ (untagged) khi đi qua Trunk
- C. Native VLAN không thể đi qua cổng Trunk
- D. Native VLAN chỉ dùng được cho VLAN 1
Câu 3: Trên cổng nối với IP Phone (Voice VLAN), lưu lượng nào được gửi đi dưới dạng untagged?
- A. Lưu lượng thoại của chính IP Phone
- B. Lưu lượng từ PC cắm nối tiếp qua IP Phone (thuộc Data VLAN)
- C. Cả lưu lượng thoại và lưu lượng PC đều bị gắn thẻ như nhau
- D. Không có lưu lượng nào được gửi untagged trên cổng này
Câu 4: Trên 1 switch có 2 cổng Trunk là Gi0/1 (nối Switch B) và Gi0/2 (nối Switch C). Phát biểu nào đúng về Native VLAN của 2 cổng này?
- A. Bắt buộc Gi0/1 và Gi0/2 phải dùng chung 1 Native VLAN, vì đây là thuộc tính chung của cả switch
- B. Gi0/1 và Gi0/2 hoàn toàn có thể dùng Native VLAN khác nhau, miễn là mỗi cổng khớp đúng với đầu Trunk tương ứng bên switch đối diện
- C. Chỉ cổng đầu tiên được cấu hình mới có Native VLAN, cổng còn lại mặc định không có
- D. Native VLAN chỉ áp dụng được cho cổng Access, không áp dụng cho Trunk
Câu 5: Double-Tag Attack khai thác chính xác đặc điểm nào của Native VLAN để thực hiện tấn công?
- A. Native VLAN luôn có băng thông cao hơn
- B. Frame thuộc Native VLAN đi qua Trunk ở dạng untagged
- C. Native VLAN không thể bị vô hiệu hóa
- D. Native VLAN chỉ tồn tại trên switch Cisco
👉 Đáp án:
Câu 1: B — switchport mode trunk là lệnh chính để chuyển 1 cổng từ chế độ Access sang chế độ Trunk trên switch Cisco.
Câu 2: B — Native VLAN là VLAN duy nhất có Frame đi qua Trunk mà không bị gắn thẻ 802.1Q, khác với các VLAN còn lại đều được gắn thẻ (tagged) để phân biệt.
Câu 3: B — Lưu lượng từ PC (thuộc Data VLAN, đóng vai trò như Native VLAN của cổng) được IP Phone chuyển tiếp ra switch dạng untagged; chỉ có lưu lượng thoại của chính IP Phone mới bị gắn thẻ vào Voice VLAN.
Câu 4: B — Native VLAN được cấu hình theo từng cổng Trunk riêng lẻ (config-if), không phải thuộc tính chung của toàn switch. Điều bắt buộc phải khớp là Native VLAN giữa 2 đầu của cùng 1 đường Trunk (Gi0/1 trên switch này với cổng nối tới nó trên Switch B) — còn Gi0/1 và Gi0/2 trên cùng switch hoàn toàn độc lập, có thể mang giá trị Native VLAN khác nhau mà không gây lỗi.
Câu 5: B — Kẻ tấn công lợi dụng việc switch tự động bóc tag ngoài (trùng Native VLAN) mà không kiểm tra tiếp, để tag thứ 2 bên trong "lọt" qua sang VLAN mục tiêu
📚 Bài viết thuộc khóa học CCNA của VNExperts
🧭 Điều hướng
| ⬅️ Bài trước | 🏠 Mục lục khóa học | Bài kế tiếp ➡️ |
|---|---|---|
| Bài 23: Cấu hình VLAN cơ bản | Mục lục khóa học CCNA | Bài 25: VTP — Đồng bộ VLAN giữa nhiều switch |
