У нас есть приложение для iOS в App Store. Чтобы представить новую версию после 1 июня 2016 г., мы должны поддерживать «сеть только для IPv6» по этой ссылке.

Мы обратились к документации Apple, обновили Mac Mini до El Capitan и установили для него точку доступа NAT64. Этот Mac Mini использует Ethernet для подключения к Интернету и совместно использует свое интернет-подключение к Wi-Fi.

Чтобы использовать наш продукт, пользователь должен установить и наше приложение для iOS, и приложение для Mac, и поместить их в одну сеть (что-то вроде iPhone на 192.168.0.1 и Mac на 192.168.0.2 в мире IPv4). Этим двум приложениям необходим доступ к Интернету, который без проблем работает в этой среде.

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

Проблема заключается в том, что наше приложение для iOS (работающее на iPhone, действующее как TCP-клиент) не может получить доступ к нашему приложению Mac (работающему на Mac Book Pro в данном случае, действующем как TCP-сервер) в этой среде IPv6/NAT64.

После некоторого тестирования мы считаем, что проблема на стороне Apple NAT64, потому что на iPhone мы не можем даже пинговать Mac (мы попытались использовать другой MacBook Air для замены iPhone, тот же результат). Странная вещь иногда (обычно случается после того, как мы продолжаем пинговать Mac некоторое время), это работает. И как только это работает, это всегда работает. Но если iPhone и Mac просто подключены к NAT64, он, кажется, не работает как всегда. Кто-нибудь сталкивался с такой ситуацией? Это ошибка Apple NAT64? или просто проблема с конфигурацией? Как я могу заставить это работать?

Больше информации для вашей информации:

ifconfig на Mac mini, на котором работает NAT64:

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 на MacBook Pro, который действует как 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

0