Tenho um comportamento muito estranho em um dispositivo Android (Nexus 7) ao tentar acessar aplicativos de rede local. Em vez de obter o IP real da máquina na LAN, o dispositivo Android obtém o IP público , o que significa que o Chrome, Firefox ou qualquer outro navegador simplesmente mostra a página da web do roteador.
Eu tenho um servidor DNS interno que lida com as redes locais. Fazer a ping
partir de um PC funciona corretamente:
$ ping s.pelicandd.com
PING pelicandd.com (192.168.1.15) 56(84) bytes of data.
64 bytes from front.pelicandd.com (192.168.1.15): icmp_seq=1 ttl=64 time=0.524 ms
64 bytes from front.pelicandd.com (192.168.1.15): icmp_seq=2 ttl=64 time=0.578 ms
^C
Num dispositivo HTC One (acedido com adb shell
), também funciona bem:
shell@m7:/ $ ping s.pelicandd.com
PING pelicandd.com (192.168.1.15) 56(84) bytes of data.
64 bytes from front.pelicandd.com (192.168.1.15): icmp_seq=1 ttl=64 time=2.56 ms
64 bytes from front.pelicandd.com (192.168.1.15): icmp_seq=2 ttl=64 time=27.8 ms
^C
No entanto, é isso que recebo ao fazer o mesmo ping
no Nexus 7:
shell@flo:/ $ ping s.pelicandd.com
PING pelicandd.com (90.78.26.42) 56(84) bytes of data.
64 bytes from LFbn-1-2441-42.w90-78.abo.wanadoo.fr (90.78.26.42): icmp_seq=1 ttl=64 time=2.56 ms
64 bytes from LFbn-1-2441-42.w90-78.abo.wanadoo.fr (90.78.26.42): icmp_seq=2 ttl=64 time=8.63 ms
^C
Em vez de resolver para o IP interno, ele resolve para o público.
A configuração de rede é - exceto o endereço IP do dispositivo - exatamente a mesma nos dois dispositivos: as configurações de IP são definidas como estáticas e os servidores DNS são os internos. Ambos os dispositivos Android estão conectados através de Wi-Fi (ao contrário do PC). Uma grande diferença, no entanto, é que o Nexus 7 está usando o Android 6.0.1, enquanto o HTC One usa o Android 5.0.2.
Não existe nm-tool
, dig
ou nslookup
no Nexus 7. O dispositivo não está enraizada.
O problema existia desde que eu comprei o dispositivo há algumas semanas, por isso dificilmente poderia ser o problema com o cache DNS.
O que posso fazer para inspecionar ainda mais esse problema?
fonte
Respostas:
Recentemente, encontramos esse problema e o reduzimos a APENAS em dispositivos com Android v5 e mais recente. O Android v4 e todos os outros sistemas operacionais não têm problema.
Com esse boato, determinamos que o Android v5 e mais recente insiste em usar o IPv6 para a resolução de nomes DNS. (Como desativamos completamente o IPv6 em nossa rede, isso está de acordo com o problema.) Se o Android v5 (+) não conseguir obter uma resposta IPv6 do DNS local, ele entrará em contato com o host de nome público do Google (8.8.8.8) . Portanto, nenhum DNS interno, apenas externo.
Resolvemos o problema criando registros DNS em nossos servidores DNS voltados ao público para selecionar nomes e IPs internos. Com isso feito, o DNS público do Google poderia resolver esses nomes internos com IPs internos, e os dispositivos poderiam alcançar nossos hosts internos.
Estamos prosseguindo com a ativação completa do IPv6 em nossos servidores DNS internos (controladores de domínio) como uma correção permanente.
=========================================
ATUALIZAÇÃO - Bem, isso pode ser um arenque vermelho total ... ou não. Minha rede doméstica é o Win2008R2, domínio único com DHCP e DNS e sem ligação IPv6. Testou um dispositivo Android v5 a partir daí e não teve problema. A rede do escritório com problema é o Win2012 (não R2), de domínio único.
Ignorada WAPs do escritório atual com Linksys WAP independente e SSID separado para teste, o problema persiste.
Diferenças entre redes domésticas e de escritório (em que eu consigo pensar): - Versão Windows - 2012 vs. 2008 R2 - modelo de roteador (Cisco vs. Linksys) - modelo WAP (Aruba Networks da marca Dell versus Linksys)
Prosseguir com qualquer outro teste que eu puder pensar para restringir o problema. Todas as sugestões ou sugestões são extremamente apreciadas!
=========================================
PROBLEMA ESQUECIDO (?!)
Nosso problema parecia desaparecer por conta própria após uma alteração na topologia de rede que eu não acreditaria estar relacionada, mas aqui estão as informações.
(Lamentamos muito por essa longa e prolongada história, mas foi quando nossos problemas com o Android desapareceram, então resolva isso, se puder. Provavelmente estou fornecendo MUITO detalhes aqui, mas como não consigo ver uma conexão direta, Estou explicando tudo exatamente como aconteceu.)
Nosso ISP é Comcast Business Class - um modem a cabo com um bloco de IP estático de cinco endereços (número estranho, mas é assim que a Comcast os vende). O modem a cabo da Comcast é essencialmente uma combinação de modem / firewall / roteador / switch, com nosso bloco de IP estático remotamente programado nele.
Por mais de 10 anos e quase o mesmo número de empregadores, eu sempre construí redes de escritório da mesma maneira:
configure um IP da LAN para o modem / roteador ISP, que é o tráfego do NAT da Internet. Não poderia ser mais simples, e é assim que minha rede atual de escritórios está configurada há quatro anos.
Recentemente, nosso serviço de Internet do escritório caiu. Normalmente, uma reinicialização do modem o corrige, mas quando não ligamos para a Comcast, que enviou um técnico, que substituiu o modem a cabo para restaurar o serviço.
Alguns dias depois, a mesma coisa aconteceu novamente. Ligamos novamente e a tecnologia local (tecnologia diferente da anterior) tentou substituir o modem novamente, desta vez por um modelo mais recente. Surpreendentemente, o modem a cabo mais recente não suportava a alteração do endereço de sub-rede da LAN. A sub-rede padrão é 10.1.10.0/24 e não pode ser alterada. (Somente o quarto octeto era configurável.) Como nossa sub-rede do escritório é 192.168.100.0/24, informei a técnica de que não poderíamos usá-lo sem poder alterar a sub-rede da LAN. Ele entendeu, mas não tinha informações sobre por que o modem a cabo impediria a mudança. Então, ele instalou um modem de substituição do mesmo modelo que antes, que configuramos de forma idêntica, e o acesso à Internet foi restaurado.
Mais um dia ou dois passes e o serviço cai novamente. Dessa vez, quando liguei para a Comcast, a tecnologia inicial com a qual falei fazia perguntas detalhadas e com conhecimento sobre nossa configuração de rede. Quando expliquei que o modem a cabo estava configurado com um IP da LAN em nossa sub-rede, ele parecia intrigado com isso. Ele disse que a maioria dos clientes da Comcast conecta um roteador NAT'ing entre o modem a cabo e a LAN, em vez de usar o NAT'ing do modem a cabo. Na verdade, ele disse que não sabia que o modem a cabo suportava o NAT.
A Comcast enviou outra tecnologia com um novo modem a cabo (modelo mais recente que não suporta a alteração da sub-rede da LAN). Ele fez testes extensivos no modem existente e finalmente determinou que estava apenas passando tráfego IPv6 - sem IPv4. Ele também confirmou o que o técnico do telefone havia dito - que é recomendável usar um roteador separado para o NAT e não alterar a sub-rede da LAN no modem a cabo (o que não podemos fazer nos modems mais novos agora).
E agora finalmente chegamos à mudança de rede que fizemos. Instalei um roteador LinkSys simples entre o modem a cabo e o roteador principal, configurado com nosso IP estático no lado do modem e um IP da LAN por dentro. O serviço de Internet foi restaurado e permaneceu estável por algum tempo.
Depois que o serviço de Internet foi restaurado, pensei na estranheza do problema do IPv6 com o modem a cabo, que por sua vez me lembrou o problema do Android v5. Depois, testei nossos dispositivos Android no escritório e fiquei surpreso ao ver que o problema do DNS não estava mais ocorrendo.
Adicionar o roteador LinkSys para o NAT é a ÚNICA MUDANÇA DE REDE QUE FAZEMOS. Coincidência?? Possivelmente, mas parecia um pouco peculiar que ambos estivessem relacionados ao IPv6.
De qualquer forma, desculpe novamente pela longa história, mas nosso problema com o Android se foi. Faça o que puder com isso.
Dimarc67
fonte
Me deparei com esta postagem enquanto tentava fazer com que meu dispositivo Android 6.0 usasse o servidor DNS configurado localmente para resolver nomes de host locais. Uma resposta acima indicou que o Android 5.0 e mais recente insiste em usar servidores DNS IPv6. Essa foi a pista que me levou à minha solução.
Meu roteador estava anunciando os servidores DNS IPv6 fornecidos pelo meu ISP usando o DHCP-PD. Reconfigurei meu roteador para parar de anunciar os servidores DNS IPv6 e agora o dispositivo Android 6.0 está resolvendo o nome do host local usando o servidor DNS IPv4 fornecido pelo DHCP (IPv4).
Também tenho um DNAT para redirecionar todas as consultas DNS (porta TCP / UDP 53) para o meu servidor DNS local. Isso estava em vigor antes de desabilitar o anúncio do roteador com servidores DNS IPv6, então não sei se o Android 5.0 ou superior recai nos servidores DNS do Google (conforme reivindicado na resposta anterior) e os peguei com minha regra DNAT ou se meu Android O dispositivo 6.0 acabou de usar o servidor DNS IPv4 atribuído ao DHCP. De qualquer forma, a resolução do nome do host local está funcionando agora.
fonte
Finalmente consegui resolver isso configurando eu mesmo um servidor DHCP na mesma rede, que configura o domínio de pesquisa correto para enviar aos clientes.
Depois que eu tive um servidor dhcp, no meu caso, isc-dhcpd com a configuração em dhcp.conf:
O Android conseguiu resolver os registros A locais definidos no meu servidor DNS.
fonte