[CCNP] Troubleshooting IPv6 Stateless Autoconfiguration – Vì sao thiết bị IPv6 không tự nhận địa chỉ?“Đã cấu hình IPv6 đầy đủ nhưng thiết bị vẫn không tự nhận IP…”
Đây là một lỗi cực kỳ phổ biến khi học CCNA, CCNP hay thậm chí khi triển khai IPv6 thực tế trong doanh nghiệp.
Rất nhiều Network Engineer mới học thường nghĩ rằng:
- Chỉ cần gán IPv6 lên interface
- Kết nối dây mạng
- Host sẽ tự động nhận IPv6 address
Chỉ cần thiếu một lệnh nhỏ trên Router, toàn bộ cơ chế Router Advertisement sẽ ngừng hoạt động và host sẽ không thể tự sinh IPv6 address.
Hôm nay hãy cùng VnPro phân tích một case Troubleshooting IPv6 cực kỳ thực tế theo đúng tư duy của một CCIE Enterprise Infrastructure. Mô hình LAB
Chúng ta có hai Router:
- R1
- R2
2001::/64
Trong LAB:
- R1 được cấu hình Stateless Autoconfiguration
- R2 đóng vai trò Router gửi Router Advertisement (RA)
Đầu tiên kiểm tra interface:
R1#show ipv6 interface fa0/0
Kết quả:
FastEthernet0/0 is up, line protocol is up
IPv6 is enabled
link-local address is FE80::CE00:29FF:FE35:0
Điều này cho thấy:
- Interface đang hoạt động bình thường
- IPv6 đã được enable
- Link-Local Address đã được tạo
Trong IPv6, chỉ cần bật IPv6 lên interface thì Router sẽ tự động sinh Link-Local Address.
Ví dụ:
FE80::CE00:29FF:FE35:0
Đây là địa chỉ chỉ hoạt động trong local segment.
Neighbor Discovery Protocol sẽ dùng địa chỉ này để giao tiếp. Kiểm tra SLAAC trên R1
Tiếp theo kiểm tra Stateless Autoconfiguration:
R1#show ipv6 interface fa0/0 | include stateless
Kết quả:
Hosts use stateless autoconfig for addresses
Điều này cho thấy:
- Interface đã bật SLAAC
- R1 đang chờ Router Advertisement từ Router khác
R1 vẫn chưa có Global Unicast Address. Bắt đầu Troubleshooting bằng Debug
Một kỹ năng cực kỳ quan trọng của CCNP và CCIE là phải biết dùng debug đúng cách.
Trên R1:
R1#debug ipv6 nd
Neighbor Discovery Protocol là nền tảng của SLAAC nên debug NDP sẽ giúp chúng ta thấy toàn bộ quá trình hoạt động.
Sau đó reset interface:
R1(config)#interface fa0/0
R1(config-if)#shutdown
R1(config-if)#no shutdown Điều gì xảy ra?
Debug trên R1 hiển thị:
ICMPv6-ND: Sending RS on FastEthernet0/0
R1 liên tục gửi:
RS = Router Solicitation
Đây là message dùng để:
“Xin Router hãy gửi Router Advertisement cho tôi.”
Nhưng vấn đề là:
R1 không nhận được phản hồi.
Điều này cho thấy:
- R1 hoạt động bình thường
- Nhưng R2 không gửi RA
Trên R2:
R2#show ipv6 interface fa0/0
Kết quả:
FastEthernet0/0 is up, line protocol is up
IPv6 is enabled
Global unicast address(es):
2001::2/64
Thoạt nhìn mọi thứ đều có vẻ chính xác:
- Interface UP
- IPv6 enabled
- Có IPv6 global address
Nhiều người nghĩ rằng:
“Chỉ cần cấu hình IPv6 address là Router sẽ tự động gửi RA.”
Nhưng thực tế KHÔNG phải vậy.
Để Router IPv6 gửi Router Advertisement, Router phải bật:
ipv6 unicast-routing
Nếu thiếu lệnh này:
- Router sẽ KHÔNG forward IPv6 packet
- KHÔNG hoạt động như IPv6 router
- KHÔNG gửi Router Advertisement
Dùng lệnh:
R2#show running-config | include unicast-routing
Không có kết quả.
Điều này chứng tỏ:
ipv6 unicast-routing
chưa được bật. Khắc phục lỗi
Trên R2:
R2(config)#ipv6 unicast-routing
Ngay lập tức debug trên R1 thay đổi. R1 bắt đầu nhận Router Advertisement
Debug hiển thị:
ICMPv6-ND: Received RA from FE80::...
Điều này cực kỳ quan trọng.
R1 cuối cùng đã nhận được:
RA = Router Advertisement
Sau đó:
ICMPv6-ND: Autoconfiguring 2001::...
Host bắt đầu tự tạo IPv6 address. SLAAC hoạt động như thế nào?
Quá trình đầy đủ: Bước 1
Host gửi:
RS = Router Solicitation
để tìm Router IPv6. Bước 2
Router phản hồi:
RA = Router Advertisement
gửi:
- Prefix IPv6
- Default Gateway
- Thông tin Autoconfiguration
Host tự sinh IPv6 Address.
Ví dụ:
Prefix:
2001::/64
Host ID:
CE00:29FF:FE35:0
Kết quả:
2001::CE00:29FF:FE35:0
Đây chính là Stateless Autoconfiguration. Vì sao IPv6 dùng Link-Local Address?
Một điều rất thú vị trong IPv6 là:
Router Advertisement và Neighbor Discovery không dùng Global Address.
Chúng dùng:
FE80::/10
tức Link-Local Address.
Ví dụ debug:
Received RA from FE80::CE01:29FF:FE35:0
Điều này giúp:
- Hoạt động ổn định trong local segment
- Không phụ thuộc Global Address
- Đơn giản hóa Neighbor Discovery
Nếu Host IPv6 không tự nhận IP:
Đừng vội kiểm tra DHCPv6 trước.
Hãy kiểm tra:
- Interface có UP không?
- IPv6 enabled chưa?
- SLAAC enabled chưa?
- Có nhận RS/RA không?
- Router có bật:
hay chưa?
Trong rất nhiều case thực tế, lỗi chỉ nằm ở đúng một dòng lệnh này. Cấu hình hoàn chỉnh
Router R1
hostname R1
interface FastEthernet0/0
ipv6 address autoconfig Router R2
hostname R2
ipv6 unicast-routing
interface FastEthernet0/0
ipv6 address 2001::2/64
Kết luậnIPv6 Stateless Autoconfiguration là một trong những cơ chế cực kỳ quan trọng trong IPv6.
Muốn Troubleshoot IPv6 tốt, bạn phải hiểu thật sâu:
- Neighbor Discovery Protocol
- Router Solicitation
- Router Advertisement
- Link-Local Address
- SLAAC
- ipv6 unicast-routing
Mà là phải hiểu:
- Vì sao Host không nhận IPv6
- Packet nào đang được gửi
- Router phản hồi ra sao
- Thiếu bước nào trong quá trình autoconfiguration
Bạn đã từng gặp lỗi SLAAC nào “khó chịu” ngoài thực tế chưa?
Hãy chia sẻ cùng cộng đồng kỹ sư mạng VnPro nhé!