为什么我的本地 fe80::IPv6 网络如此不可靠?

为什么我的本地 fe80::IPv6 网络如此不可靠?

我通过 AndroidAP 运行家庭网络,由 Android 7.1.1 提供支持,它支持原生 IPv6,并且似乎从上游提供商获得了 /64 分配。

我遇到的问题是,在本地机器之间,fe80::地址似乎经常无法访问(并且我不想使用公共可路由的地址,因为前缀会随着接入点每次重新启动而发生变化)。

例如,在 Windows 7 和 OS X 10.9 之间打开 ssh 连接,最初会导致网络错误,只有在第二次尝试时才成功。随后,现有连接同样经常中断。与公共互联网的连接从未出现这些问题(感谢上帝没有 NAT)。

我尝试通过运行进行故障排除ndp -an在 OS X 上陷入循环,似乎地址过期策略可能是罪魁祸首(但据我所知,所有设置都是默认设置)。

% ndp -an | head -1 ; sh -c "while (true); do ndp -an | fgrep 8c:7 | sed -E 's#(::518)[0-9a-f:]+#\1...#g;s#(8c:7)[0-9a-f:]+#\1...#g'; sleep 1; done"
Neighbor    Linklayer Address  Netif Expire    St Flgs Prbs
fe80::518...%en0    8c:7...    en0 6s        R
fe80::518...%en0    8c:7...    en0 5s        R
fe80::518...%en0    8c:7...    en0 4s        R
fe80::518...%en0    8c:7...    en0 3s        R
fe80::518...%en0    8c:7...    en0 2s        R
fe80::518...%en0    8c:7...    en0 1s        R
fe80::518...%en0    8c:7...    en0 1d0h0m0s  S
fe80::518...%en0    8c:7...    en0 4s        D
fe80::518...%en0    8c:7...    en0 3s        D
fe80::518...%en0    8c:7...    en0 2s        D
fe80::518...%en0    8c:7...    en0 1s        D
fe80::518...%en0    8c:7...    en0 32s       R
fe80::518...%en0    8c:7...    en0 31s       R
fe80::518...%en0    8c:7...    en0 30s       R
...
fe80::518...%en0    8c:7...    en0 10s       R
fe80::518...%en0    8c:7...    en0 9s        R
fe80::518...%en0    8c:7...    en0 8s        R
fe80::518...%en0    8c:7...    en0 7s        R
fe80::518...%en0    8c:7...    en0 6s        R
fe80::518...%en0    8c:7...    en0 5s        R
fe80::518...%en0    8c:7...    en0 4s        R
fe80::518...%en0    8c:7...    en0 3s        R
fe80::518...%en0    8c:7...    en0 2s        R
fe80::518...%en0    8c:7...    en0 1s        R
fe80::518...%en0    8c:7...    en0 1d0h0m0s  S
fe80::518...%en0    8c:7...    en0 5s        D
fe80::518...%en0    8c:7...    en0 4s        D
fe80::518...%en0    8c:7...    en0 2s        D
fe80::518...%en0    8c:7...    en0 1s        D
fe80::518...%en0    8c:7...    en0 1s        P          1
fe80::518...%en0    8c:7...    en0 32s       R
fe80::518...%en0    8c:7...    en0 30s       R
...
fe80::518...%en0    8c:7...    en0 10s       R
fe80::518...%en0    8c:7...    en0 9s        R
fe80::518...%en0    8c:7...    en0 8s        R
fe80::518...%en0    8c:7...    en0 7s        R
fe80::518...%en0    8c:7...    en0 6s        R
fe80::518...%en0    8c:7...    en0 5s        R
fe80::518...%en0    8c:7...    en0 4s        R
fe80::518...%en0    8c:7...    en0 3s        R
fe80::518...%en0    8c:7...    en0 2s        R
fe80::518...%en0    8c:7...    en0 1s        R
fe80::518...%en0    8c:7...    en0 1d0h0m0s  S
fe80::518...%en0    8c:7...    en0 4s        D
fe80::518...%en0    8c:7...    en0 3s        D
fe80::518...%en0    8c:7...    en0 2s        D
fe80::518...%en0    8c:7...    en0 1s        D
fe80::518...%en0    8c:7...    en0 32s       R
^C

如上所示,地址缓存似乎在不到一分钟的时间内过期,从可访问状态变为过期、延迟和探测状态。而 AndroidAP 本身的 MAC 地址的大多数 IPv6 地址(总共约十几个(不知道为什么需要这么多))的过期时间似乎最长为 24 小时。

发生了什么事?如何修复我的 LAN 上的 IPv6 连接?

相关内容