みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

hostsファイルで名前解決される場合、その順序について質問させて下さい。
名前解決される時、hostsファイルに記述のある上から下に向かって名前解決をするのか、
それとも下から上に向かって名前解決をするのでしょうか?

ご存知の方はご回答をお願いいたします。
情報等が記載されているリンク等ございましたら、そちらもお教えください。

よろしくお願いいたします。

投稿日時 - 2014-06-07 23:01:34

QNo.8628031

困ってます

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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アドレスは上のエントリ
が優先されるか?下のエントリが優先されるか?」
という質問なら、簡単にやってみることができますが、
上のエントリが優先されます。

投稿日時 - 2014-06-09 02:02:11

ANo.1

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

質問の回答になっていないと指摘されそうですが「解決する順番を考える必要が無いように思われる」と言う回答です。

投稿日時 - 2014-06-08 09:23:17

あなたにオススメの質問