web-dev-qa-db-fra.com

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

Mon lieu de travail a un intranet avec des noms de domaine comme server01.foo.local, server02.foo.local, etc. J'ai récemment démarré l'environnement Fedora 16 Live pour le tester et découvrir que ces noms de domaine ne résolvent pas.

Par exemple:

$ ping server01.foo.local
[.____] Ping: Server hôte inconnu01.foo.Local
$ ping server01
Ping server01.foo.local (x.x.x.x) ...

Pourquoi va server01 résoudre (et imprimez le nom comme server01.foo.local), mais server01.foo.local Ne fera pas?

15
rhollencamp

Bien que je ne sois pas à 100% sur le raisonnement de la raison pour laquelle cela ne fonctionne pas comme prévu, il semble y avoir un très grand conflit avec le service MDNS (Avahi in Linux, Bonjour/Zeroconf dans Mac/Windows) et les réseaux Windows qui Utilisez .Local comme nom de routage interne pour les domaines. Ce qui semble arriver, c'est que lors de Pinging Server01, il saute à l'aide de MDNS pour la résolution, puis à ajouter le domaine de recherche (foo.local) à la demande, interrogeant avec succès le serveur DNS pour serveur01.foo.local. Cependant, lors de l'utilisation de MDNS (qui utilise .Local comme étant l'extension de nom de la machine par défaut), lorsque vous essayez de ping server01.foo.foo.local, il diffuse en réalité des MDN à la recherche d'une machine avec le nom de "server01.foo"; Quand il échoue, il ne passe pas sur DNS droit pour une raison quelconque. Une solution de contournement importante pour cela ne nomme pas votre domaine .Local, qui va probablement contre la formation de la plupart des administrateurs de Windows pour la structuration de domaine. Cela étant dit:

Si MDNS n'a aucune conséquence dans votre réseau (comme indiqué dans l'entreprise, qui tend à exécuter des serveurs DNS dédiés par rapport au réseau domestique, où les MDN sont parfois utilisés), puis changer la commande de recherche est la solution de contournement la plus facile.

Ceci peut être trouvé dans /etc/nsswitch.conf. La section des hôtes indiquera la commande, laquelle pour Fedora 16 défaut est:

hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname

Si vous changez cela à:

hosts:      files dns mdns4_minimal [NOTFOUND=return] myhostname

où vous déplacez DNS en avant dans la commande de recherche, cela devrait réparer les choses pour l'instant. Sinon, si vous savez que vous n'allez pas avoir besoin de MDN du tout, supprimez simplement la partie "MDNS4_MINIMAL [NOTLOUND = renvoie]".

En regardant ce bogue sur le tracker de Red Hat , il semble qu'il s'agisse d'un problème de longue date sans solution apparente pour le moment. Bien que si quelqu'un puisse fournir plus de perspicacité de la raison pour laquelle cela se produit ainsi, cela serait apprécié.

22
adam820

Je suggérerais une autre solution au cas où vous utiliseriez le .local Domaine. Tout d'abord, ce n'est pas une bonne idée car il semble qu'un standard/convention utiliser .local Pour une découverte dynamique de multidiffusion.

Mais si vous insistez, il est également plus facile de simplement supprimer nss-mdns paquet ou libnss-mdns Forfait 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'avoir traîner là-bas?

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).
2
akostadinov

Certaines choses que vous pouvez vérifier:

  • existe-t-il une commande dans /etc/host.conf, qui spécifie pour vérifier/etc/hosts avant de interroger le DNS?

  • server01 dans/etc/hosts est-il?

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

Je me demande si votre serveur de noms est configuré correctement. Si vous avez toujours nslookup, qu'est-ce qu'il retient pour server01, server01.foo.local et l'adresse IP (recherche inversée)?

1
ott--