IPv6 Static Route: Vì Sao Chỉ Cần Sai Một Tham Số Là Toàn Bộ Lưu Lượng Có Thể Bị "Mất Tích"?
Khi học IPv6, nhiều kỹ sư mạng thường nghĩ rằng cấu hình static route cũng tương tự IPv4. Tuy nhiên, có một khác biệt rất quan trọng: IPv6 không sử dụng ARP mà sử dụng Neighbor Discovery Protocol (NDP). Chính sự khác biệt này khiến một số lỗi cấu hình static route trong IPv6 trở nên khó phát hiện hơn và có thể làm cho việc chuyển tiếp gói tin thất bại hoàn toàn. Cấu hình IPv6 Static Route
Để tạo một static route trong IPv6, sử dụng lệnh:
ipv6 route ipv6_prefix/prefix_length {ipv6_address | interface} [administrative_distance]
Ví dụ trên router R1:
R1(config)# ipv6 route 2001:DB8:0:3::/64 gigabitEthernet1/0 FE80::2 8
Ý nghĩa:
Khác với Global Unicast Address, địa chỉ Link-Local (FE80::/10) chỉ có ý nghĩa trong phạm vi một liên kết (link).
Ví dụ:
R1 ----- R2
FE80::2
R1 ----- R4
FE80::2
Hoàn toàn có thể tồn tại nhiều thiết bị sử dụng cùng địa chỉ FE80::2 trên các liên kết khác nhau.
Do đó khi cấu hình static route:
ipv6 route 2001:DB8:0:3::/64 FE80::2
Router sẽ không biết phải tìm FE80::2 trên interface nào.
Vì vậy Cisco bắt buộc phải khai báo thêm interface:
ipv6 route 2001:DB8:0:3::/64 GigabitEthernet1/0 FE80::2
Nếu next-hop là Global Unicast Address thì không cần chỉ định interface.
Kiểm tra Static Route
Sử dụng lệnh:
show ipv6 route static
Kết quả:
R1# show ipv6 route static
S 2001:DB8:0:3::/64 [8/0]
via FE80::2, GigabitEthernet1/0
Giải thích:
Metric của static route mặc định bằng 0 vì static route không có cơ chế tính toán chi phí đường đi như OSPF hay EIGRP.
IPv6 Không Có ARP
Trong IPv4:
IP Address -> ARP -> MAC Address
Trong IPv6:
IPv6 Address -> NDP -> MAC Address
IPv6 sử dụng Neighbor Discovery Protocol (NDP) dựa trên multicast để tìm địa chỉ MAC của thiết bị lân cận.
Khi R1 cần gửi gói tin đến mạng:
2001:DB8:0:3::/64
Bảng định tuyến cho biết next-hop là:
FE80::2
Lúc này R1 sẽ tra cứu bảng Neighbor Table.
R1# show ipv6 neighbors
Ví dụ:
IPv6 Address Age Link-layer Addr State Interface
FE80::2 0 ca08.0568.0008 REACH Gi1/0
Router phải tìm thấy đồng thời:
Nếu không tìm thấy, router sẽ gửi Neighbor Solicitation (NS) để hỏi MAC tương ứng.
Lỗi Thường Gặp: Directly Attached Static Route
Một lỗi cấu hình phổ biến là:
ipv6 route 2001:DB8:0:3::/64 GigabitEthernet1/0
Đây được gọi là:
Directly Attached Static Route
Lệnh này nói với R1 rằng:
Trong thực tế điều này không đúng vì mạng đó nằm phía sau R2.
Điều Gì Sẽ Xảy Ra?
Giả sử R1 nhận được gói tin có đích:
2001:DB8:0:3::3
R1 nhìn vào routing table và tin rằng địa chỉ này nằm trực tiếp trên Gig1/0.
Do đó nó sẽ không tìm MAC của R2.
Thay vào đó nó sẽ cố gắng tìm MAC của chính địa chỉ đích:
2001:DB8:0:3::3
Router gửi Neighbor Solicitation tới địa chỉ multicast:
FF02::1:FF00:3
để hỏi:
Nhưng trên mạng Gig1/0 không có thiết bị nào sở hữu địa chỉ đó.
Kết quả:
Góc Nhìn Thực Chiến
Khi troubleshooting IPv6 static route, hãy kiểm tra theo thứ tự:
TÓM TẮT
IPv6 static route nhìn bề ngoài khá giống IPv4 nhưng cơ chế hoạt động bên dưới hoàn toàn khác do IPv6 sử dụng NDP thay cho ARP. Khi dùng địa chỉ Link-Local làm next-hop, luôn phải chỉ rõ interface thoát. Một lỗi cấu hình nhỏ như sử dụng Directly Attached Static Route trên Ethernet có thể khiến router gửi Neighbor Solicitation đến một địa chỉ không tồn tại, dẫn đến thất bại trong quá trình đóng gói Layer 2 và làm mất hoàn toàn khả năng chuyển tiếp lưu lượng. Đây là một trong những lỗi IPv6 rất thường gặp khi triển khai hoặc troubleshooting trong môi trường thực tế CCNA, CCNP và CCIE.
Khi học IPv6, nhiều kỹ sư mạng thường nghĩ rằng cấu hình static route cũng tương tự IPv4. Tuy nhiên, có một khác biệt rất quan trọng: IPv6 không sử dụng ARP mà sử dụng Neighbor Discovery Protocol (NDP). Chính sự khác biệt này khiến một số lỗi cấu hình static route trong IPv6 trở nên khó phát hiện hơn và có thể làm cho việc chuyển tiếp gói tin thất bại hoàn toàn. Cấu hình IPv6 Static Route
Để tạo một static route trong IPv6, sử dụng lệnh:
ipv6 route ipv6_prefix/prefix_length {ipv6_address | interface} [administrative_distance]
Ví dụ trên router R1:
R1(config)# ipv6 route 2001:DB8:0:3::/64 gigabitEthernet1/0 FE80::2 8
Ý nghĩa:
- Mạng đích: 2001:DB8:0:3::/64
- Next-hop: FE80::2 (địa chỉ Link-Local của R2)
- Interface thoát: GigabitEthernet1/0
- Administrative Distance (AD): 8
Khác với Global Unicast Address, địa chỉ Link-Local (FE80::/10) chỉ có ý nghĩa trong phạm vi một liên kết (link).
Ví dụ:
R1 ----- R2
FE80::2
R1 ----- R4
FE80::2
Hoàn toàn có thể tồn tại nhiều thiết bị sử dụng cùng địa chỉ FE80::2 trên các liên kết khác nhau.
Do đó khi cấu hình static route:
ipv6 route 2001:DB8:0:3::/64 FE80::2
Router sẽ không biết phải tìm FE80::2 trên interface nào.
Vì vậy Cisco bắt buộc phải khai báo thêm interface:
ipv6 route 2001:DB8:0:3::/64 GigabitEthernet1/0 FE80::2
Nếu next-hop là Global Unicast Address thì không cần chỉ định interface.
Kiểm tra Static Route
Sử dụng lệnh:
show ipv6 route static
Kết quả:
R1# show ipv6 route static
S 2001:DB8:0:3::/64 [8/0]
via FE80::2, GigabitEthernet1/0
Giải thích:
- S = Static Route
- 8 = Administrative Distance
- 0 = Metric
Metric của static route mặc định bằng 0 vì static route không có cơ chế tính toán chi phí đường đi như OSPF hay EIGRP.
IPv6 Không Có ARP
Trong IPv4:
IP Address -> ARP -> MAC Address
Trong IPv6:
IPv6 Address -> NDP -> MAC Address
IPv6 sử dụng Neighbor Discovery Protocol (NDP) dựa trên multicast để tìm địa chỉ MAC của thiết bị lân cận.
Khi R1 cần gửi gói tin đến mạng:
2001:DB8:0:3::/64
Bảng định tuyến cho biết next-hop là:
FE80::2
Lúc này R1 sẽ tra cứu bảng Neighbor Table.
R1# show ipv6 neighbors
Ví dụ:
IPv6 Address Age Link-layer Addr State Interface
FE80::2 0 ca08.0568.0008 REACH Gi1/0
Router phải tìm thấy đồng thời:
- Đúng địa chỉ Link-Local (FE80::2)
- Đúng interface (Gi1/0)
Nếu không tìm thấy, router sẽ gửi Neighbor Solicitation (NS) để hỏi MAC tương ứng.
Lỗi Thường Gặp: Directly Attached Static Route
Một lỗi cấu hình phổ biến là:
ipv6 route 2001:DB8:0:3::/64 GigabitEthernet1/0
Đây được gọi là:
Directly Attached Static Route
Lệnh này nói với R1 rằng:
"Mạng 2001:DB8:0:3::/64 nằm trực tiếp trên cổng Gig1/0."
Trong thực tế điều này không đúng vì mạng đó nằm phía sau R2.
Điều Gì Sẽ Xảy Ra?
Giả sử R1 nhận được gói tin có đích:
2001:DB8:0:3::3
R1 nhìn vào routing table và tin rằng địa chỉ này nằm trực tiếp trên Gig1/0.
Do đó nó sẽ không tìm MAC của R2.
Thay vào đó nó sẽ cố gắng tìm MAC của chính địa chỉ đích:
2001:DB8:0:3::3
Router gửi Neighbor Solicitation tới địa chỉ multicast:
FF02::1:FF00:3
để hỏi:
"Ai đang sở hữu địa chỉ 2001:DB8:0:3::3?"
Nhưng trên mạng Gig1/0 không có thiết bị nào sở hữu địa chỉ đó.
Kết quả:
- Không có Neighbor Advertisement trả lời.
- Không học được MAC Address.
- NDP thất bại.
- Layer 2 Encapsulation thất bại.
- Gói tin bị loại bỏ.
Góc Nhìn Thực Chiến
Khi troubleshooting IPv6 static route, hãy kiểm tra theo thứ tự:
- Static route có khai báo đúng next-hop không?
- Nếu dùng Link-Local Address, đã khai báo interface chưa?
- Bảng Neighbor Table có entry tương ứng không?
- Có vô tình cấu hình Directly Attached Static Route trên Ethernet hay không?
- Neighbor Solicitation và Neighbor Advertisement có hoạt động bình thường không?
TÓM TẮT
IPv6 static route nhìn bề ngoài khá giống IPv4 nhưng cơ chế hoạt động bên dưới hoàn toàn khác do IPv6 sử dụng NDP thay cho ARP. Khi dùng địa chỉ Link-Local làm next-hop, luôn phải chỉ rõ interface thoát. Một lỗi cấu hình nhỏ như sử dụng Directly Attached Static Route trên Ethernet có thể khiến router gửi Neighbor Solicitation đến một địa chỉ không tồn tại, dẫn đến thất bại trong quá trình đóng gói Layer 2 và làm mất hoàn toàn khả năng chuyển tiếp lưu lượng. Đây là một trong những lỗi IPv6 rất thường gặp khi triển khai hoặc troubleshooting trong môi trường thực tế CCNA, CCNP và CCIE.