Теперь, когда Apple изменила свою среду обзора на сеть только для IPv6, у меня возникли проблемы с моим приложением во время тестирования.
Приложение требует от пользователя ввода IP-адреса своего сервера / системы, порта (4401) и учетных данных, чтобы получить доступ к приложению. Следуя рекомендациям Apple, я настроил среду NAT64 для проверки совместимости моего приложения. Запуск iOS 9.3.2 на iphone 5s.
Моя рабочая среда имеет несколько внутренних сетей. Я подключил свой iMac к внутреннему серверу (10.10.50.XX) через Ethernet, который также имеет внешний IP-адрес, который я предоставляю Apple. Сеть 50 не работает за прокси-сервером, но есть некоторые сайты, которые фильтруются, но могут получить доступ, подтвердив. Затем я поделился своим Ethernet-соединением через WiFI.
Я подключил устройство, и у меня был доступ к Интернету с фильтрованием тех же страниц. Устройство получает адрес локальной ссылки 169.254.XX.XX. Из того, что я прочитал, мое устройство правильно подключается к сети только ipv6, так как iphone не показывает локальную ссылку только на адрес ipv6.
Если я правильно подключен к общей сети IPv6, у меня возникает проблема с подключением к моему серверу в сети 50 из моего приложения. Приложение не работает, когда я пытаюсь подключиться к сети 10.10.50.XX или к внешней (понятно, потому что мой imac находится во внутренней сети 50).
Тестирование приложения с использованием IPv4 с беспроводным маршрутизатором, подключенным к сети 50, проходит отлично. Я думаю, что проблема заключается в том, что адрес локальной ссылки не может видеть сеть 50 или что-то подобное.
Вот краткая справочная информация о том, как я подключаюсь к серверу. Пользователь вводит все учетные данные, а также IP-адрес и порт сервера, к которому он хочет подключиться. Приложение сохраняет это как текст (utf-8) и использует boost shared_ptr для отправки его классу соединения cpp, который проверяет учетные данные и предоставляет доступ пользователю. Этот класс соединения cpp обрабатывает соединение, синхронизацию, ведение журнала, запросы и ответы от сервера.
Можно ли как-то получить доступ к сети 50, используя опцию общего доступа к Интернету NAT64?
Если вы передаете IP-адрес прямо в вашу сетевую библиотеку, то нет. Когда ваше устройство находится только на стороне IP64 для NAT64, IPv4-адрес сервера бесполезен.
Вам почти наверняка нужно DNS-имя для сервера, к которому вы пытаетесь подключиться. NAT64 сначала использует DNS64 для создания IPv6-адресов для вашего приложения, когда сервер только для IPv4. Эти синтезированные адреса содержат IPv4-адрес (а) для сервера, предоставляя NAT64 информацию, необходимую для перевода из IPv6 в IPv4.
Обновив это, добавив: как предложено user102008 в ветке комментариев, прикрепленной к этому ответу, вы также можете передать строковый литерал IPv4 через getaddrinfo () (см. кодовое перечисление 10-1 на этой странице). Когда вы находитесь за NAT64, синтезированный адрес IPv6 должен быть среди результатов, возвращаемых этим вызовом. NAT64 преобразует этот адрес обратно в IPv4, чтобы достичь указанного вами хоста. В этом случае, если система знает правильный префикс для использования для NAT64, имя хоста не требуется.
Других решений пока нет …