web-dev-qa-db-ja.com

すべてが/ etc / hostsにあるにもかかわらず、ローカルDNSルックアップが機能しない

私はUbuntu(12.04)をVirtual Boxで実行していますが、このネットワークで他のVMが行うのと同じように、自分のマシンが自身のホスト名を検索できるようにしたいです(仮想クラスターを構築しようとしています)。 DNSサーバーはありません。IPはVirtualBoxによって割り当てられ、私はそれらを/ etc/hostsにマップします。

マシン名はnode1で、そのような/ etc/hostsがあります:

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

だから私はそれを仮定します

  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アドレスを取得しようとすると、動作しません...

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

なぜこれが機能しないのでしょうか? DNSがlocalhostで行われている場合、configで読み取って確認した内容から、/ 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)

事後調査:

[OK]、解決しない「ホスト」コマンドは、私の元の問題の少しのニシンであることがわかりました-以下の回答で説明されているように、/ etc/hostsを調べないため動作しませんでした。

元の問題は、正規のホスト名の不足でした。つまり、hostname --fqdnはlocalhostを返していました。これを修正するには、/ etc/hostsの2行目に192.168.56.103 node1-VirtualBox.cs.ucl.ac.uk node1-VirtualBoxが必要でした。

ただし、実際に機能させるには、マシンを再起動して、Clouderaをクラスターに再インストールする必要がありました。

2
Kranach

/etc/hostsにエントリを配置する、/etc/resolv.confにサーバーアドレスを配置する、/etc/nsswitch.confを入力するなど、すべてを正しく実行しています。

あなたが抱えている問題は、非常に特定の用語「ネームサーバー」の理解によるものです。 IPアドレスをホスト名に解決するために使用されるすべてのコマンド、およびその逆は、明示的に言及されない限り、/etc/resolv.confからのネームサーバーアドレスを使用しました。ネームサーバーとして構成されていないため、有効なネームサーバーではないnameserver 127.0.0.1を配置しました。これは、DNSキャッシュ(およびDHCPサーバー)として機能するdnsmasqHostDignslookupで構成された有効なネームサーバーからのみデータを取得するためです。

HostnslookupDigコマンドは/etc/resolv.conf(指定されていない場合)で言及されている「ネームサーバー」を使用するため、ホスト名の解決はこれらを使用して機能しません。 /etc/nsswitch.confを使用するプログラムまたは/etc/hostsを読み取るプログラムは、ホスト名をIPアドレスに解決し、その逆も同様です。

/etc/hostsからホスト名を解決する場合は、getentを使用する必要があります。たとえば、「node1-VirtualBox」を解決するには、次のコマンドが必要です。

getent hosts node1-VirtualBox
1
heemayl

Host/nslookupコマンドユーティリティは、ネームサーバーを使用してDNSクエリを直接解決しようとします。/etc/hostsは使用しません。しかし、アプリケーションはそうします。たとえば、pingは機能するはずです。つまり、「ping node1-VirtualBox」は、192.168.56.103に解決されるはずです。正確に何をしたいですか?

0
Sindhura Bandi