ping6がfoo.localdomainを::1と確認するのはなぜですか?

ping6がfoo.localdomainを::1と確認するのはなぜですか?

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.localdomainIPv4ドメインでも解決されるという事実は驚かないでしょう。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/8192.168.56/24xxx.localdomain127.x.x.x

関連情報