
Estoy tratando de entender cómo Iphone decide qué dirección IP usar a partir de 2 direcciones IP devueltas en la respuesta DNS en este escenario específico a continuación.
El escenario es así:
1- Iphone envía una consulta DNS para un Arecord como "bsf.mncxx.mccxx.pub.3gppnetwork.org" y obtiene 2 direcciones IP en la respuesta.
2- Iphone envía solicitudes GET a una de las direcciones IP para autenticarse (no importa qué IP BSF seleccionó en este paso)
3- BSF devuelve 401 No autorizado con desafío de autenticación
4- Iphone calcula la respuesta y la envía en la segunda solicitud GET.
El problema comienza aquí. Iphone selecciona BSF al azar aquí. La expectativa es enviar este segundo GET (con respuesta calculada) al mismo BSF en el paso 2. Todos los demás teléfonos (Samsung, Huawei, Sony, etc.) lo envían a BSF en el paso 2. Pero parece que Iphone simplemente selecciona al azar. Si se selecciona otro BSF, la autenticación falla.
Como solución alternativa, configuramos BSF para enviar Connection:keep-alive en la respuesta http 401, pero desafortunadamente no ayudó. Iphone todavía lo selecciona al azar.
Aquí, en nuestra configuración, las direcciones IP de BSF están en subredes cercanas (BSF1 = 172.31.59.165, BSF2 = 172.31.59.181)
Es muy extraño que, en otra configuración (no exactamente los mismos BSF que el nuestro, pero la solicitud http y las respuestas son similares) el mismo Iphone siempre selecciona el mismo BSF en el paso 2 y el paso 4 (BSF1=10.216.138.78, BSF2= 10.210.149.79). Si selecciona BSF1 en el paso 2, continúa con BSF1 en el paso 4. Lo mismo para BSF2.
¿Es posible que Iphone verifique las subredes durante la decisión? Cualquier otra suposición o sugerencia será muy apreciada.
gracias blanco