私はほとんど新鮮なUbuntuデスクトップボックスを持っています。 OSは2週間前にインストールされ、karmicリポジトリから更新されました。先週、私はDNSに問題がありませんでした。しかし、今週は何かが変わった。何がいつになるかわからないし、設定を変更したかどうかもわかりません。
だから今、私はいくつかの本当に変な状況があります。ログによると、名前解決は正常に機能するはずです。
/ etc/hosts
127.0.0.1 localhost test
127.0.1.1 desktop
/ etc/Host.conf
order hosts,bind
multi on
/ etc/resolv.conf
# Generated by NetworkManager
search search servers obtained via DHCP
nameserver 192.168.0.3
/ etc/nsswitch.conf
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
しかし、実際はそうではありません。
ser @ test〜> pingテスト
PING localhost (127.0.0.1) 56(84) bytes of data.
[skip]
Pingは問題ありません。
ser @ test〜>ホストテスト
test.mydomain.com has address xx.xxx.161.201
NetworkManagerがこの誤動作を引き起こしているのではないかと思いますが、どこからチェックを開始するのかわかりません。考え、提案はありますか?
この構成により、ほとんどのアプリケーションは/etc/hosts
からのエントリで問題なく動作します。
ただし、Host
は/etc/nsswitch.conf
を見ません。 Host
は具体的に DNS検索プログラムであるため、これは偶然ではなく設計によるものです。 /etc/hosts
はDNSではありません。これは(ほとんど)使用したものですbefore DNSがありました。
同じことがDig
とnslookup
にも当てはまります。これらもDNS固有です。
Host
コマンド(Dig
およびnslookup
とともに)は、bind
DNSユーティリティの一部です。 DNSリゾルバーユーティリティとして、DNS解決だけを行います。
libnss
駆動のデータストアからエントリを取得する場合は、getent
プログラムを使用できます。たとえば、hostsエントリを取得するには、次のように使用します。
getent hosts google.com
これは、hosts:
の/etc/nsswitch.conf
の下に設定された解決順序に従います。これには、オプションの1つとして「ファイル」が含まれている場合は/etc/hosts
が含まれます。
私にとって、この問題は不正なファイル権限が原因で発生しました。 rootだけが/ etc/hostsを読み取ることができました。ファイルは誰でも読み取り可能である必要があります。