ローカルの「hosts」ファイルのエントリは、名前の前方参照と後方参照の両方をオーバーライドしますか?


16

hostsファイルに次のエントリがある場合:

192.168.100.1    bugs
192.168.100.2    daffy.example.com
192.168.100.3    elmer.example.com.

ローカルユーティリティ( 'gethostbyaddr'またはWindowsの同等のものを使用していると想定しています)によるIP->名前解決の試みは、これらのエントリを受け入れますか?この動作は構成可能ですか?オペレーティングシステムによってどのように異なりますか?「hosts」ファイルのエントリが完全に修飾されているかどうかは重要ですか?

編集:Russellへの応答として、私のテストLinuxシステムはRHEL 4を実行しています。/etc/nsswitch.confには次の「hosts」行が含まれています。

hosts:      files dns nis

ホストを名前(バグ、ダフィーなど)でpingすると、前方解決が正しく機能します。それらのいずれかをIPアドレスでtracerouteした場合、逆引きは期待どおりに機能します。ただし、IPでpingを実行すると、pingはホスト名を解決しないようです。私の理解では、Linux pingは、特に指示がない限り、常にIPを名前に解決しようとするものでした。tracerouteがhostsファイルの逆引きを処理できるのに、pingはできないのはなぜですか?

回答:


16

一般的に、hostsファイルは前方参照と逆引きの両方に使用されます。Unixシステムでの設定は、nsswitch.confファイルのエントリの順序によって異なります。

たとえば、次の行はhostsファイルでDNSを上書きします。エントリを逆にすると、DNSはhostsファイルを上書きします。

ホスト:ファイルdns

Windowsシステムで優先順位を調整できるかどうかはわかりません。

inetutils-20071127(Ubuntu 9.04ボックスにインストールされているバージョン)でpingのソースを確認しましたが、ホスト名ではなくIPアドレスをpingした場合、ソースは数値のみモードを有効にしているようです:

                if(inet_aton(target、&whereto.sin_addr)== 1){
                        ホスト名=ターゲット;
                        if(argc == 1)
                                オプション| = F_NUMERIC;

これは、IPアドレスでホストにpingを実行するときに逆引き参照を取得しない理由を説明できます。


それは私の考えでしたが、そうではないようです。詳細については、更新された質問を参照してください。
ムラリスリアール2009

私はまだソースを見る機会がありませんでした。私のシステムでのpingはそれがnsswitchのファイルをバイパスし、直接その逆引き参照を行っていることを意味するものでしたlibresolvのDNSリゾルバライブラリに直接リンクされていることLDD出力ショーでしかし簡単に見...
ラッセルHeilling

ISC hostユーティリティを使用する場合、/ etc / hostsを編集しても効果がないという印象を受けるかもしれません。host 10.0.0.1DNSクエリを実行し、hostsファイルを無視します。これにより、システムリゾルバーを確認できますperl -MSocket -le '$a=inet_aton(shift); $_=gethostbyaddr $a, AF_INET; print' 10.0.0.1
。– mivk

8

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)

彼らはどのようにしてそのような「内部労働」情報を得るのでしょうか?
Pacerier

1

この/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


/etc/host.confメソッドは一部のシステムでは時代遅れであり、nsswitch.confのみが使用されます(glibcやeglibcベースのシステムなど)。これらのバージョンのglibcは、警告なしで「/etc/host.conf」を解析し、「order」行を破棄します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.