我在远程站点的封闭网络中有一台 Raspberry Pi。封闭网络中有一个 Teltonika RUT-951 路由器,它通过远程站点的 LAN 和 Internet 上的 VPN 连接回基地;并回退到 O2 上的 4G 连接。
直到最近,所有流量都通过远程站点的 LAN 传输,一切都很顺利。上周,远程站点的互联网断线了,RUT 故障转移到 4G 连接。一切又都正常了;直到远程站点的 LAN 恢复,RUT 故障恢复到 LAN。
现在,Pi 的连接失败。
经调查,来自 Pi 的所有连接都针对 ipv6 地址;而我们本地 ISP(virginmedia)不支持 ipv6。
似乎发生的情况是,在故障转移期间,RUT 和 Pi 从 O2 获取了 ipv6 地址,尽管重新启动,它们仍继续使用这些地址。我无法阻止 Pi 使用 ipv6 地址,也找不到在 Pi 上禁用 ipv6 支持的方法(它使用 NetworkManager,这很复杂)。
有什么建议么?
答案1
如果 Pi 仍在使用 IPv6 地址重启后,这意味着以下两件事之一:
有人静态配置了该地址(和网关)。使用 查看 NetworkManager 连接配置文件
nmcli con show <name>
。如果“ipv6.method”设置为“manual”,请将其改回“auto”。其直接网络上仍有一个路由器继续通告 IPv6 前缀。安装“ndisc6”并运行
rdisc6 eth0
(可能使用--multiple
)以查找路由器通告 - 特别是那些具有 1) 非零“路由器生命周期”和 2) 至少一个“前缀”部分的路由器通告。前者允许 Pi 选择该路由器作为默认网关,后者告诉它如何自动配置地址。记下发出 RA 的设备的 MAC 地址,并将其从网络中移除(或尝试重新启动)。如果事实证明它是 RUT,请确保它实际上并未连接到 O2 - 它应该已经停止播发前缀和一旦连接丢失,就应该将其撤回(即,将其生命周期设为 0)。
作为临时解决方法,使用ip addr
和ip route
删除全局 IPv6 地址和默认网关(::/0 路由)。如果它们继续出现,请参阅 #2。
你能通过 可以轻松禁用 IPv6 nmcli con modify
,但这只能将问题掩盖起来:即使您假装 IPv6 不存在,您仍然可以将 IPv6 访问权限公布到网络的其余部分。