Loading...

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 PortTrunk 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.

Ethernet Frame trước và sau khi chèn tag 802.1Q Sơ đồ so sánh 2 dải Frame: dải trên là Frame gốc chưa gắn tag; dải dưới là Frame sau khi đi qua cổng Trunk, được chèn thêm 4 byte 802.1Q Tag ngay giữa Source MAC và EtherType, kèm chi tiết bóc tách 4 byte tag. Frame trước và sau khi chèn tag 802.1Q 4 byte được chèn thêm ngay giữa Source MAC và EtherType TRƯỚC — Frame gốc trên Access Port (chưa gắn tag) Dest MAC Src MAC EtherType Payload FCS 6 byte 6 byte 2 byte 4 byte Vị trí sẽ chèn tag SAU — Frame khi đi qua Trunk Port (đã gắn tag 802.1Q) Dest MAC Src MAC 802.1Q Tag (4 byte) EtherType Payload FCS 6 byte 6 byte 2 byte 4 byte TPID (2 byte) 0x8100 Tag Protocol ID PCP 3 bit Priority DEI 1 bit Drop VID (VLAN ID) 12 bit (1 - 4094) Định danh VLAN TCI (Tag Control Info - 2 byte) Switch đích sẽ đọc VLAN ID trong tag, rồi bóc tag ra trước khi chuyển tiếp đến Access Port cuối cùng

📦 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ườngKích thướcVai 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 vlan nằ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.

Mô hình Voice VLAN — PC và IP Phone dùng chung 1 cổng switch Sơ đồ minh họa: Switch nối với IP Phone qua 1 dây vật lý duy nhất, mang cả lưu lượng Voice VLAN (tagged) và Data VLAN (untagged). Header không màu nền. Mô hình Voice VLAN Chi Tiết 1 Cổng Access — 2 VLAN Tách Biệt — 1 Dây Vật Lý Switch L2 Cổng access: Gi0/1 voice vlan 20 IP Phone (switch mini 3 cổng bên trong) Port 1 (Uplink) — nối Switch Port 2 (Access) — nối PC Port 3 (Nội bộ) — Mạch thoại PC Data VLAN 10 (Lưu lượng untagged) VLAN 20 — tagged (thoại) VLAN 10 — untagged (data) ↑ Chung 1 dây vật lý ↑ Untagged (Chỉ mang Data) LLDP-MED: "Dùng VLAN 20 cho thoại" Cơ chế Auto Voice VLAN: Switch nhận diện IP Phone (LLDP-MED) → báo Voice VLAN → IP Phone tự gắn thẻ (tag VLAN 20) cho thoại, chuyển tiếp data PC không thẻ (untagged VLAN 10). Hai luồng đi chung một dây nhưng được Switch phân biệt chính xác dựa trên thẻ VLAN. Ưu điểm: Tách biệt lưu lượng thoại (bảo mật, QoS), cấu hình tập trung tại Switch.

📡 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 vlan cho 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.

Sơ đồ minh họa Access Port và Trunk Port (802.1Q) Sơ đồ minh họa kết nối giữa các PC thuộc VLAN 10, 20, 30 qua Access Port và kết nối giữa 2 Switch qua đường Trunk Port mang nhiều VLAN với chuẩn 802.1Q Sơ đồ minh họa Access Port và Trunk Port (802.1Q) PC (V10) PC (V20) PC (V30) PC (V10) PC (V20) PC (V30) Switch 1 V10 V20 V30 Switch 2 V10 V20 V30 TRUNK PORT (802.1Q) Truyền VLAN 10, 20, 30 qua 1 cáp Access Port: Nối PC, chỉ truyền 1 VLAN duy nhất (Untagged) Trunk Port: Nối Switch-Switch, mang nhiều VLAN (Gắn thẻ 802.1Q)


💬 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: Bswitchport 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ọcBà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