Bài 27b: Thực hành Inter-VLAN Routing — Router-on-a-Stick và SVI trên Layer 3 switch
Sơ đồ lab Bài 27b · ⬇️ Tải sơ đồ (SVG) · 🔍 Mở cỡ lớn
💡 Liên hệ thực tế
Sau Bài 24b, ba phòng ban đã được tách riêng — nhưng giám đốc lại muốn phòng Kế toán gửi được báo cáo sang phòng Kinh doanh. Anh Nam (VNExperts) đưa ra hai phương án: văn phòng nhỏ có sẵn một router thì dùng Router-on-a-Stick; công ty lớn hơn thì đầu tư một switch Layer 3 và dùng SVI.
Bài lab này cho bạn làm cả hai trên cùng một mạng truy cập, để thấy rõ: đổi phương án định tuyến mà không cần sửa gì trên switch truy cập và PC.
Quy tắc ghi nhớ: gateway của mỗi VLAN phải là một interface Layer 3 nằm trong chính VLAN đó — subinterface trên router, hoặc SVI trên switch Layer 3.
🎯 Mục tiêu bài lab
- Cấu hình subinterface với
encapsulation dot1Qtrên router, kể cả subinterface cho native VLAN. - Cấu hình trunk giữa switch và router.
- Bật
ip routingvà tạo SVI trên switch Layer 3 3560. - Cấu hình trunk trên 3560 (cần
switchport trunk encapsulation dot1q). - Kiểm tra bằng
show ip interface brief,show ip route,tracert; so sánh hai phương án.
📋 Bảng địa chỉ IP và đấu nối
| Thiết bị | Interface | VLAN | Địa chỉ IP / Prefix | Gateway |
|---|---|---|---|---|
| R1 (Phần A) | G0/0 | — | Không đặt IP | — |
| G0/0.10 | 10 | 192.168.10.1/24 | — | |
| G0/0.20 | 20 | 192.168.20.1/24 | — | |
| G0/0.30 | 30 | 192.168.30.1/24 | — | |
| G0/0.99 | 99 | 192.168.99.1/24 | — | |
| G0/0.999 | 999 (native) | Không đặt IP | — | |
| MLS1 (Phần B) | Vlan10 | 10 | 192.168.10.1/24 | — |
| Vlan20 | 20 | 192.168.20.1/24 | — | |
| Vlan30 | 30 | 192.168.30.1/24 | — | |
| Vlan99 | 99 | 192.168.99.1/24 | — | |
| SW1 | Vlan99 | 99 | 192.168.99.11/24 | 192.168.99.1 |
| PC1 | NIC → SW1 Fa0/1 | 10 | 192.168.10.11/24 | 192.168.10.1 |
| PC2 | NIC → SW1 Fa0/2 | 20 | 192.168.20.11/24 | 192.168.20.1 |
| PC3 | NIC → SW1 Fa0/3 | 30 | 192.168.30.11/24 | 192.168.30.1 |
Đấu nối: Phần A: R1 G0/0 ↔ SW1 Gi0/1 (Copper Straight-Through). Phần B: MLS1 Gi0/1 ↔ SW1 Gi0/1 (Copper Cross-Over). PC1–PC3 cắm vào SW1 Fa0/1–Fa0/3 (Copper Straight-Through).
📎 Gateway của PC giống hệt nhau ở hai phần (.1 của mỗi VLAN). Đây là lý do khi đổi từ router sang switch Layer 3, phía người dùng không cần làm gì.
⚙️ Phần A — Router-on-a-Stick
⚙️ Bước A1 — Dựng sơ đồ
- Kéo ra 1 router 2911, 1 switch 2960-24TT, 3 PC. Đổi tên thành R1, SW1, PC1–PC3.
- Nối cáp và đặt IP tĩnh cho 3 PC theo bảng.
⚙️ Bước A2 — Cấu hình SW1 (ôn lại Bài 24b)
Switch(config)# hostname SW1
SW1(config)# vlan 10
SW1(config-vlan)# name KinhDoanh
SW1(config-vlan)# vlan 20
SW1(config-vlan)# name KeToan
SW1(config-vlan)# vlan 30
SW1(config-vlan)# name KyThuat
SW1(config-vlan)# vlan 99
SW1(config-vlan)# name QuanTri
SW1(config-vlan)# vlan 999
SW1(config-vlan)# name NATIVE
SW1(config-vlan)# exit
SW1(config)# interface fastEthernet 0/1
SW1(config-if)# switchport mode access
SW1(config-if)# switchport access vlan 10
SW1(config-if)# interface fastEthernet 0/2
SW1(config-if)# switchport mode access
SW1(config-if)# switchport access vlan 20
SW1(config-if)# interface fastEthernet 0/3
SW1(config-if)# switchport mode access
SW1(config-if)# switchport access vlan 30
SW1(config-if)# interface gigabitEthernet 0/1
SW1(config-if)# switchport mode trunk
SW1(config-if)# switchport trunk native vlan 999
SW1(config-if)# switchport trunk allowed vlan 10,20,30,99,999
SW1(config-if)# interface vlan 99
SW1(config-if)# ip address 192.168.99.11 255.255.255.0
SW1(config-if)# no shutdown
SW1(config-if)# exit
SW1(config)# ip default-gateway 192.168.99.1
⚙️ Bước A3 — Bật cổng vật lý của R1
Router> enable
Router# configure terminal
Router(config)# hostname R1
R1(config)# interface gigabitEthernet 0/0
R1(config-if)# no shutdown
R1(config-if)# exit
⚠️ Lỗi kinh điển: chỉ cấu hình subinterface mà quên no shutdown trên cổng vật lý G0/0. Cổng router mặc định đang tắt, và mọi subinterface đi theo trạng thái của cổng vật lý → tất cả đều down.
⚙️ Bước A4 — Tạo subinterface cho từng VLAN
R1(config)# interface gigabitEthernet 0/0.10
R1(config-subif)# encapsulation dot1Q 10
R1(config-subif)# ip address 192.168.10.1 255.255.255.0
R1(config-subif)# interface gigabitEthernet 0/0.20
R1(config-subif)# encapsulation dot1Q 20
R1(config-subif)# ip address 192.168.20.1 255.255.255.0
R1(config-subif)# interface gigabitEthernet 0/0.30
R1(config-subif)# encapsulation dot1Q 30
R1(config-subif)# ip address 192.168.30.1 255.255.255.0
R1(config-subif)# interface gigabitEthernet 0/0.99
R1(config-subif)# encapsulation dot1Q 99
R1(config-subif)# ip address 192.168.99.1 255.255.255.0
R1(config-subif)# interface gigabitEthernet 0/0.999
R1(config-subif)# encapsulation dot1Q 999 native
R1(config-subif)# end
R1# copy running-config startup-config
📎 Giải thích:
• Số sau dấu chấm (.10) chỉ là tên của subinterface. VLAN thật sự được quyết định bởi lệnhencapsulation dot1Q 10. Đặt hai số trùng nhau giúp đọc cấu hình dễ hơn.
• Phải gõencapsulationtrướcip address. Nếu làm ngược, IOS sẽ từ chối với thông báo Configuring IP routing on a LAN subinterface is only allowed if that subinterface is already configured as part of an IEEE 802.10, IEEE 802.1Q, or ISL vLAN.
•encapsulation dot1Q 999 native: báo cho router biết frame không gắn tag trên trunk thuộc VLAN 999 — khớp với native VLAN đã đặt trên SW1.
🔍 Bước A5 — Kiểm tra Phần A
R1# show ip interface brief
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/0 unassigned YES unset up up
GigabitEthernet0/0.10 192.168.10.1 YES manual up up
GigabitEthernet0/0.20 192.168.20.1 YES manual up up
GigabitEthernet0/0.30 192.168.30.1 YES manual up up
GigabitEthernet0/0.99 192.168.99.1 YES manual up up
GigabitEthernet0/0.999 unassigned YES unset up up
GigabitEthernet0/1 unassigned YES unset administratively down down
GigabitEthernet0/2 unassigned YES unset administratively down down
R1# show ip route
(… phần chú thích Codes đã lược bớt …)
Gateway of last resort is not set
192.168.10.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.10.0/24 is directly connected, GigabitEthernet0/0.10
L 192.168.10.1/32 is directly connected, GigabitEthernet0/0.10
192.168.20.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.20.0/24 is directly connected, GigabitEthernet0/0.20
L 192.168.20.1/32 is directly connected, GigabitEthernet0/0.20
192.168.30.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.30.0/24 is directly connected, GigabitEthernet0/0.30
L 192.168.30.1/32 is directly connected, GigabitEthernet0/0.30
192.168.99.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.99.0/24 is directly connected, GigabitEthernet0/0.99
L 192.168.99.1/32 is directly connected, GigabitEthernet0/0.99
Từ PC1, chạy tracert 192.168.30.11 (tới PC3):
C:\>tracert 192.168.30.11
Tracing route to 192.168.30.11 over a maximum of 30 hops:
1 0 ms 0 ms 0 ms 192.168.10.1
2 0 ms 0 ms 0 ms 192.168.30.11
Trace complete.
Hop 1 là gateway 192.168.10.1 trên R1 — gói đi lên router rồi quay xuống cùng một sợi cáp, đó là lý do gọi là "on-a-stick".
🎯 Trước khi sang Phần B, hãy lưu file: File → Save As → 27b-phanA.pkt.
⚙️ Phần B — SVI trên switch Layer 3
⚙️ Bước B1 — Thay router bằng switch Layer 3
- Xoá R1. Kéo ra 1 switch 3560-24PS, đổi tên thành MLS1.
- Nối MLS1 Gi0/1 ↔ SW1 Gi0/1 bằng Copper Cross-Over.
- Không sửa gì trên SW1 và 3 PC.
⚙️ Bước B2 — Tạo VLAN và trunk trên MLS1
Switch> enable
Switch# configure terminal
Switch(config)# hostname MLS1
MLS1(config)# vlan 10
MLS1(config-vlan)# name KinhDoanh
MLS1(config-vlan)# vlan 20
MLS1(config-vlan)# name KeToan
MLS1(config-vlan)# vlan 30
MLS1(config-vlan)# name KyThuat
MLS1(config-vlan)# vlan 99
MLS1(config-vlan)# name QuanTri
MLS1(config-vlan)# vlan 999
MLS1(config-vlan)# name NATIVE
MLS1(config-vlan)# exit
MLS1(config)# interface gigabitEthernet 0/1
MLS1(config-if)# switchport trunk encapsulation dot1q
MLS1(config-if)# switchport mode trunk
MLS1(config-if)# switchport trunk native vlan 999
MLS1(config-if)# switchport trunk allowed vlan 10,20,30,99,999
MLS1(config-if)# exit
⚠️ Trên 3560 phải gõswitchport trunk encapsulation dot1qtrướcswitchport mode trunk. Switch này hỗ trợ cả ISL nên mặc định để chế độ đóng gói "Auto"; làm ngược thứ tự, IOS sẽ báo Command rejected: An interface whose trunk encapsulation is "Auto" can not be configured to "trunk" mode.
⚙️ Bước B3 — Bật định tuyến và tạo SVI
MLS1(config)# ip routing
MLS1(config)# interface vlan 10
MLS1(config-if)# ip address 192.168.10.1 255.255.255.0
MLS1(config-if)# no shutdown
MLS1(config-if)# interface vlan 20
MLS1(config-if)# ip address 192.168.20.1 255.255.255.0
MLS1(config-if)# no shutdown
MLS1(config-if)# interface vlan 30
MLS1(config-if)# ip address 192.168.30.1 255.255.255.0
MLS1(config-if)# no shutdown
MLS1(config-if)# interface vlan 99
MLS1(config-if)# ip address 192.168.99.1 255.255.255.0
MLS1(config-if)# no shutdown
MLS1(config-if)# end
MLS1# copy running-config startup-config
⚠️ Lỗi khó thấy nhất của bài: quênip routing. Khi đó các SVI vẫn up, PC vẫn ping được gateway của chính mình — nhưng không sang được VLAN khác. Dấu hiệu nhận biết:show ip routechỉ hiện dòng Default gateway is not set thay vì bảng định tuyến.
🔍 Bước B4 — Kiểm tra Phần B
Tuỳ phiên bản IOS, bảng định tuyến có thể hiện thêm các dòng L (địa chỉ local /32) như ở R1. Output dưới đây không có dòng L:
MLS1# show ip route
(… phần chú thích Codes đã lược bớt …)
Gateway of last resort is not set
C 192.168.10.0/24 is directly connected, Vlan10
C 192.168.20.0/24 is directly connected, Vlan20
C 192.168.30.0/24 is directly connected, Vlan30
C 192.168.99.0/24 is directly connected, Vlan99
Chạy lại tracert 192.168.30.11 từ PC1: kết quả giống hệt Phần A — hop 1 vẫn là 192.168.10.1, chỉ khác là bây giờ địa chỉ đó nằm trên MLS1.
🔍 Kiểm tra kết quả (cả hai phần)
| # | Kiểm tra | Lệnh / thao tác | Kết quả mong đợi |
|---|---|---|---|
| 1 | Gateway của từng VLAN | PC1 ping 192.168.10.1, PC2 ping 192.168.20.1, PC3 ping 192.168.30.1 |
✅ Thành công |
| 2 | Liên VLAN | PC1 ping 192.168.20.11 và ping 192.168.30.11 |
✅ Thành công |
| 3 | Đường đi | PC1 tracert 192.168.30.11 |
2 hop, hop 1 = 192.168.10.1 |
| 4 | Quản trị switch từ VLAN người dùng | PC2 ping 192.168.99.11 |
✅ Thành công |
| 5 | Bảng định tuyến | show ip route trên R1 / MLS1 |
4 mạng C (directly connected) |
📊 So sánh hai phương án
| Tiêu chí | Router-on-a-Stick | SVI trên switch Layer 3 |
|---|---|---|
| Thiết bị | Router + switch Layer 2 | Switch Layer 3 |
| Gateway nằm ở | Subinterface (G0/0.10 …) | Interface VLAN (Vlan10 …) |
| Lệnh "sống còn" | encapsulation dot1Q |
ip routing |
| Hiệu năng | Mọi lưu lượng liên VLAN dồn qua 1 link trunk → dễ nghẽn | Chuyển mạch bằng phần cứng bên trong switch → nhanh |
| Phù hợp | Chi nhánh nhỏ, ít lưu lượng liên VLAN | Lớp core/distribution của doanh nghiệp vừa và lớn |
| Điểm lỗi đơn | Router R1 và link trunk R1–SW1 | Switch MLS1 (giải quyết bằng 2 switch + FHRP ở Phần 3) |
🛠️ Lỗi thường gặp & cách xử lý
| Triệu chứng | Nguyên nhân thường gặp | Cách kiểm tra & sửa |
|---|---|---|
| Mọi subinterface của R1 đều down | Quên no shutdown trên G0/0 |
show ip interface brief → G0/0 administratively down |
| Chỉ PC2 không ping được gateway | Sai VLAN ID trong encapsulation dot1Q, hoặc VLAN 20 không có trong allowed list |
show running-config interface g0/0.20; show interfaces trunk trên SW1 |
| PC ping được gateway nhưng không sang được VLAN khác (Phần B) | Quên ip routing |
show ip route → chỉ thấy Default gateway is not set |
MLS1 không nhận lệnh switchport mode trunk |
Chưa chọn chuẩn đóng gói | Gõ switchport trunk encapsulation dot1q trước |
| Interface Vlan30 trên MLS1 ở trạng thái up/down | MLS1 chưa tạo VLAN 30 trong VLAN database | show vlan brief trên MLS1 → tạo VLAN 30 |
| Không quản trị được SW1 (192.168.99.11) từ VLAN người dùng | SW1 khai báo sai ip default-gateway (hoặc thiếu hẳn) nên không gửi được gói trả lời sang mạng khác. Lưu ý: nếu thiếu hẳn gateway, đôi khi vẫn ping được nhờ proxy ARP của router/switch Layer 3 — đừng dựa vào điều đó. |
show running-config | include default-gateway trên SW1 |
🏆 Thử thách mở rộng
- Thêm phòng Nhân sự (VLAN 40, 192.168.40.0/24, gateway .1) vào cả hai phương án. Liệt kê đủ mọi chỗ phải sửa.
- Trên MLS1, biến cổng Gi0/2 thành routed port có IP 10.0.0.1/30 (chuẩn bị cho Phần 3 — kết nối lên router biên). Kiểm tra bằng
show ip interface brief. - Ở Phần A, chuyển Packet Tracer sang chế độ Simulation, lọc chỉ ICMP, rồi theo dõi gói ping từ PC1 tới PC3: gói đi qua sợi cáp R1–SW1 mấy lần? Gắn tag VLAN nào mỗi lần?
Thử thách 3: gói ping đi qua sợi cáp R1–SW1 2 lần — lần đi lên mang tag VLAN 10, lần đi xuống mang tag VLAN 30.👉 Gợi ý đáp án thử thách 1 và 2
! ===== Thử thách 1 — Phần A =====
SW1(config)# vlan 40
SW1(config-vlan)# name NhanSu
SW1(config-vlan)# exit
SW1(config)# interface gigabitEthernet 0/1
SW1(config-if)# switchport trunk allowed vlan add 40
R1(config)# interface gigabitEthernet 0/0.40
R1(config-subif)# encapsulation dot1Q 40
R1(config-subif)# ip address 192.168.40.1 255.255.255.0
! ===== Thử thách 1 — Phần B =====
! (SW1 làm giống Phần A, thêm trên MLS1:)
MLS1(config)# vlan 40
MLS1(config-vlan)# name NhanSu
MLS1(config-vlan)# exit
MLS1(config)# interface gigabitEthernet 0/1
MLS1(config-if)# switchport trunk allowed vlan add 40
MLS1(config-if)# interface vlan 40
MLS1(config-if)# ip address 192.168.40.1 255.255.255.0
MLS1(config-if)# no shutdown
! ===== Thử thách 2 =====
MLS1(config)# interface gigabitEthernet 0/2
MLS1(config-if)# no switchport
MLS1(config-if)# ip address 10.0.0.1 255.255.255.252
MLS1(config-if)# no shutdown
💬 Hỏi & Đáp nhanh
❓ Subinterface G0/0.999 (native) có bắt buộc không?
✅ Không bắt buộc để ping chạy được, vì native VLAN 999 không có máy nào. Nhưng nên khai báo để router và switch thống nhất về native VLAN trên trunk — đúng chuẩn cấu hình thực tế và tránh nhầm lẫn khi xử lý sự cố.
❓ Đã có interface vlan 30 trên switch Layer 3 rồi, còn cần tạo VLAN 30 không?
✅ Có. interface vlan 30 chỉ tạo interface Layer 3; VLAN 30 vẫn phải tồn tại trong VLAN database của switch, nếu không SVI sẽ ở trạng thái up/down (line protocol down).
❓ Router-on-a-Stick còn được dùng ngoài thực tế không?
✅ Có, ở chi nhánh nhỏ chỉ có một router và một switch, hoặc khi lưu lượng giữa các VLAN rất ít. Với mạng lớn, switch Layer 3 là lựa chọn chuẩn.
📝 Bài tập đánh giá
Câu 1: Trên switch Layer 3, PC ở VLAN 10 ping được gateway 192.168.10.1 nhưng không ping được PC ở VLAN 20. Các SVI đều up/up. Nguyên nhân khả dĩ nhất?
- A. Thiếu lệnh
ip routing - B. Interface Vlan10 chưa
no shutdown - C. PC ở VLAN 10 sai default gateway
- D. Trunk chưa cho phép VLAN 10
Câu 2: Khi cấu hình subinterface G0/0.20 trên router, lệnh nào phải được gõ trước lệnh ip address?
- A.
switchport mode trunk - B.
encapsulation dot1Q 20 - C.
ip routing - D.
no switchport
👉 Đáp án
- Câu 1: A — B, C, D đều làm PC không ping được cả gateway của chính mình. Ping được gateway mà không sang được VLAN khác là dấu hiệu điển hình của việc thiếu
ip routing. - Câu 2: B — Subinterface phải biết mình thuộc VLAN nào (
encapsulation dot1Q) thì mới được đặt IP.
📖 Tài liệu tham khảo
Lệnh, giá trị mặc định và thông báo hệ thống trong bài được đối chiếu với các tài liệu dưới đây. Output mẫu là dạng điển hình; địa chỉ MAC và một số chi tiết hiển thị có thể khác theo thiết bị và phiên bản Packet Tracer.
- Cisco – Understanding and Troubleshooting the Autostate Feature in Catalyst Switches
- Cisco Community – Thông báo lỗi khi đặt IP cho subinterface chưa có encapsulation
- Cisco Community – Khi tắt ip routing, show ip route chỉ hiện Default gateway
📚 Bài thực hành thuộc Khóa học CCNA Online 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 27: Inter-VLAN Routing — SVI trên Layer 3 switch | Mục lục khóa học CCNA | Bài 28: STP — vì sao cần, vòng lặp Layer 2 là gì |