1,問題描述
S5700作為DHCPv6 Server給PC分配IPv6地址,接口Vlanif1000作為網關,PC配置通過DHCPv6方式獲取IPv6地址。S5700作為DHCPv6 Server配置如下:
#
dhcpv6 pool 1
address prefix 2001::/64
excluded-address 2001::1 to 2001::10
#
interface Vlanif1000
ipv6 enable
ipv6 address 2001::1/64
dhcpv6 server 1
#
問題描述:
PC可以從DHCPv6 Server獲取到IPv6地址2001::1b,在PC上ping網關2001::1,無法ping通。
2,告警信息
PC可以從DHCPv6 Server獲取到IPv6地址2001::1b,在PC上ping網關2001::1,無法ping通。
3,處理過程
故障分析:
1) 在PC上查看IPv6前綴表項,發現前綴表項為空
2) 在PC上查看IPv6路由表項,發現PC上沒有IPv6默認路由,路由表中有一條2001::1b/128的主機路由
3) 在PC上查看IPv6鄰居表項,發現PC上沒有2001::1的鄰居表項
故障定位為PC沒有獲取到地址前綴或默認路由,導致無法ping通網關。
處理過程:
在S5700 Vlanif 1000下打開RA報文發送開關,並且配置RA報文中有狀態自動配置地址的標誌位和有狀態自動配置其他信息的標誌位。命令行如下:
#
interface Vlanif1000
undo ipv6 nd ra halt
ipv6 nd autoconfig managed-address-flag
ipv6 nd autoconfig other-flag
#
配置完成後,PC上生成前綴表項和默認路由,PC可以ping通網關
1) 前綴表項
2) IPv6路由
3) 鄰居表項
4) PC可以ping通網關
3,根因
1) PC使用IPv6地址向外通信時,首先匹配前綴表項,看目的地址是否是on-link的,如果匹配成功,則查找鄰居表項;如果匹配失敗,說明目的地址是off-link的,則查找路由表來轉發報文,上述案例中,PC上沒有前綴表項和相應的路由表項,導致ping網關失敗;
2) PC使用ND協議的RA報文完成缺省路由發現和前綴表項生成,RA報文的源IPv6地址就是網關地址,並且該地址必須是link-local地址,通過RA報文中攜帶的地址前綴生成前綴表項;
3) PC通過DHCPv6方式獲取IPv6地址時,IPv6路由表中只能生成128位的主機路由。
4,解決方案
在網關上(S5700 Vlanif 1000接口下)打開RA報文發送開關,並且配置RA報文中有狀態自動配置地址的標誌位和有狀態自動配置其他信息的標誌位,PC通過RA報文生成前綴表項和默認路由,完成向外通信。
5,建議與總結
在ipv6環境下,PC設備ping不同網關,先排查PC沒有獲取到地址前綴或默認路由,再排查其網關設備配置。
閱讀更多 王海軍老師 的文章