21 votes

Pourquoi Android refuse-t-il de résoudre les enregistrements DNS pointant vers des adresses IP internes ?

J'ai un comportement très étrange sur un appareil Android (Nexus 7) lorsque j'essaie d'accéder aux applications du réseau local. Au lieu d'obtenir l'IP réelle de la machine sur le réseau local, l'appareil Android obtient l'adresse suivante public IP, 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. En faisant ping depuis 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, voici ce que j'obtiens en faisant la même chose ping à partir de la 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 publique.

La configuration du 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 réglés sur Statique et les serveurs DNS sont les serveurs internes. Les deux appareils Android sont connectés par Wi-Fi (contrairement au PC). Une différence majeure, cependant, est que la Nexus 7 utilise Android 6.0.1, tandis que le HTC One utilise Android 5.0.2.

Il n'y a pas nm-tool , dig o 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 il pourrait difficilement s'agir d'un problème de cache DNS.

Que puis-je faire pour vérifier ce problème ?

7voto

Dimarc67 Points 66

Nous avons récemment rencontré ce problème, et nous avons déterminé qu'il ne se produisait QUE sur les appareils fonctionnant sous Android v5 et plus récents. Android v4 et tous les autres systèmes d'exploitation n'ont pas de problème.

Avec cette information, nous avons déterminé qu'Android v5 et plus récent insiste sur l'utilisation d'IPv6 pour la résolution de nom DNS. (Comme nous avons complètement désactivé IPv6 sur notre réseau, cela correspond au problème). Si Android v5(+) ne peut pas obtenir une réponse IPv6 du DNS local, il se tourne alors vers l'hôte de nom public de Google (8.8.8.8). Donc, pas de DNS interne, seulement externe.

Nous avons contourné ce problème en créant des enregistrements DNS sur nos serveurs DNS publics pour certains noms et adresses IP internes. Ainsi, le DNS public de Google pouvait résoudre ces noms internes avec des IP internes, et les appareils pouvaient alors atteindre nos hôtes internes.

Nous procédons à l'activation complète d'IPv6 sur nos serveurs DNS internes (contrôleurs de domaine) comme solution permanente.

\=========================================

UPDATE-- Eh bien, il s'avère que cela peut être un hareng rouge total ... ou pas. Mon réseau domestique est Win2008R2, un seul domaine avec DHCP et DNS et aucune liaison IPv6. J'ai testé un appareil Android v5 à partir de ce réseau et je n'ai eu AUCUN PROBLÈME. Le réseau du bureau qui pose problème est Win2012 (non-R2), à domaine unique.

J'ai contourné les WAPs du bureau actuel avec un WAP Linksys autonome et un SSID séparé pour le test, le problème persiste.

Différences entre les réseaux de bureau et les réseaux domestiques (pour autant que je sache) : - version de Windows - 2012 vs. 2008 R2 - modèle de routeur (Cisco vs. Linksys) - Modèle de WAP (Aruba Networks de marque Dell vs. Linksys)

Je vais procéder à tous les tests supplémentaires auxquels je pense pour réduire le problème. Toute suggestion ou contribution est extrêmement appréciée !

\=========================================

PROBLÈME DISPARU ( ?!)

Notre problème a semblé disparaître de lui-même à la suite d'un changement de topologie du réseau qui, à mon avis, n'est pas lié, mais voici l'information au cas où.

(D'énormes excuses pour cette histoire longue et fastidieuse, mais c'est à ce moment-là que les problèmes d'Android ont disparu, alors ne perdez pas de temps si vous le pouvez. Je donne probablement beaucoup trop de détails ici, mais comme je ne vois pas de lien direct, je raconte tout exactement comme cela s'est passé).

