127.0.0.1
ファイルで/etc/hosts
に解決されたいくつかのローカルドメインがあります。そして、しばらくの間は大丈夫でしたが、今私が走ったとき:
nslookup test.local
結果:
Server: 192.168.1.3
Address: 192.168.1.3#53
** server can't find test.local: NXDOMAIN
192.168.1.3
はネットワークDNSであり、ローカルドメインtest.local
を認識する必要はありません。数回検索した結果、/etc/nsswitch.conf
ファイルには、照会するDNSソースの優先順位に関する情報が含まれていることがわかりました。しかし、そこには問題はありませんでした!これが私のものです:
# /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
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
だから誰が私のhosts
ファイルがDNSルックアップに含まれないのか知っていますか?
nslookup
は、properDNS解決のみを行います。これは、他のアプリケーションの Name Service Switch サブシステムとは大きく異なりますつかいます;つまり、nslookup
は/etc/hosts
およびmDNSを無視します。
そのようなローカル解像度をテストするには、NSSを使用するものを使用します。 ping <hostname>
たとえば。ここに、私のネットワーク上の/etc/hosts
エントリに基づいた簡単なデモがあります。
$ nslookup bert
Server: 8.8.8.8
Address: 8.8.8.8#53
** server can't find bert: NXDOMAIN
$ ping bert
PING bert (10.10.0.4) 56(84) bytes of data.
64 bytes from bert (10.10.0.4): icmp_seq=1 ttl=64 time=0.352 ms
64 bytes from bert (10.10.0.4): icmp_seq=2 ttl=64 time=0.407 ms
/etc/hosts
ファイルを考慮することができるDNSサーバーとプロキシがあることに注意してください。これらの場合、nslookup
はローカルソースから結果を返す場合があります。
特定のホスト(mysite.com)の/etc/hosts
ファイルから名前解決が必要だと思います。
この動作を引き起こす可能性があるもう1つの一般的な問題は、同じIPの/etc/hosts
ファイルに多くのエントリがある可能性があることです。例:
1.1.1.1 Host1.domain1.com
1.1.1.1 Host2.domain2.com
実装によっては、これにより名前解決がDNSに渡される可能性があります。簡単な修正、すべてを1行にグループ化
1.1.1.1 Host1.domain1.com Host2.domain2.com
私が見るもう1つの一般的なことは、誰か(通常は私)が/etc/hosts
のホスト名でIPアドレスを逆にすることです-例えば:
mysite.com 10.2.3.4
一見、普通のように見えます...これは、私が50%程度の時間で解決する方法です。
10.2.3.4 mysite.com