ubuntuサーバーがLANホスト名を解決しない


14

ここにビットが詰まっています。

/ etc / hostsに特定のエントリがない限り、LANホスト名を解決できないマシンが2台あります

ただし、LAN上の他のマシンはホスト名解決できます。

私のLAN:

  • DNSMasqが有効になっているDD-WRT v24-sp2を実行している1台のCiscoルーター。LAN上のホスト名とIPを使用してこれを構成しました。
  • 1 x Kubuntu 12.10(ルーターのDNSMasqに入力されている限り、すべてのホスト名を正しく解決します)
  • 2 x NAS(すべての名前も正しく解決します)

  • 1 x Ubuntu Server 12.04(/ etc / hostsに入力されない限り、これはローカルホスト名を解決しません)

  • 1 x XBMCLive(Dharma)(同じ-エントリが/ etc / hostsにない限り解決しない)

ルーターでDNSMasqエントリを使用する最後の2つを取得するにはどうすればよいですか?各マシンは、ルーターをネームサーバーとして使用するように設定されており、すべてのユニットが外部アドレスを正しく解決します。

ありがとう。

さらなる情報:

サーバー上で、別のPC(wstation)をpingする場合

$ ping wstation
PING wstation.local.domain (x.x.x.x) 

その後、.localを追加した場合

$ ping wstation.local
PING wstation.local.local.domain (x.x.x.x)

そして直接

$ ping 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_req=1 ttl=64 time=0.387 ms
64 bytes from 10.0.0.4: icmp_req=2 ttl=64 time=0.316 ms
64 bytes from 10.0.0.4: icmp_req=3 ttl=64 time=0.312 ms
64 bytes from 10.0.0.4: icmp_req=4 ttl=64 time=0.280 ms
64 bytes from 10.0.0.4: icmp_req=5 ttl=64 time=0.322 ms
^C
--- 10.0.0.4 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.280/0.323/0.387/0.038 ms                                                                       

私は答えがわかりませんし、これが役立つかどうかはわかりませんが、あなたが知らなかった場合...マシン名の後に「.local」を追加すると、それが何らかの形で見つかることを発見しました構成は必要ありません。私はアドレスを指定していたので実際に助けましたが、テストなどに使用したOSを追加または削除するときにエントリを変更し続ける必要がありました。しかし、machinename.localを指定することで、心配する必要がなくなりました。これがどこから来たのか知っているなら、私に教えてください。:)
マーティフライド

1
こんにちはマーティ、あなたの答えをありがとう。.localで何が起こるかを示すために、問題にさらに情報を追加しました
-teracow

回答:


15

現在の出力について

ping wstation
PING wstation.local.domain

PCが.local.domain非FQDNクエリに追加されていることを明確に示します。これは、不適切に構成されているか、少なくともセットアップの誤りです。(実際に.local.domain接尾辞を意図的に使用しない限り)

名前解決とピリオド

多くの人が知らない重要なことの1つは、フルネームは常にピリオド(.)で終わる必要があるということです。これを省略すると、マシンはローカル検索ドメイン(mydomain.tldなど)内で解決しようとします。その場合、クエリはmypc.localになりmypc.local.mydomain.tldます。これを防ぐに、ピリオドでクエリます。

リゾルバーの構成

リゾルバの設定はここで非常に重要です。Ubuntu(およびDebian)では、これはファイルで設定されます/etc/network/interfaces(NetworkManagerを実行していない場合):

iface eth0 inet static
   address 192.168.3.3
   netmask 255.255.255.0
   gateway 192.168.3.1
   dns-nameservers 192.168.3.45 192.168.8.10
   dns-search foo.org bar.com                      # <-- these are the search domains

Linuxでの名前解決は、他の方法でも実現できます。これはすべて、ローカルDNSサーバーがこのすべてについて照会されているだけではありません。解決/etc/nsswitch.confhosts構成については、ファイルをご覧ください。

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

これは、ファイルが最初に試行され(これが/etc/hostsファイル)、次にmDNS が試行され、その後で実際のDNSサーバーが照会されることを意味します。mDNSはLinuxのAvahiを使用して実装され、AppleデバイスではBonjourと呼ばれます。.localデフォルトではサフィックスを使用しており、ブロードキャストメッセージを介して機能します。ARPが機能するのと似ていますが、その後はDNS用です。

