Impossible de résoudre les noms de domaine .foo.local

15

Mon lieu de travail dispose d'un intranet avec des noms de domaine comme server01.foo.local, server02.foo.localetc. J'ai récemment démarré l'environnement en direct de Fedora 16 pour le tester et j'ai découvert que ces noms de domaine ne se résolvent pas.

Par exemple:

$ ping server01.foo.local
ping: hôte inconnu server01.foo.local
$ ping server01
PING server01.foo.local (XXXX) ...

Pourquoi va server01résoudre (et imprimer le nom comme server01.foo.local), mais server01.foo.localne le fera pas?

rhollencamp
la source
Eu exactement le même problème avec Ubuntu fonctionnant dans VMBox. La solution de @ adam820 a également fonctionné pour moi.
jimbo

Réponses:

22

Bien que je ne sois pas à 100% sur le raisonnement derrière pourquoi cela ne fonctionne pas comme prévu, il semble y avoir un très grand conflit avec le service mDNS (Avahi sous Linux, Bonjour / Zeroconf sous Mac / Windows) et les réseaux Windows qui utilisez .local comme nom de routage interne pour les domaines. Ce qui semble se produire, c'est que lorsque vous envoyez une requête ping à server01, il ignore l'utilisation de mDNS pour la résolution, puis ajoute le domaine de recherche (foo.local) à la demande, interrogeant avec succès le serveur DNS pour server01.foo.local. Cependant, lorsque vous utilisez mDNS (qui utilise .local comme extension de nom de machine par défaut), lorsque vous essayez d'envoyer une requête ping à server01.foo.local, il diffuse en fait sur mDNS à la recherche d'une machine avec le nom de "server01.foo"; quand il échoue, il ne passe pas directement au DNS pour une raison quelconque. Une solution de contournement importante à ce problème n'est pas de nommer votre domaine .local, ce qui va probablement à l'encontre de la formation de la plupart des administrateurs Windows pour la structuration de domaine. Cela étant dit:

Si mDNS est sans conséquence sur votre réseau (comme cela est courant dans l'entreprise, qui a tendance à exécuter des serveurs DNS dédiés par rapport au réseau domestique, où mDNS est parfois utilisé), la modification de l'ordre de recherche est la solution la plus simple.

Cela peut être trouvé dans /etc/nsswitch.conf. La section pour les hôtes listera la commande, qui pour Fedora 16 par défaut est:

hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname

Si vous changez cela en:

hosts:      files dns mdns4_minimal [NOTFOUND=return] myhostname

où vous avancez DNS dans l'ordre de recherche, cela devrait régler les choses pour l'instant. Sinon, si vous savez que vous n'aurez pas du tout besoin de mDNS, supprimez simplement la partie "mdns4_minimal [NOTFOUND = return]".

En regardant ce bogue sur le tracker de Red Hat , il semble que ce soit un problème de longue date sans solution apparente pour le moment. Cependant, si quelqu'un peut fournir plus d'informations sur les raisons de cette situation, ce serait apprécié.

adam820
la source
la suppression de la section mdns a résolu le problème
rhollencamp
Merci beaucoup d'avoir ajouté ceci. Avait exactement le même problème et le déplacement de l'entrée DNS l'a d'abord résolu. Dans mon cas, j'utilise le dernier Ubuntu, pas Fedora, mais la solution était exactement la même.
jimbo
ne vaut rien, je viens d'essayer cela et j'ai constaté que l'utilisation de VPN Cisco vpncne peut pas se connecter après avoir supprimé ces entrées sur la hosts: .*ligne /etc/nsswitch.conf. Le remplacement de ces paramètres a résolu le problème.
dobbs le
"quand il échoue, il ne passe pas directement au DNS pour une raison quelconque." . La raison est assez évidente. [NOTFOUND=return]signifie "si mDNS vous indique qu'un nom .local n'est pas trouvé, alors c'est autoritaire, et il n'y a aucun intérêt à demander plus loin". Déplacer DNS avant mDNS est une solution de contournement, mais il suffit déjà de rendre les échecs mDNS non autoritaires.
MSalters
Oui, c'est un commentaire valable; c'était il y a 7 ans et je ne le savais pas à l'époque. Mais oui, le supprimer, supprimer le package comme indiqué ci-dessous ou modifier la commande sont toutes des solutions / solutions valides.
adam820
2

Je suggère une autre solution au cas où vous utilisez le .localdomaine. Tout d'abord, ce n'est pas une bonne idée car cela semble une norme / convention à utiliser .localpour certaines découvertes dynamiques de multidiffusion.

Mais si vous insistez, il est également plus facile de simplement supprimer le nss-mdnspackage ou le libnss-mdnspackage en fonction de votre distribution et vous obtiendrez le problème résolu. Si vous n'avez pas besoin de cette fonctionnalité, alors pourquoi l'y attarder?

Voici yum info nss-mdns:

Summary     : glibc plugin for .local name resolution
URL         : http://0pointer.de/lennart/projects/nss-mdns/
License     : LGPLv2+
Description : nss-mdns is a plugin for the GNU Name Service Switch (NSS)
            : functionality of the GNU C Library (glibc) providing host name
            : resolution via Multicast DNS (aka Zeroconf, aka Apple Rendezvous,
            : aka Apple Bonjour), effectively allowing name resolution by common
            : Unix/Linux programs in the ad-hoc mDNS domain .local.
            : 
            : nss-mdns provides client functionality only, which means that you
            : have to run a mDNS responder daemon separately from nss-mdns if
            : you want to register the local host name via mDNS (e.g. Avahi).
akostadinov
la source
1

Certaines choses que vous pouvez vérifier:

  • y a-t-il un ordre dans /etc/host.conf, qui spécifie de vérifier / etc / hosts avant d'interroger DNS?

  • est server01 dans / etc / hosts?

  • y a-t-il un search foo.localfichier dans / etc / resolv, conf? Cela ajouterait foo.local à tout nom d'hôte que vous recherchez

Je me demande si votre serveur de noms est correctement configuré. Si vous avez encore nslookup, qu'est-ce que le retourner pour server01, server01.foo.localet l'IP-address (recherche inversée)?

ott--
la source
* host.conf n'a rien à propos de l'ordre * server01 n'est pas dans / etc / hosts * search foo.local est dans /etc/resolv.conf (NetworkManager l'a mis là), mais le supprimer n'aide pas. J'ai essayé de protéger /etc/resolv.conf en écriture après l'avoir édité afin que NM ne puisse pas écraser et redémarrer; pas de dés
rhollencamp
@rhollencamp: avez-vous nslookup sur votre système?
ott--