J'ai un comportement très étrange sur un appareil Android (Nexus 7) lorsque j'essaie d'accéder aux applications réseau locales. Au lieu d'obtenir l'IP réelle de la machine sur le LAN, l'appareil Android obtient l' IP publique , ce qui signifie que Chrome, Firefox ou tout autre navigateur affiche simplement la page Web du routeur.
J'ai un serveur DNS interne qui gère les réseaux locaux. Faire à ping
partir d'un PC fonctionne correctement:
$ 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
Sur un appareil HTC One (accessible avec adb shell
), cela fonctionne bien aussi:
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
Cependant, c'est ce que j'obtiens en faisant la même chose à ping
partir du 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
Au lieu de se résoudre à l'IP interne, il se résout à l'IP public.
La configuration réseau est, à l'exception de l'adresse IP de l'appareil, exactement la même sur les deux appareils: les paramètres IP sont définis sur Statique et les serveurs DNS sont les serveurs internes. Les deux appareils Android sont connectés via Wi-Fi (contrairement au PC). Une différence majeure, cependant, est que le Nexus 7 utilise Android 6.0.1, tandis que HTC One utilise Android 5.0.2.
Il n'y en a pas nm-tool
, dig
ou nslookup
sur Nexus 7. L'appareil n'est pas enraciné.
Le problème existait depuis que j'ai acheté l'appareil il y a quelques semaines, donc cela pourrait difficilement être le problème avec le cache DNS.
Que puis-je faire pour inspecter davantage ce problème?
la source
Réponses:
Nous avons récemment rencontré ce problème, et nous l'avons limité à SEULEMENT sur les appareils fonctionnant sous Android v5 et versions ultérieures. Android v4 et tous les autres systèmes d'exploitation n'ont aucun problème.
Avec cette friandise, nous avons déterminé qu'Android v5 et les versions plus récentes insistent sur l'utilisation d'IPv6 pour la résolution de noms DNS. (Étant donné que nous avons complètement désactivé IPv6 sur notre réseau, cela résout le problème.) Si Android v5 (+) ne peut pas obtenir de réponse IPv6 du DNS local, il tend la main à l'hôte de nom public de Google (8.8.8.8) . Par conséquent, pas de DNS interne, juste externe.
Nous avons contourné le problème en créant des enregistrements DNS sur nos serveurs DNS publics pour certains noms internes et adresses IP. Cela fait, le DNS public de Google pourrait résoudre ces noms internes avec des adresses IP internes, et les appareils pourraient alors atteindre nos hôtes internes.
Nous procédons à l'activation complète d'IPv6 sur nos serveurs DNS internes (contrôleurs de domaine) en tant que correctif permanent.
=========================================
MISE À JOUR - Eh bien, il s'avère que cela peut être un hareng rouge total ... ou non. Mon réseau domestique est Win2008R2, un seul domaine avec DHCP et DNS et sans liaison IPv6. Testé un appareil Android v5 à partir de là et sans problème. Le réseau Office concerné est Win2012 (non-R2), à domaine unique.
Le WAP de bureau actuel contourné avec le WAP Linksys autonome et le SSID séparé pour les tests, le problème persiste.
Différences entre les réseaux bureautiques et domestiques (auxquelles je peux penser): - Version Windows - 2012 vs 2008 R2 - modèle de routeur (Cisco vs Linksys) - Modèle WAP (Aruba Networks de marque Dell vs Linksys)
Procéder à tous les tests supplémentaires auxquels je peux penser pour réduire le problème. Toute suggestion ou contribution est extrêmement appréciée!
=========================================
LE PROBLÈME EST ALLÉ (?!)
Notre problème a semblé disparaître de lui-même suite à un changement de topologie de réseau que je ne pense pas être lié, mais voici les informations au cas où.
(D'énormes excuses pour cette longue histoire, mais c'est à ce moment-là que nos problèmes Android ont disparu, alors montrez-le si vous le pouvez. Je fournis probablement beaucoup trop de détails ici, mais parce que je ne vois pas de connexion directe, Je mets tout en place exactement comme c'est arrivé.)
Notre FAI est Comcast Business Class - un modem câble avec un bloc IP statique de cinq adresses (nombre étrange mais c'est ainsi que Comcast les vend). Le modem câble de Comcast est essentiellement une combinaison modem / pare-feu / routeur / commutateur, avec notre bloc IP statique programmé à distance.
Depuis plus de 10 ans et presque autant d'employeurs, j'ai toujours construit des réseaux de bureau de la même manière:
Configurer une IP LAN pour le modem / routeur ISP, qui traite le trafic NAT depuis Internet. Cela ne pourrait pas être plus simple, et c'est ainsi que mon réseau de bureaux actuel est configuré depuis quatre ans.
Récemment, notre service Internet de bureau a baissé. Habituellement, un redémarrage du modem le corrige, mais quand il ne l'a pas fait, nous avons appelé Comcast qui a envoyé un technicien, qui a remplacé le modem câble pour rétablir le service.
Quelques jours plus tard, la même chose s'est reproduite. Nous avons rappelé, et la technologie sur place (technologie différente qu'auparavant) a de nouveau tenté de remplacer le modem, cette fois par un modèle plus récent. Étonnamment, le modem câble plus récent ne prend pas en charge la modification de l'adresse de sous-réseau LAN. Le sous-réseau par défaut est 10.1.10.0/24, et il ne peut pas être modifié. (Seul le 4e octet était configurable.) Comme notre sous-réseau de bureau est 192.168.100.0/24, j'ai fait savoir au technicien que nous ne pouvions pas l'utiliser sans pouvoir changer le sous-réseau LAN. Il a compris, mais ne savait pas pourquoi le modem câble empêcherait le changement. Il a donc installé un modem de remplacement du même modèle que précédemment, que nous avons configuré à l'identique, et l'accès à Internet a été restauré.
Encore un jour ou deux passes, et le service redescend. Cette fois, lorsque j'ai appelé Comcast, la première technologie avec laquelle j'ai parlé a posé des questions détaillées et bien informées sur la configuration de notre réseau. Lorsque j'ai expliqué que le modem câble était configuré avec une IP LAN sur notre sous-réseau, il a semblé perplexe. Il a dit que la plupart des clients Comcast connectent un routeur NAT'ing entre le modem câble et le LAN plutôt que d'utiliser le NAT'ing du modem câble. En fait, il a dit qu'il n'était pas au courant que le modem câble supportait NAT'ing.
Comcast a envoyé une autre technologie avec un tout nouveau modem câble (dernier modèle qui ne prend pas en charge la modification du sous-réseau LAN). Il a effectué des tests approfondis sur le modem existant et a finalement déterminé qu'il ne faisait que passer le trafic IPv6 - pas IPv4. Il a également confirmé ce que la technologie du téléphone avait dit - qu'il est recommandé d'utiliser un routeur séparé pour NAT'ing, et de ne pas modifier le sous-réseau LAN sur le modem câble (ce que nous ne pouvons pas faire sur les nouveaux modems de toute façon).
Et maintenant, nous arrivons enfin au changement de réseau que nous avons fait. J'ai installé un simple routeur LinkSys entre le modem câble et notre routeur principal, configuré avec notre IP statique côté modem et une IP LAN à l'intérieur. Le service Internet a ensuite été rétabli et est resté stable depuis un certain temps maintenant.
Une fois le service Internet rétabli, j'ai pensé à l'étrangeté du problème IPv6 avec le modem câble, ce qui m'a rappelé le problème Android v5. J'ai ensuite testé nos appareils Android au bureau et j'ai été stupéfait de voir que le problème DNS ne se produisait plus.
L'ajout du routeur LinkSys pour NAT'ing est le SEUL CHANGEMENT DE RÉSEAU QUE NOUS AVONS FAIT. Coïncidence?? Peut-être, mais il semblait un peu particulier que les deux soient liés à IPv6.
Quoi qu'il en soit, désolé encore pour la longue histoire, mais notre problème Android a disparu. Faites-en ce que vous pouvez.
Dimarc67
la source
Je suis tombé sur ce message en essayant d'obtenir que mon appareil Android 6.0 utilise le serveur DNS configuré localement pour résoudre les noms d'hôte locaux. Une réponse ci-dessus indique qu'Android 5.0 et les versions ultérieures insistent sur l'utilisation de serveurs DNS IPv6. Ce fut l'indice qui m'a conduit à ma solution.
Mon routeur faisait la publicité des serveurs DNS IPv6 fournis par mon FAI en utilisant DHCP-PD. J'ai reconfiguré mon routeur pour arrêter la publicité des serveurs DNS IPv6 et maintenant l'appareil Android 6.0 résout le nom d'hôte local en utilisant le serveur DNS IPv4 fourni par DHCP (IPv4).
J'ai également un DNAT pour rediriger toutes les requêtes DNS (port TCP / UDP 53) vers mon serveur DNS local. Cela était en place avant de désactiver la publicité du routeur avec les serveurs DNS IPv6, donc je ne sais pas si Android 5.0+ retombe sur les serveurs DNS de Google (comme indiqué dans la réponse précédente) et je les ai pris avec ma règle DNAT ou si mon Android Le périphérique 6.0 vient d'utiliser le serveur DNS IPv4 attribué par DHCP. Dans les deux cas, la résolution du nom d'hôte local fonctionne maintenant.
la source
J'ai finalement pu résoudre ce problème en configurant moi-même un serveur DHCP sur le même réseau, ce qui configure le domaine de recherche correct à envoyer aux clients.
Une fois que j'avais un serveur DHCP, dans mon cas, isc-dhcpd avec la configuration dans dhcp.conf:
Android a pu résoudre les enregistrements A locaux définis sur mon serveur DNS.
la source