これらすべてのシステムは.local、mDNSデバイスと混合した通常のDNSセットアップで使用すると、非常に混乱し、さらに複雑になる可能性があります。これが、あるデバイスが機能し、他のデバイスが機能しない理由について、今あなたが混乱している理由だと思います。それらはすべて同じ解決方法を使用しているわけではありません。

物事を整理するには

  • .localmDNSに完全に依存しない限り、使用を避けてください。あなたの質問から、私はあなたが物事をあなた自身で中心的な場所に構成したいことを理解しているので、ここでの私のアプローチはそれを避けることです。
  • ローカルDNSサーバー(この場合はDD-WRTデバイス)を構成して、などの特別なドメイン名を使用しますmy.home。dnsmasqの場合、これは単一の設定ですが、通常のセットアップでは、DNSサーバーとDHCPサーバーの両方で構成する必要があります(DHCPを介してアナウンスされているため)。
  • シンプルで一意のホスト名を持つようにすべてのPCを構成します。DHCPの要求でこれを使用し、ルーターで実行されているdnsmasqでこれを使用して解決します。または、DHCPに依存しないように手動で構成します。
  • /etc/resolv.conf過去に設定を変更した場合に備えて、残りの設定を削除します。
  • ネットワーク内のPCを構成しmy.homeて、ローカル検索ドメインとして使用します。これは、DHCPを介して自動的に/etc/network/interfaces実行できます。または、ファイルまたはNetwork Managerで静的アドレスを使用している場合:

    ここに画像の説明を入力してください

  • これで、単純な名前解決(ping hostname)とフルネーム()の両方ping hostname.my.homeが機能するはずです。

5
うわー!素晴らしい答えgertvdijk!非常に包括的な。そのため、あなたの言ったことを理解するのに時間が必要です。ホスト名の後にドットを付けてpingをテストしたところ、正しく動作したと言えます。パーマネントマシンにはこのLANでDHCPを使用しません。私はそれが何であるかを理解していなかったため、どのマシンでも.local設定を構成したことがありません。あなたの指示に従ってこれをさらに調査し、ご連絡いたします。
teracow

この包括的な回答をありがとうございます。DNSがmDNSの前に試行されるように/etc/nsswitch.confを変更しましたfiles mdns4_minimal [NOTFOUND=return] dns mdns4。これで、すべての動作が、(名前が正しくない)host.foo.localアドレス指定マシンで期待するようになりました。この変更ping hostnameが機能する前に、ping hostname.foo.local失敗していました。dig hostname失敗しdig hostname.foo.localて結果を返していたとき、私は本当に混乱していました。これで、期待どおりにFQDNにpingを実行できます。注文をこのように設定することには欠点がありますか?
TafT


0

代わりにTABを使用して、IPとホスト名の間に複数のスペースを含む/ etc / hostsで同様の問題が発生しました。TABに変更した後、ホスト名はpingで解決できます。

127.0.0.1        test.local
         ^^^^^^^^ → Should be a TAB not multiple spaces.

/superuser//a/938366/467479も参照してください


3
すみません、それは正しくありません。hostsファイルは、スペースまたはタブで機能します。また、127.0.0.1には最初にlocalhostがあり、その後にlocalhost.localdomainがあり、セットアップに応じてマシンのホスト名が必要です。(一部のセットアップ、Ubuntu / Debianでは、ホスト名を127.0.1.1行に配置しています).hostsファイルに.localアドレスをインストールすることはお勧めしません。mDNS/ Avahi
The Dude

1
ドメインにWindowsマシンがある場合は、明らかにAvahiまたはZeroconf mD​​NS実装と互換性のないユニキャストDNSを使用します。また、/ etc / nsswitch.confをチェックして、mdns4_minimal [NOTFOUND = return]の後にベイリングするか、mdns4の完全なルックアップを実行する(元に戻す)かを確認します。また、mDNS / sd-DNSリゾルバーがそのドメインへのルックアップをマスクするため、.localドメインを使用するようにDNSサーバーを構成しないでください。内部DNS TLDには、.lan、.work、.homeなどを使用します(ただし、.biz、.xyz、.webなどの新しいTLDの1つは使用しないでください)。幸運を祈ります。DNS解決の楽しい世界へようこそ。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.