VirtualBoxでCentOS 7システムを実行しています。ホスト専用ネットワークに接続します。ファイル/etc/hosts
には次の内容が含まれています。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.56.102 prospero.localdomain prospero
192.168.56.105 ariel.localdomain ariel
ariel.localdomainをpingすると、期待どおりに192.168.56.105がpingされます。
# ping -c1 ariel.localdomain
PING ariel.localdomain (192.168.56.105) 56(84) bytes of data
ariel.localdomainをping6すると、予期しない::1 pingが発生します。
# ping6 -c1 ariel.localdomain
PING ariel.localdomain(localhost (::1)) 56 data bytes
また、存在しないfoo.localdomainに対してping6を実行し、同じ応答を得ることができます。これはまったく予期しない結果です。
# ping6 -c1 foo.localdomain
PING foo.localdomain(localhost (::1)) 56 data bytes
ping6が*.localdomainをlocalhostとして確認するのはなぜですか?
ホスト専用ネットワークには DNS サーバーがないため、DNS を使用するクエリはタイムアウトします。たとえば、次のようになります。
nslookup
dig
host
答え1
あなたのhosts
文書によると、「ariel.localdomainのIPv6アドレスは何ですか?」という質問に対する回答は、::1
そのタイプの要求に応答するように構成されたDNSサーバーから来る可能性が高いです*.localdomain
(btw、Iこれはfoo.localdomain
IPv4ドメインでも解決されるという事実は驚かないでしょう。127.0.0.1
デバッグモードでnslookup
(またはdig
、または)を使用すると、hosts
情報のソースを確認できます。以下の(仮想)例の最初の2行を参照してください。
$ nslookup -debug -type=AAAA foo.localdomain
Server: ns1.google.com
Address: 216.239.32.10#53
...
foo.localdomain has AAAA address ::1
最後に、これは通常LAN(あなたの場合)ではなくlocaldomain
ループバックネットワーク()のためです。ホストは通常、コンピュータに対してローカルである必要があります(つまり、IPv4アドレスが必要です)。これは慣例にすぎませんが、DNSがこの方法で応答する理由を説明できます。127/8
192.168.56/24
xxx.localdomain
127.x.x.x