SR8804-X G5/4/10.1203接口作为ipv6网关给无线用户提供ipv6网络服务。无线终端通过无状态方式自动获取ipv6地址。用户接入方式采用的是ipv6 ipoe。
在测试过程中,发现终端一开始能正常获取到ipv6地址,并能正常访问ipv6网络。但是几分钟之后,终端就无法访问ipv6网络了。如果终端重新禁用、启用用网卡,并再次连接,则又可以正常访问,然后过几分钟后又无法访问,如此反复。但如果删除路由器接口下的ipoe用户在线检测命令后,故障就消失,终端连上ipv6网络后可一直正常使用,不会出现中断。ipoe 相关配置如下:
interface GigabitEthernet5/4/10.1203
ospfv3 1 area 0.0.0.67
vlan-type dot1q vid 1203 second-dot1q 100 to 799
vlan-termination broadcast ra
ipv6 dhcp select server
ipv6 address 2001:DA8:1010:1000::1/64
ipv6 address auto link-local
ipv6 nd autoconfig other-flag
undo ipv6 nd ra halt
ipv6 nd ra interval 20 10
ipv6 nd router-preference high
ipv6 subscriber l2-connected enable
ipv6 subscriber initiator dhcp enable
ipv6 subscriber initiator ndrs enable
ipv6 subscriber initiator unclassified-ip enable
ipv6 subscriber user-detect nd retry 5 interval 60
ipv6 subscriber dhcp domain test
ipv6 subscriber unclassified-ip domain test
ipv6 subscriber ndrs domain test
从问题现象上来看,ipv6然断网,跟接口下配置了ipv6 ipoe用户在线检测有关。所以,目前最大的怀疑点在于,ipv6 ipoe用户在线检测失败,路由器删除了ipv6 ipoe表项和邻居ipv6 邻居表项,导致用户上网中断。那么,我们就以此为线索进行排查。
查看断网时的终端ipv6、mac地址信息以及路由器上ipv6 ipoe表项、ipv6邻居表信息首先,在断网时查看终端PC上的ipv6地址和mac地址信息。
这里可以看到,终端上除了link local地址外,还获取到2个ipv6地址。尾数分别是905a和f112。其中f112是临时地址,PC终端会优先选择用这个地址作为源来访问外网。终端上的ipv6地址信息和正常上网时没有区别。
再查看路由器上ipv6 ipoe和ipv6邻居表项。发现表项正常。
Ipv6 ipoe表项如下:
Basic:
Username : 2001:DA8:1010:1000:D042:10EE:284A:F112
Domain : test
VPN instance : N/A
IP address : 2001:DA8:1010:1000:D042:10EE:284A:F112
MAC address : a0a8-cdf3-cef6
Service-VLAN/Customer-VLAN : 1203/443
Access interface : GE5/4/10.1203
User ID : 0x40000174
VPI/VCI(for ATM) : 0/0
DHCP lease : N/A
DHCP remain lease : N/A
Login time : May 9 14:53:18 2017
Online time(hh:mm:ss) : 01:27:42
Service node : Slot 5 CPU 0
Type : Unclassified-ip
State : Online
Ipv6 邻居表如下:
2001:DA8:1010:1000:D042:10EE:284A:F112 a0a8-cdf3-cef6 N/A GE5/4/10.1203 REACH R -
事实上并没有发生我们最初所猜测的,用户在线检测失败导致ipv6相关表项删除的情况。那么,会不会是报文在路由器或中间设备上丢掉了呢?或是电脑根本就没有往外发包了呢?为了验证这一点,最直接的方式就是抓包。
在终端PC上抓包通过在终端PC上抓包,发现PC根本就没有往外发包。我们可以在PC上查看一下ipv6邻居表。Windows cmd命令netsh interface ipv6 show neighbors
邻居表正常,能学到网关的mac地址。停滞表示当前没有流量,ping一下之后就会变成激活状态,但还是PC ping不通外网。
再看一下路由表,Windows cmd命令 route print。
这里就发现问题了。原本路由表中存在的一条::/0的默认路由,现在不存在了。
分析PC上默认路由消失的原因PC之所以会生成默认路由,是因为网关路由器发送了router preference 为high的RA报文,用来标识自己是网关。而这个RA报文中有一个router lifetime的字段来标识有效期(默认为60s),如果router lifetime到期,并且PC没有收到新的RA报文,则PC会认为这个网关失效,就会删掉指向网关的默认路由。所以,目前怀疑PC上默认路由消失,与收不到RA报文有关,这一点需要进一步抓包确认。
再次分析PC上的抓包通过抓包发现,PC收到的最后一个RA报文和第一个没有ping通的icmp echo request报文之间,时间间隔正好相差60s,也就是RA报文 router lifetime超时的时间。这也证明之前我猜测是正确的。那么路由器为何突然不再发送RA报文了呢?不发送RA报文的原因又与用户在线检测存在什么样的联系呢?
6. 分析路由器不发送RA报文的原因
通过抓包可以看到,路由器一直在向2001:da8:1010:1000:a2a8:cdff:fef3:cef6(mac地址为PC的mac)发送NS报文进行在线检测,而这个地址并不存在于PC上,所以检测失败。在检测失败后,路由器就停止向PC发送RA报文了。
由于路由器上配置了ipv6 nd rs的上线方式ipv6 subscriber initiator ndrs enable,所以路由器会根据PC的mac地址生成一个EUI-64规范的ipv6 地址的ipoe表项,而这台PC对应的EUI-64规范的ipv6地址就是2001:da8:1010:1000:a2a8:cdff:fef3:cef6。但是Windows终端生成的ipv6地址并没有遵循EUI-64,所以路由器对这个EUI-64地址的在线检测失败,然后就不再向这台PC发送RA报文,RA的life time到期后PC就删除了默认路由。
另外,由于路由器上还配置了未知单播触发ipv6 ipoe,PC使用的非EUI-64的地址2001:DA8:1010:1000:D042:10EE:284A:F112也能正常上线使用,这就是为什么刚PC刚连接上时可以上网的原因。
删除ipv6 subscriber initiator ndrs enable,仅采用未知单播上线方式。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作