一台媒体播放器从路由器的 IPv6 客户端列表中掉了下来,而它的串流仍在正常工作,于是人们自然认为出了故障。更多时候,是列表改变了对自身显示内容的看法。路由器的状态页面可能显示 DHCPv6 租约、无线关联、邻居表项或合并视图,而每一种回答的都是不同的问题。

页面显示的是一种记录,而不是完整清单

IPv6 主机通常同时持有多个地址:一个链路本地地址、一个或多个全局地址,以及会轮换的临时隐私地址。邻居发现会在本地链路上缓存最近使用过的邻居,其可达性状态会过期。设备完全可以保持可达,而缓存条目却在老化;设备也可以出现在租约表里,而流量走的是另一条路径。这些来源都不是设备曾经拥有过的所有地址的登记册。

所以第一个问题不是设备为何消失,而是页面取自哪个数据源。

三种主机视图回答三个不同的问题

在获授权的 Linux 主机上,分别读取这三个对象。地址列表显示配置了什么,路由表显示流量会去哪里,邻居表显示主机最近在链路上和谁通信过。把它们混为一谈会得出自信的错误答案,因为缺失的邻居条目看起来和缺失的地址一模一样。

ip -6 address show
ip -6 route show
ip -6 neighbour show

要在真正承载流量的网络命名空间里执行这些命令。在容器内部,接口列表可能与主机看到的不同,而 VPN 客户端可能位于其中任意一侧。

对比 VPN 切换前后的同样三份输出,并记录时间戳。如果地址和路由保持不变而邻居条目消失,那描述的是缓存老化,而不是配置变更。

把显示变化与连通性变化区分开

然后测试真正重要的东西:设备所需 IPv6 资源的可达性。如果服务通过已批准的路径在 IPv6 上应答,那么仪表盘上少了一行就是监控缺陷。如果服务不应答,显示变化可能是症状,下一步应检查路由与防火墙路径,而不是列表本身。路由式 VPN 通常不会把主机的 LAN 接口移到远端链路上,所以请把 LAN 地址和隧道地址放在思考中不同的列里。

一个接口可以承载多个地址,而状态页面可能只显示其中一个。这就是设备在重连后看起来换了地址、其实什么都没坏的原因。隐私扩展让这一点更明显,因为临时地址会按页面并不显示的时间表轮换。

先验证资源,再让那些表保持原样

如果主机状态和连通性看起来都正常,那么在动网络之前,先调查该列表的数据源和刷新行为。寻找租约时长、缓存超时,或者会隐藏页面未分类地址的显示过滤器。

不要为了恢复仪表盘上的一行而清空邻居表、关闭 IPv6 或重新分配地址。这些操作会打断正在工作的流量,通常只能把那一行维持到下一次缓存过期。ip -6 neigh flush dev br-lan 往好里说是诊断,往坏里说是你自己造成的故障。

记录页面使用的是哪一个来源,设备是否工作就不再取决于表格里的一行。

相关文章