/ / iOS NAT64 Problema del entorno IPv6: c ++, ios, object-c, redes, accesibilidad

iOS NAT64 Problema del entorno IPv6: c ++, ios, object-c, redes, accesibilidad

Ahora que Apple ha cambiado su entorno de revisión a una red IPv6, solo he tenido problemas con mi aplicación durante la prueba.

La aplicación requiere que el usuario ingrese susServidor / sistemas Dirección IP, puerto (4401) y credenciales para obtener acceso a la aplicación. Siguiendo las pautas proporcionadas por Apple, configuré un entorno NAT64 para probar la compatibilidad de mi aplicación. Ejecución de iOS 9.3.2 en un iPhone 5s.

Mi entorno de trabajo tiene varias redes internas. Conecté mi iMac al servidor interno (10.10.50.XX) a través de Ethernet, que también tiene una IP externa que es lo que le proporciono a Apple. La red 50 no se ejecuta detrás de un proxy, pero hay algunos sitios que se filtran, pero pueden acceder confirmándolos. Entonces compartí mi conexión Ethernet a través de WiFi.

Conecté el dispositivo y tenía acceso a internet.Con las mismas páginas siendo filtradas. Al dispositivo se le asigna una dirección de enlace local de 169.254.XX.XX. Por lo que he leído, mi dispositivo se está conectando correctamente a la red ipv6, ya que el iPhone no muestra la dirección ipv6 solo el enlace local.

Si estoy correctamente conectado al IPv6 compartidored, el problema que tengo es conectarme a mi servidor en la red 50 desde mi aplicación. La aplicación falla cuando intento conectarme a la red 10.10.50.XX o la externa (es comprensible porque mi imac está en la red interna 50).

Probando la aplicación usando IPv4 con unEl enrutador inalámbrico que está conectado a la red 50 funciona perfectamente. Creo que es un problema que la dirección de enlace local no puede ver la red 50 o algo así.

Aquí hay una breve información de fondo sobre cómo me conectoal servidor. El usuario ingresa todas las credenciales y la dirección IP y el puerto del servidor al que desean conectarse. La aplicación guarda esto como texto (utf-8) y utiliza boost shared_ptr para enviarlo a la clase de conexión cpp que valida las credenciales y proporciona acceso al usuario. Esta clase de conexión cpp maneja la conexión, sincronización, registro, solicitudes y respuesta del servidor.

¿Es posible obtener acceso de alguna manera a la red 50, usando la opción de intercambio de internet NAT64?

Respuestas

1 para la respuesta № 1

Si está pasando una dirección IP directamente a la red de su red, entonces no. Cuando su dispositivo está en el lado de NAT64 solo para IPv6, la dirección IPv4 del servidor es inútil.

Es casi seguro que necesita un nombre de DNS para elservidor al que intenta acceder. El NAT64 se basa primero en DNS64 para crear direcciones IPv6 para su aplicación cuando el servidor es solo IPv4. Estas direcciones sintetizadas contienen la (s) dirección (es) IPv4 del servidor, lo que le brinda al NAT64 la información que necesita. para traducir de IPv6 a IPv4.

Actualizando esto para agregar: según lo sugerido por user102008 en el hilo de comentarios adjunto a esta respuesta, también puede pasar el literal de cadena de IPv4 a través de getaddrinfo () (ver Código listado 10-1 en esta página). Cuando está detrás de un NAT64, una dirección IPv6 sintetizada debe estar entre los resultados devueltos por esa llamada. El NAT64 se traducirá de esta dirección a IPv4 para llegar al host que especificó. En este caso, si el sistema conoce el prefijo correcto para usar con el NAT64, no es necesario un nombre de host.