• 締切済み

hostsファイル名前解決の順序

hostsファイルで名前解決される場合、その順序について質問させて下さい。 名前解決される時、hostsファイルに記述のある上から下に向かって名前解決をするのか、 それとも下から上に向かって名前解決をするのでしょうか? ご存知の方はご回答をお願いいたします。 情報等が記載されているリンク等ございましたら、そちらもお教えください。 よろしくお願いいたします。

みんなの回答

回答No.2

hosts内で1つのホスト名に複数のIPを割り当てるのは、 自ホストマシンに複数NICをつけるケースが想定されています。 また、ホスト名からIPアドレスを得る関数(gethostbyname)は 複数のIPアドレスをまとめて取得できる構造になっています。 で、どのような優先順位で返却されるかは、 質問したい処理系が書かれてありませんが、 Linuxの場合、以下の情報があります。 http://sios-oss.blogspot.jp/2012/06/etchosts-ip.html ここにある通り、hosts.confに何も設定がなければ 上に書かれたIPが返却されます。 そして、hosts.confに「multi on」が設定されていると 複数設定されている全てのIPが返却されます。 さらに「reorder on」が設定されていると、 複数IPの返却において同一サブネットのIPが先に 返却されます。 ただ、だからといって1つのホスト名を指定して pingコマンドを入れても、pingが全てのIPに 一度に出るわけではありません。 ここで複数取得できると言っているのは、 gethostbyname関数で得られるIPアドレスが 複数配列で得られると言うことです。 複数のIPアドレスが得られてもpingコマンドのように 結局最初のエントリしか使用しないものは 「multi on」の効果はありません。 「reorder on」は、同一サブネットのIPが先頭に返却 されるので、pingコマンドが送信するIPもその結果が 反映されると思います。 なお複数エントリ取得に対応していて複数IP表示できる コマンドもあるようです。 例えば http://gkisland.seesaa.net/article/281947057.html にある通り、hostnameコマンドは-iパラメータをつけて 自ホストとして登録されているIPを全て表示することが できるようです。 Windowsの場合は、hosts.confのような設定はありませんが 少なくともgethostbynameで複数IPを取得できるようには なっているため、おそらくLinuxの「multi on」と同じ ような感じだろうと推測します。(本当のところは 実際のgethostbynameの戻り値を調べてみないとわかりません) 単純に「hostsファイル内で1ホストに複数IPが登録されて いる時、pingコマンドで使用されるIPアドレスは上のエントリ が優先されるか?下のエントリが優先されるか?」 という質問なら、簡単にやってみることができますが、 上のエントリが優先されます。

すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.1

>名前解決される時、hostsファイルに記述のある上から下に向かって名前解決をするのか、それとも下から上に向かって名前解決をするのでしょうか? hostsファイルで名前解決する目的を考えてください。 DNSの場合は正引きと逆引きがありますが、hostsファイルでは逆引きの必要があるでしょうか? 1つのIPアドレスで複数のホスト名を定義することはありますが、1つのホスト名で複数のIPアドレスを定義するとどのような結果になるかを考えてください。 マルチドメインのWebサーバーの場合は1台のサーバー(1つのIPアドレス)で複数のドメインを運用しますのでDNSには正引きで複数のドメイン名を1つのIPアドレスへ変換します。 その時、逆引きには本来のホスト名とIPアドレスの1組のみ設定するようです。 質問の回答になっていないと指摘されそうですが「解決する順番を考える必要が無いように思われる」と言う回答です。

すると、全ての回答が全文表示されます。