两台电脑都连接到 Apple NAT64 热点时无法互相访​​问

两台电脑都连接到 Apple NAT64 热点时无法互相访​​问

我们在 App Store 上有一款 iOS 应用。2016 年 6 月 1 日之后要提交新版本,我们必须支持“仅 IPv6 网络”,根据此链接

我们提到Apple 的文档,将一台 Mac Mini 升级到 El Capitan 并将其设置为 NAT64 热点。这台 Mac Mini 使用以太网连接到互联网,并将其互联网连接共享给 Wi-Fi。

要使用我们的产品,用户必须安装我们的 iOS App 和 Mac App,并将它们放入同一个网络(就像在 IPv4 世界中 iPhone192.168.0.1和 Mac 都开机一样192.168.0.2)。这两个应用程序需要访问互联网,在这个环境中运行没有任何问题。

iPhone--(Wi-Fi)--\
                  --Mac mini--(ethernet)--Router----Internet
Mac-----(Wi-Fi)--/

问题是我们的 iOS 应用程序(在 iPhone 上运行,充当 TCP 客户端)无法在此 IPv6/NAT64 环境中访问我们的 Mac 应用程序(在本例中在 Mac Book Pro 上运行,充当 TCP 服务器)。

经过一些测试,我们认为问题出在 Apple NAT64 方面,因为在 iPhone 上我们甚至无法 ping 通 Mac(我们尝试使用另一台 MacBook Air 替换 iPhone,结果相同)。奇怪的是有时(通常发生在我们连续 ping Mac 一段时间后)它可以工作。一旦它工作了,它就一直有效。但如果 iPhone 和 Mac 只是连接到 NAT64,它似乎无法像往常一样工作。有人遇到过这种情况吗?这是 Apple NAT64 错误吗?还是只是配置问题?我该如何让它正常工作?

更多信息供您参考:

ifconfig在运行 NAT64 的 Mac mini 上:

en1: flags=8b63<UP,BROADCAST,SMART,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
    ether 6c:40:08:c0:a7:9e
    inet6 fe80::6e40:8ff:fec0:a79e%en1 prefixlen 64 scopeid 0x5
    inet 169.254.156.123 netmask 0xffff0000 broadcast 169.254.255.255
    nd6 options=1<PERFORMNUD>
    media: autoselect
    status: active
bridge100: flags=8a63<UP,BROADCAST,SMART,RUNNING,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
    options=3<RXCSUM,TXCSUM>
    ether ae:87:a3:21:fb:64
    inet6 2001:2:0:aab1::1 prefixlen 64
    inet6 fe80::ac87:a3ff:fe21:fb64%bridge100 prefixlen 64 scopeid 0xb
    inet6 2001:2::aab1:ac87:a3ff:fe21:fb64 prefixlen 64 autoconf
    inet6 2001:2::aab1:30d2:e0e9:360c:2bb3 prefixlen 64 deprecated autoconf temporary
    inet6 2001:2::aab1:2d34:d3ae:a433:b6c8 prefixlen 64 deprecated autoconf temporary
    inet6 2001:2::aab1:d0a1:a2e5:5a20:3105 prefixlen 64 autoconf temporary
    Configuration:
        id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
        maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
        root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
        ipfilter disabled flags 0x2
    member: en1 flags=3<LEARNING,DISCOVER>
        ifmaxaddr 0 port 5 priority 0 path cost 0
    nd6 options=1<PERFORMNUD>
    media: autoselect
    status: active

MacBook Pro 上的 ifconfig 充当 TCP 服务器:

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 78:31:c1:d5:cd:6a
    inet6 fe80::7a31:c1ff:fed5:cd6a%en0 prefixlen 64 scopeid 0x4
    inet6 2001:2::aab1:7a31:c1ff:fed5:cd6a prefixlen 64 autoconf
    inet6 2001:2::aab1:fc82:1afd:d541:33cb prefixlen 64 autoconf temporary
    inet 169.254.25.56 netmask 0xffff0000 broadcast 169.254.255.255
    nd6 options=1<PERFORMNUD>
    media: autoselect
    status: active

登录 iPhone 后会显示 IP 地址:

name = en0, addr = fe80::14f8:dd59:a2e9:8f65, scope_id = 3
name = en0, addr = 2001:2::aab1:10d8:247a:a7b9:3c8d, scope_id = 0
name = en0, addr = 2001:2::aab1:2560:58b7:2b6c:ce8b, scope_id = 0
name = en0, addr = 169.254.228.221

相关内容