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?
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
User contributions licensed under CC BY-SA 3.0