Computers can't access each other when both of them connect to Apple NAT64 hotspot

0

We have an iOS App on App Store. To submit a new version after Jun 1st, 2016, we have to support an “IPv6-only network” according to this link.

We referred to Apple's documentation, upgraded a Mac Mini to El Capitan and set it to a NAT64 hotspot. This Mac Mini uses Ethernet to connect to Internet, and shared its Internet connection to Wi-Fi.

To use our product, user has to install both our iOS App and Mac App, and put them into the same network (something like iPhone is on 192.168.0.1 and Mac is on 192.168.0.2 in IPv4 world). These two Apps need to access internet, which is working without any problem in this environment.

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

The problem is our iOS App (running on iPhone, acting as a TCP client) can’t access our Mac App (running on a Mac Book Pro in this case, acting as a TCP server) in this IPv6/NAT64 environment.

After some testing, we believe the problem is on the Apple NAT64 side, because on the iPhone we can’t even ping the Mac (we tried use another MacBook Air to replace the iPhone, same result). The weird thing is sometimes (normally happened after we keep pinging Mac for a while) it works. And once it works, it always works. But if the iPhone and Mac just connected to the NAT64, it seems not working as always. Did anyone ever face to situation like this? Is it a Apple NAT64 bug? or just a configuration issue? How can I make it work?

More information for your information:

ifconfig on Mac mini which has a NAT64 running on:

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

ifconfig on MacBook Pro which acts as TCP server:

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

Logs on iPhone that shows the IP addesses:

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
macos
ipv6
nat
ios
asked on Super User Jul 19, 2016 by Porter Liu • edited Jul 19, 2016 by JakeGould

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0