
Estou tentando entender como o Iphone decide qual endereço IP usar a partir de 2 endereços IP retornados na resposta do DNS neste cenário específico abaixo.
O cenário é assim:
1- Iphone envia consulta DNS para um Arecord como "bsf.mncxx.mccxx.pub.3gppnetwork.org" e obtém 2 endereços IP na resposta.
2- O Iphone envia solicitações GET para um dos endereços IP para se autenticar (não importa qual IP BSF selecionado nesta etapa)
3- BSF retorna 401 Não autorizado com desafio de autenticação
4- O Iphone calcula a resposta e envia na 2ª solicitação GET.
O problema começa aqui. O iPhone seleciona BSF aleatoriamente aqui. A expectativa é enviar este 2º GET (com resposta calculada) para o mesmo BSF na etapa 2. Todos os outros telefones (Samsung, Huawei, Sony etc) enviam para BSF na etapa 2. Mas parece que o Iphone seleciona aleatoriamente. Se outro BSF for selecionado, a autenticação falhará.
Como solução alternativa, configuramos o BSF para enviar Connection:keep-alive na resposta http 401, mas infelizmente isso não ajudou. O iPhone ainda o seleciona aleatoriamente.
Aqui em nossa configuração, os endereços IP do BSF estão em sub-redes próximas (BSF1 = 172.31.59.165, BSF2= 172.31.59.181)
É muito estranho que, em outra configuração (não exatamente os mesmos BSFs que os nossos, mas solicitações http e respostas semelhantes) o mesmo Iphone sempre selecione o mesmo BSF na etapa 2 e na etapa 4 (BSF1 = 10.216.138.78, BSF2 = 10.210.149.79). Se selecionar BSF1 na etapa 2, continue com BSF1 na etapa 4. O mesmo para BSF2.
É possível que o Iphone verifique as sub-redes durante a decisão? Qualquer outro palpite ou sugestão será muito apreciado.
Obrigado Branco