Hostsファイルに次のエントリがある場合:
192.168.100.1 bugs
192.168.100.2 daffy.example.com
192.168.100.3 elmer.example.com.
ローカルユーティリティによるIP->名前解決の試行( 'gethostbyaddr'またはWindowsの同等機能を使用すると想定)はこれらのエントリを受け入れますか?この動作は構成可能ですか?オペレーティングシステム間でどのように異なりますか? 「hosts」ファイルのエントリが完全に修飾されているかどうかは重要ですか?
編集:Russellへの応答として、私のテストLinuxシステムはRHEL 4を実行しています。私の/etc/nsswitch.confには、次の「hosts」行が含まれています。
hosts: files dns nis
名前(バグ、ダフィーなど)でホストにpingを実行すると、前方解決は正しく機能します。それらのいずれかをIPアドレスでtracerouteすると、逆ルックアップは期待どおりに機能します。ただし、IPでpingを実行すると、pingでホスト名が解決されないようです。 Linuxのpingは、特に指示されない限り、常にIPを名前に解決しようとすることを理解していました。 tracerouteがホストファイルの逆ルックアップを処理できるのに、pingできないのはなぜですか?
通常、hostsファイルは正引きと逆引きの両方に使用されます。 Unixシステムの設定は、nsswitch.confファイルのエントリの順序によって異なります。
例えば以下の行は、hostsファイルがDNSを上書きするようにします。エントリを逆にすると、DNSはhostsファイルを上書きします。
hosts:files dns
Windowsシステムで好みの順序に調整できるかどうかはわかりません。
Inetutils-20071127(Ubuntu 9.04ボックスにインストールされているバージョン)でpingのソースを確認しました。ホスト名ではなくIPアドレスにpingを実行すると、ソースは数値のみのモードを有効にするようです。
if(inet_aton(target、&whereto.sin_addr)== 1){ hostname = target; if(argc == 1) options | = F_NUMERIC ;
これは、IPアドレスでホストにpingを実行するときに逆ルックアップを取得できない理由を説明する可能性があります。
Windowsで名前解決の順序を変更するためのレジストリエントリの変更への参照が見つかりました。
http://forums11.itrc.hp.com/service/forums/questionanswer.do?threadId=963485
そこから引用:
デフォルトでは、Windowsは次の順序で名前解決プロバイダーをチェックします。
ローカル、(NetBTローカル名キャッシュ)、ホスト、DNS、NetBT(WINS)。
注文をホスト、DNS、ローカル、NetBTにする必要があります。
以下では、数値が小さいほど優先順位が高くなります。
次のレジストリキー
HKEY_LOCAL_MACHINE\SYSTEM\CurentControlSet\ServicessTcpip\ServiceProvider
変更する必要があります。
DnsPriority= 0x3e8 (Decimal: 1000)
HostsPriority= 0x1f4 (Decimal: 500)
LocalPriority= 0x5dc (Decimal: 1500)
NetbtPriority= 0x7d1 (Decimal: 2001)
/etc/Host.conf
ファイルは、IPアドレスの検出に使用される順序を指定します。鉱山にはデフォルトで以下が含まれています:
#
# /etc/Host.conf
#
order hosts,bind
multi on
つまり、hostsファイルは常に最初にチェックされ、次にDNS(バインド)がチェックされます。
ここでnis
が指定されていない場合、/etc/nsswitch.conf
は確認されません。
ドキュメントリンク: http://tldp.org/LDP/nag/node82.html