Я пытаюсь понять, как Iphone решает, какой IP-адрес использовать из 2 IP-адресов, возвращенных в ответе DNS, в этом конкретном сценарии ниже.
Сценарий такой:
1- Iphone отправляет DNS-запрос для Arecord типа «bsf.mncxx.mccxx.pub.3gppnetwork.org» и получает в ответ 2 IP-адреса.
2- Iphone отправляет запросы GET на один из IP-адресов для аутентификации (не важно, какой IP-адрес BSF выбран на этом этапе)
3- BSF возвращает 401 Unauthorized с запросом аутентификации
4- Iphone вычисляет ответ и отправляет его во втором запросе GET.
Проблема начинается здесь. Iphone случайным образом выбирает здесь BSF. Ожидается, что этот второй GET (с рассчитанным ответом) будет отправлен в тот же BSF на шаге 2. Все остальные телефоны (Samsung, Huawei, Sony и т. д.) отправляют его в BSF на шаге 2. Но кажется, что Iphone просто случайным образом выбирает.
Если выбран другой BSF, аутентификация завершается ошибкой.
В качестве обходного пути мы настроили BSF для отправки Connection:keep-alive в ответе http 401, но, к сожалению, это не помогло. Iphone по-прежнему выбирает его случайным образом.
В нашей настройке IP-адреса BSF находятся в близких подсетях (BSF1 = 172.31.59.165, BSF2 = 172.31.59.181).
Очень странно, что в другой настройке (не совсем такие же BSF, как у нас, но http-запрос и ответы похожи) один и тот же Iphone всегда выбирает один и тот же BSF на шаге 2 и шаге 4 (BSF1 = 10.216.138.78, BSF2 = 10.210.149.79). Если он выбирает BSF1 на шаге 2, он продолжает с BSF1 на шаге 4. То же самое для BSF2.
Возможно ли, что Iphone проверяет подсети во время принятия решения?
Любые другие предположения или предложения будут высоко оценены.
Спасибо
Белый