Поиск локального DNS не работает, несмотря на то, что все находится в /etc/hosts

Я использую Ubuntu (12.04) в Virtual Box и хочу, чтобы моя машина могла искать свое собственное имя хоста так же, как другие виртуальные машины будут делать в этой сети (я пытаюсь создать виртуальный кластер). DNS-сервера нет, IP назначаются VirtualBox, и я просто сопоставляю их в /etc/hosts.

Имя машины - node1, и у меня есть / etc / hosts вот так:

[email protected]:~$ 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

Так что я бы предположил, что

  1. Полностью определенное имя хоста будет node1-VirtualBox.cs.ucl.ac.uk
  2. node1 и node1-VirtualBox.cs.ucl.ac.uk будут преобразованы в 192.168.56.103 (и наоборот)

От имени хоста я получаю это:

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

имя хоста выглядит многообещающе, но когда я пытаюсь получить IP-адреса, используя хост, это не работает...

[email protected]:~$ 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

[email protected]:~$ 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

Есть идеи, почему это не работает? Из того, что я читаю и вижу в конфиге, если DNS выполняется на localhost, он должен просто проверить /etc/hosts... и все там, верно? И SSH работает, так ясно, этот файл правильный?


Ниже моей конфигурации:

# /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)

ПОСТ МОРТЕМ:

Ладно, оказалось, что не разрешенная команда "host" была немного красной селедкой для моей первоначальной проблемы - она ​​не могла работать, потому что не просматривает / etc / hosts, как объяснено в ответах ниже.

Первоначальной проблемой было отсутствие канонического имени хоста, т.е. hostname --fqdn возвращался localhost. Чтобы это исправить, мне нужно было это: 192.168.56.103 node1-VirtualBox.cs.ucl.ac.uk node1-VirtualBox как вторая строка в моем /etc/hosts.

Однако для того, чтобы он действительно работал, мне пришлось перезагрузить мои машины и переустановить Cloudera на моем кластере.

2 ответа

Решение

Вы делаете все правильно, как положить записи в /etc/hostsадрес сервера в /etc/resolv.conf, /etc/nsswitch.conf тоже хорошо выглядит.

Проблема, с которой вы столкнулись, связана с пониманием очень специфического термина "сервер имен". Все команды, используемые для преобразования IP-адреса в имя хоста и наоборот, использовали адреса сервера имен из /etc/resolv.conf если не указано явно. Вы положили nameserver 127.0.0.1 который не является допустимым сервером имен, потому что он не настроен как сервер имен. Именно из-за dnsmasq который действует как DNS-кешер (и DHCP-сервер), но host, dig, nslookup принимать данные только с действительного, настроенного сервера имен.

Как host, nslookup, dig Команды будут использовать "сервер имен", упомянутый в /etc/resolv.conf (если не указано), разрешение имени хоста не будет работать, используя их в вашем случае. Хотя программы, которые используют /etc/nsswitch.conf или читать /etc/hosts разрешит имя хоста в IP-адреса и наоборот.

Если вы хотите разрешить имена хостов из /etc/hosts вам нужно использовать getent, Например, чтобы разрешить "node1-VirtualBox", вам нужна следующая команда:

getent hosts node1-VirtualBox

Командные утилиты host/nslookup пытаются разрешить DNS-запросы напрямую с помощью серверов имен. Они не используют /etc/hosts. Но приложения делают. Например, пинг должен работать. Таким образом, "ping node1-VirtualBox" должен разрешиться до 192.168.56.103 в вашем случае. Что именно вы хотите сделать?

Другие вопросы по тегам