a pesquisa de DNS local não está funcionando, apesar de tudo estar em / etc / hosts

2

Estou executando o Ubuntu (12.04) no Virtual Box e quero que minha máquina consiga pesquisar seu próprio nome de host, da mesma forma que outras VMs farão nessa rede (estou tentando construir um cluster virtual). Não há servidor DNS, o IP é atribuído pelo VirtualBox, e eu apenas mapeio-os em / etc / hosts.

O nome da máquina é node1 e eu tenho / etc / hosts assim:

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

Então, eu diria que

  1. O nome completo do host seria node1-VirtualBox.cs.ucl.ac.uk
  2. node1 e node1-VirtualBox.cs.ucl.ac.uk resolveriam para 192.168.56.103 (e vice-versa)

Do nome do host, estou recebendo isto:

$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)

hostname parece promissor, mas quando tento obter endereços IP usando host, não funciona ...

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

Alguma idéia de por que isso não está funcionando? Pelo que eu li e vejo na configuração, se o DNS é feito no localhost, ele deve apenas verificar o / etc / hosts ... e tudo está lá, certo? E o SSH está funcionando, então claramente este arquivo está correto?

Abaixo da minha configuração:

# /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, acontece que o comando "host" não resolveu um pouco do meu problema original - não funcionou porque ele não procura em / etc / hosts, como explicado nas respostas abaixo. / p>

O problema original era a falta de nome de host canônico, ou seja, hostname --fqdn estava retornando localhost. Para consertar eu tive que ter isso: 192.168.56.103 node1-VirtualBox.cs.ucl.ac.uk node1-VirtualBox como segunda linha no meu / etc / hosts.

No entanto, para que funcione, tive que reiniciar minhas máquinas e reinstalar o Cloudera no meu cluster.

    
por Kranach 05.02.2015 / 22:32

2 respostas

1

Você está fazendo tudo certo, como colocar as entradas em /etc/hosts , o endereço do servidor em /etc/resolv.conf , e o /etc/nsswitch.conf também é bom.

O problema que você está tendo é devido à compreensão de um termo muito específico "nameserver". Todos os comandos usados para resolver o endereço IP para o nome do host e vice-versa usaram os endereços do servidor de nomes de /etc/resolv.conf , a menos que mencionado explicitamente. Você colocou nameserver 127.0.0.1 , que não é um servidor de nomes válido, porque não está configurado como um servidor de nomes. Ele está lá por causa de dnsmasq , que atua como um cacher de DNS (e servidor DHCP), mas host , dig , nslookup obtém dados de apenas um servidor de nomes válido e configurado.

Como os comandos host , nslookup , dig usarão o "servidor de nomes" mencionado em /etc/resolv.conf (a menos que especificado), a resolução do nome do host não funcionará no seu caso. Embora os programas que usam /etc/nsswitch.conf ou leiam /etc/hosts resolvam o nome do host para endereços IP e vice-versa.

Se você quiser resolver nomes de host de /etc/hosts , precisará usar getent . Por exemplo, para resolver "node1-VirtualBox", você precisa do seguinte comando:

getent hosts node1-VirtualBox
    
por heemayl 06.02.2015 / 17:48
0

Os utilitários de comando host / nslookup tentam resolver as consultas dns diretamente usando os servidores de nomes. Eles não usam / etc / hosts. Mas as aplicações fazem. Por exemplo, o ping deve funcionar. Ou seja, "ping node1-VirtualBox" deve resolver para 192.168.56.103 no seu caso. O que você quer fazer exatamente?

    
por Sindhura Bandi 06.02.2015 / 17:09