質問: 現在環境がなく自分で試すことができないため質問させていただきます。 `hosts` ファイルで名前解決をするとき、複数のIPアドレスに同じホストを指定するとどのような順番で解決されるのでしょうか? 例えば、 ``` 1.1.1.1 A 1.1.2.1 A ``` だと解決順序はどうなるのでしょう?
回答: 単純に hosts の順番で答えると昇順(上から)になります。 例えば hosts が下記の場合で ping や tracert を実行します。 * hosts ``` 127.0.0.1 A 127.0.1.1 A 127.0.0.2 A 1.1.1.1 A 1.1.2.1 A 1.1.1.2 A ``` * ping -a A -n 1 ``` C:\WINDOWS\system32>ping -a A -n 1 A [1.1.1.1]に ping を送信しています 32 バイトのデータ: 1.1.1.1 からの応答: バイト数 =32 時間 =4ms TTL=55 1.1.1.1 の ping 統計: パケット数: 送信 = 1、受信 = 1、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 4ms、最大 = 4ms、平均 = 4ms C:\WINDOWS\system32> ``` * tracert A ``` C:\WINDOWS\system32>tracert A A [1.1.1.1] へのルートをトレースしています 経由するホップ数は最大 30 です: 1 <1 ms <1 ms <1 ms hoge0 2 2 ms <1 ms <1 ms hoge1 : 省略 10 15 ms 14 ms 17 ms hoge9 11 4 ms 2 ms 2 ms A [1.1.1.1] トレースを完了しました。 C:\WINDOWS\system32> ``` このhostsファイルの各行をコメントアウトしながらパターン試行すると、hosts の順序や第1オクテット~第4オクテットのアドレスで動きが変わることが確認できると思います。 なお、nslookup はDNSサーバへの名前解決のみを行うのため、それ以外(hosts 等)は参照しません。 他の解決案としたら Windows Server 2016 とのことなので、 Windows DNS 機能を有効化しローカルで完結するDNS環境を構築してみてはと思います。 Aレコードの定義で"ドメイン名:IPアドレス = 1:n"が実現できると考えます。