le fichier d'hôtes semble ignoré

18

J'ai une boîte de bureau Ubuntu presque fraîche. Le système d'exploitation a été installé il y a deux semaines et mis à jour à partir des référentiels karmiques. La semaine dernière, je n'ai eu aucun problème avec DNS. Mais cette semaine, quelque chose avait changé. Je ne sais pas quoi et quand, et je ne sais pas si j'ai changé les configurations.

Alors maintenant, j'ai une situation vraiment bizarre. Selon les journaux, la résolution des noms devrait fonctionner normalement.

/ etc / hosts

127.0.0.1   localhost test
127.0.1.1   desktop

/etc/host.conf

order hosts,bind
multi on

/etc/resolv.conf

# Generated by NetworkManager
search search servers obtained via DHCP
nameserver 192.168.0.3

/etc/nsswitch.conf

passwd:         compat
group:          compat
shadow:         compat

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Mais si ce n'est pas le cas.

user @ test ~> test ping

PING localhost (127.0.0.1) 56(84) bytes of data.
[skip]

Le ping est ok.

user @ test ~> test hôte

test.mydomain.com has address xx.xxx.161.201

Je soupçonne que NetworkManager pourrait provoquer ce mauvais comportement, mais je ne sais pas par où commencer pour le vérifier. Des pensées, des suggestions?

z4y4ts
la source

Réponses:

20

Avec cette configuration, la plupart des applications fonctionneront avec plaisir à partir de votre entrée /etc/hosts.

Mais hostne regarde pas /etc/nsswitch.conf. C'est par conception, pas par accident, car il hosts'agit spécifiquement d' un programme de recherche DNS. /etc/hostsn'est pas DNS, c'est (principalement) ce que nous utilisions avant d' avoir DNS.

Il en va de même pour diget nslookup- ils sont également spécifiques au DNS.

Alnitak
la source
Donc, vous dites, l' hostutilitaire n'utilise pas /etc/hosts? Et il n'y a rien à corriger dans mon cas?
z4y4ts
yup, à peu près - rien à voir ici :)
Alnitak
Ce que je ne comprends pas, c'est que host> était <la commande "régulière" d'interrogation des noms, obéissant/etc/nsswitch.conf
mveroone
@Kwaio Je ne trouve aucune preuve dans les sources ISC qui l' hostait jamais fait
Alnitak
Eh bien, j'aurais peut-être utilisé des implémentations de distribution inhabituelles, alors, mon mauvais.
mveroone
15

La hostcommande (avec diget nslookup) fait partie des bindutilitaires DNS. En tant qu'utilitaire de résolution DNS, il effectue uniquement la résolution DNS.

Si vous souhaitez récupérer une entrée dans n'importe libnssquel magasin de données piloté, vous pouvez utiliser le getentprogramme. Pour obtenir une entrée d'hôtes, par exemple, utilisez-la comme ceci:

getent hosts google.com

Cela suit l'ordre de résolution défini sous hosts:dans l' /etc/nsswitch.confordre, qui inclut /etc/hostssi "fichiers" est lisé comme l'une des options.

tylerl
la source
Merci de me rappeler la getentcommande.
Emmanuel
2
Je crois que de nos jours il faut utiliser getent ahostsplutôt que getent hostsparce que les getent hostsusages gethostbyaddr()ou gethostbyname*()qui sont obsolètes. Si j'ai bien compris, getent hostsémule l'ancien fonctionnement des programmes UNIX C et getent ahostsémule le fonctionnement des programmes moderm.
Mikko Rantalainen
0

Pour moi, ce problème s'est produit en raison d'autorisations de fichier incorrectes. Seul root pouvait lire / etc / hosts. Le fichier doit être lisible dans le monde entier.


la source