web-dev-qa-db-ja.com

hostsファイルは無視されているようです

私はほとんど新鮮な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がこの誤動作を引き起こしているのではないかと思いますが、どこからチェックを開始するのかわかりません。考え、提案はありますか?

18
z4y4ts

この構成により、ほとんどのアプリケーションは/etc/hostsからのエントリで問題なく動作します。

ただし、Host/etc/nsswitch.confを見ません。 Host具体的に DNS検索プログラムであるため、これは偶然ではなく設計によるものです。 /etc/hostsはDNSではありません。これは(ほとんど)使用したものですbefore DNSがありました。

同じことがDignslookupにも当てはまります。これらもDNS固有です。

20
Alnitak

Hostコマンド(Digおよびnslookupとともに)は、bind DNSユーティリティの一部です。 DNSリゾルバーユーティリティとして、DNS解決だけを行います。

libnss駆動のデータストアからエントリを取得する場合は、getentプログラムを使用できます。たとえば、hostsエントリを取得するには、次のように使用します。

getent hosts google.com

これは、hosts:/etc/nsswitch.confの下に設定された解決順序に従います。これには、オプションの1つとして「ファイル」が含まれている場合は/etc/hostsが含まれます。

15
tylerl

私にとって、この問題は不正なファイル権限が原因で発生しました。 rootだけが/ etc/hostsを読み取ることができました。ファイルは誰でも読み取り可能である必要があります。

0
user152253