web-dev-qa-db-fra.com

la recherche DNS locale ne fonctionne pas, malgré tout dans / etc / hosts

J'exécute Ubuntu (12.04) sur Virtual Box et souhaite que ma machine puisse rechercher son propre nom d'hôte, de la même manière que les autres machines virtuelles fonctionneront sur ce réseau (j'essaie de créer un cluster virtuel). Il n'y a pas de serveur DNS, les adresses IP sont attribuées par VirtualBox, et je les mappe dans/etc/hosts.

Le nom de la machine est node1 et j'ai/etc/hosts comme ça:

user@node1-VirtualBox:~$ cat /etc/hosts
127.0.0.1   localhost 
192.168.56.103  node1-VirtualBox.cs.ucl.ac.uk node1-VirtualBox
#10.0.2.15  node1-VirtualBox

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Donc, je suppose que

  1. Le nom d'hôte qualifié complet serait node1-VirtualBox.cs.ucl.ac.uk
  2. node1 et node1-VirtualBox.cs.ucl.ac.uk seront résolus en 192.168.56.103 (et vice versa)

De nom d'hôte, je reçois ceci:

$hostname ->  node1-VirtualBox   (OK)

$hostname --fqdn -> node1-VirtualBox.cs.ucl.ac.uk (OK)

$hostname --A -> node1.local node1.cs.ucl.ac.uk (OK i guess)

le nom d'hôte semble prometteur, mais lorsque j'essaie d'obtenir des adresses IP à l'aide de Host, cela ne fonctionne pas ...

user@node1-VirtualBox:~$ Host -v -t A node1-VirtualBox
Trying "node1-VirtualBox.cs.ucl.ac.uk"
Trying "node1-VirtualBox"
Host node1-VirtualBox not found: 3(NXDOMAIN)
Received 110 bytes from 127.0.0.1#53 in 1 ms

user@node1-VirtualBox:~$ Host -v -t A 192.168.56.103
Trying "103.56.168.192.in-addr.arpa"
Host 103.56.168.192.in-addr.arpa. not found: 3(NXDOMAIN)
Received 108 bytes from 127.0.0.1#53 in 2 ms

Une idée pourquoi ça ne marche pas? D'après ce que je lis et vois dans config, si le DNS est fait sur localhost, il devrait juste vérifier/etc/hosts ... et tout est là, non? Et SSH fonctionne, alors clairement ce fichier est correct?


Ci-dessous ma configuration:

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

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

resolv.conf:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search cs.ucl.ac.uk

ifconfig:
eth0      Link encap:Ethernet  HWaddr 08:00:27:da:a1:bc  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:feda:a1bc/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:169 errors:0 dropped:0 overruns:0 frame:0
          TX packets:176 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:123968 (123.9 KB)  TX bytes:21551 (21.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:99:65:51  
          inet addr:192.168.56.103  Bcast:192.168.255.255  Mask:255.255.0.0
          inet6 addr: fe80::a00:27ff:fe99:6551/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:268 errors:0 dropped:0 overruns:0 frame:0
          TX packets:252 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:78333 (78.3 KB)  TX bytes:71866 (71.8 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:12527 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12527 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:23857104 (23.8 MB)  TX bytes:23857104 (23.8 MB)

POST MORTEM:

Ok, il s’avère que la commande "Host" qui ne résout pas le problème est un peu compliqué par rapport à mon problème initial - cela ne pourrait pas fonctionner car il ne prend pas en compte/etc/hosts, comme expliqué dans les réponses ci-dessous.

Le problème original était l’absence de nom d’hôte canonique, c.-à-d. hostname --fqdn retournait localhost. Pour résoudre ce problème, je devais avoir ceci: 192.168.56.103 node1-VirtualBox.cs.ucl.ac.uk node1-VirtualBox en deuxième ligne de mon/etc/hosts.

Cependant, pour que cela fonctionne réellement, je devais redémarrer mes machines et réinstaller Cloudera sur mon cluster.

2
Kranach

Vous faites tout ce que vous voulez, comme mettre les entrées dans /etc/hosts, l'adresse du serveur dans /etc/resolv.conf, le /etc/nsswitch.conf a également une belle apparence.

Le problème que vous rencontrez est dû à la compréhension d'un terme très spécifique "serveur de noms". Toutes les commandes utilisées pour résoudre l'adresse IP en nom d'hôte et inversement utilisaient les adresses de serveur de noms de /etc/resolv.conf sauf mention explicite. Vous avez mis nameserver 127.0.0.1 qui n'est pas un serveur de noms valide car il n'est pas configuré en tant que serveur de noms. C’est là parce que dnsmasq agit comme un cache DNS (et un serveur DHCP), mais Host, Dig, nslookup prennent uniquement les données d’un serveur de noms valide et configuré.

Comme les commandes Host, nslookup, Dig utiliseront le "serveur de noms" mentionné dans /etc/resolv.conf (sauf indication contraire), la résolution du nom d'hôte ne fonctionnera pas dans votre cas. Bien que les programmes qui utilisent /etc/nsswitch.conf ou read /etc/hosts résolvent le nom d'hôte en adresses IP et inversement.

Si vous voulez résoudre les noms d’hôte à partir de /etc/hosts vous devez utiliser getent. Par exemple, pour résoudre "node1-VirtualBox", vous avez besoin de la commande suivante:

getent hosts node1-VirtualBox
1
heemayl

Les utilitaires de commande hôte/nslookup tentent de résoudre les requêtes DNS directement à l’aide de serveurs de noms. Ils n'utilisent pas/etc/hosts. Mais les applications font. Par exemple, ping devrait fonctionner. En d'autres termes, "ping node1-VirtualBox" doit être remplacé par 192.168.56.103 dans votre cas. Que veux-tu faire exactement?

0
Sindhura Bandi