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通过DHCP方式获取到IPv6地址但无法向外通信,王海军老师告诉你](http://p2.ttnews.xyz/loading.gif)
问题描述:
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前缀表项,发现前缀表项为空
![PC通过DHCP方式获取到IPv6地址但无法向外通信,王海军老师告诉你](http://p2.ttnews.xyz/loading.gif)
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没有获取到地址前缀或默认路由,再排查其网关设备配置。
閱讀更多 王海軍老師 的文章