Notre fournisseur d'accès est Comcast Business Class - un modem câble avec un bloc d'adresses IP statiques de cinq adresses (chiffre bizarre 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 les réseaux de bureaux de la même manière :
Configurez une adresse IP de réseau local pour le modem/routeur du FAI, qui NAT le trafic de l'Internet. Rien de plus simple, et c'est ainsi que le réseau de mon bureau actuel est configuré depuis quatre ans.

Récemment, le service Internet de notre bureau est tombé en panne. Habituellement, un redémarrage du modem corrige le problème, mais comme ce n'était pas le cas, 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 appelé à nouveau, et le technicien sur place (différent du précédent) a tenté de remplacer le modem à nouveau, cette fois par un modèle plus récent. Étonnamment, le modem câble plus récent ne permettait pas de modifier l'adresse de sous-réseau du réseau local. Le sous-réseau par défaut est 10.1.10.0/24, et il ne peut pas être modifié. (Seul le 4ème octet est configurable.) Comme le sous-réseau de notre 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 du réseau local. Il a compris, mais n'avait aucune idée de la raison pour laquelle le modem câble empêchait 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é rétabli.

Un jour ou deux passent, et le service tombe à nouveau en panne. Cette fois, lorsque j'ai appelé Comcast, le premier technicien avec qui j'ai parlé m'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 de réseau local sur notre sous-réseau, il a semblé perplexe. Il a dit que la plupart des clients de 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 ne savait pas que le modem câble supportait le NAT'ing.

Comcast a envoyé un autre technicien avec un modem câble tout neuf (le dernier modèle qui ne permet pas de changer le sous-réseau du réseau local). Il a effectué des tests approfondis sur le modem existant et a finalement déterminé qu'il ne transmettait que du trafic IPv6, et non IPv4. Il a également confirmé ce que le technicien du téléphone avait dit, à savoir qu'il est recommandé d'utiliser un routeur séparé pour le NAT et de ne pas modifier le sous-réseau du réseau local sur le modem câble (ce que nous ne pouvons pas faire sur les nouveaux modems de toute façon).

Et nous en arrivons enfin au changement de réseau que nous avons effectué. J'ai installé un simple routeur LinkSys entre le modem câble et notre routeur principal, configuré avec notre IP statique du côté du modem, et une IP de réseau local à l'intérieur. Le service Internet a alors é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 alors testé nos appareils Android au bureau, et j'ai été stupéfait de voir que le problème de DNS ne se produisait plus.

L'ajout du routeur LinkSys pour le NAT'ing est le SEUL changement de réseau que nous avons fait. Coïncidence ? Peut-être, mais il semblait juste un peu étrange que les deux soient liés à IPv6.

Bref, désolé encore pour la longue histoire, mais notre problème Android est résolu. Faites ce que vous pouvez avec ça.

Dimarc67

3voto

Absent Recall Points 21

Je suis tombé sur ce post en essayant de faire en sorte que mon appareil Android 6.0 utilise le serveur DNS configuré localement pour résoudre les noms d'hôtes locaux. Une réponse ci-dessus indiquait qu'Android 5.0 et plus récent insiste sur l'utilisation de serveurs DNS IPv6. C'est l'indice qui m'a conduit à ma solution.

Mon routeur annonçait les serveurs DNS IPv6 fournis par mon FAI en utilisant DHCP-PD. J'ai reconfiguré mon routeur pour arrêter d'annoncer les 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).

Je dispose également d'un DNAT pour rediriger toutes les requêtes DNS (port TCP/UDP 53) vers mon serveur DNS local. Ceci était en place avant de désactiver l'annonce du routeur avec les serveurs DNS IPv6, donc je ne sais pas si Android 5.0+ se rabat sur les serveurs DNS de Google (comme indiqué dans la réponse précédente) et si je les ai rattrapés avec ma règle DNAT ou si mon appareil Android 6.0 a simplement utilisé le serveur DNS IPv4 attribué par DHCP. Quoi qu'il en soit, la résolution du nom d'hôte local fonctionne maintenant.

3voto

Erikw Points 121

J'ai finalement pu résoudre ce problème en installant moi-même un serveur DHCP sur le même réseau, 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 :

option domain-name "myrealdomain.tld";

Android a pu résoudre les enregistrements A locaux définis dans mon serveur DNS.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X