ここにビットが詰まっています。
/ etc/hostsに特定のエントリがない限り、LANホスト名を解決できないマシンが2台あります
しかし、LAN上の他のマシンcanはホスト名を解決します。
私のLAN:
2 x NAS(すべての名前も正しく解決する)
1 x Ubuntu Server 12.04(/ 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
ping wstation
PING wstation.local.domain
PCが.local.domain
を非FQDNクエリに追加していることを明確に示します。これは、不適切に構成されているか、少なくともセットアップで間違っているものです。 (実際に.local.domain
サフィックスを意図的に使用しない限り)
多くの人が知らない重要なことの1つは、フルネームは常にピリオド(.
)で終わる必要があるということです。これを省略すると、マシンはローカル検索ドメイン(mydomain.tldなど)内で解決しようとします。その場合、mypc.local
のクエリはmypc.local.mydomain.tld
になります。これを防ぐには、with期間をクエリします。
リゾルバの設定はここで非常に重要です。 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サーバーがこのすべてについて照会されているだけではありません。 hosts
解決の構成については、/etc/nsswitch.conf
ファイルをご覧ください。
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
これは、最初にファイル(これは/etc/hosts
ファイル)が試行され、次にmDNSが試行され、その後で実際のDNSサーバーが照会されることを意味します。 mDNSはLinuxのAvahiを使用して実装され、AppleデバイスではBonjourと呼ばれます。デフォルトでは.local
サフィックスを使用しており、ブロードキャストメッセージを介して機能します。 ARPによく似ていますが、それからDNSになります。
これらすべてのシステムは、mDNSデバイスと混合した通常のDNSセットアップで.local
を使用すると非常に混乱し、さらに複雑になる可能性があります。これが、あるデバイスが機能し、他のデバイスが機能しない理由について、今あなたが混乱している理由だと思います:すべて同じ解決方法を使用しているわけではありません
.local
の場合は使用しないでください。あなたの質問から、私はあなたが物事を中央の場所に自分で構成したいことを理解しているので、ここでの私のアプローチはそれを避けることです。my.home
。 dnsmasqの場合、これは単一の設定ですが、通常のセットアップでは、DNSサーバーとDHCPサーバーの両方で構成する必要があります(DHCPでアナウンスされているため)。/etc/resolv.conf
の残りの構成を削除します。ネットワーク内のPCを構成して、my.home
をローカル検索ドメインとして使用します。これは、DHCPを介して自動的に行うことができます。または、/etc/network/interfaces
ファイルまたはNetwork Managerで静的アドレスを使用する場合:
ping hostname
)とフルネーム(ping hostname.my.home
)の両方が機能するはずです。Gertvdijkの回答に基づいて、nsswitch.confの行をコメントアウトしました
Sudo vim /etc/nsswitch.conf
.
.
.
hosts: files dns # mdns4_minimal [NOTFOUND=return] dns
代わりにTABを使用して、IPとホスト名の間に複数のスペースを含む/ etc/hostsで同様の問題が発生しました。 TABに変更した後、ホスト名はpingで解決できます。
127.0.0.1 test.local
^^^^^^^^ → Should be a TAB not multiple spaces.
https://superuser.com/a/938366/467479 も参照してください