BIND9DNSサーバーを実行しているDebianサーバーがあります。私のゾーンファイルには、IPv4とIPv6を介して等しく到達可能ないくつかのホストがあり、それらにはそれぞれのAまたはAAAAレコードがあります。
ここで、IPv6のみのホストをゾーンに追加したいと思いました。これは、ホームネットワークで実行されているコンピューターです。このコンピューターには、インターネット/ DNSサーバーマシンから到達可能なIPv6アドレスがあります(アドレスを直接ping6できます)。ただし、not IPv4アドレスを持っています(ルーターの背後でNATされているためなど)。
それは問題ではないと思いました。IPv6アドレスを使用してこのホストのAAAAレコードを追加するだけで、pingを実行できます。
問題は、ping6を使用している場合にのみ、このマシンにpingを実行できることです。標準のpingコマンドでは、不明なホストが表示されます。これはある程度理解できますが、通常のpingでIPv4 andおよびIPv6レコードを持つホストの1つにpingを実行しても問題がないのはなぜですか?この場合、通常のpingはIPv6アドレスに解決されます。
それについての説明はありますか、そしてこの振る舞いを変えるために私は何ができますか?
概要:
ホストにはA + AAAAレコードがあります:pingはIPv6アドレスに解決され、ping6はIPv6アドレスに解決されます
ホストにはAAAAレコードのみがあります:pingはIPv6アドレスを解決せず、ping6はIPv6アドレスを解決します
pingはIPv4アドレスのみを要求し(つまり、Aレコードのみを照会します)、ping6はIPv6アドレスのみを要求します(AAAAレコードのみを照会します)。
したがって、DNSで両方のアドレスタイプが公開されているデュアルスタックシステムの場合、DNSで適切なレコードタイプを確認できるため、両方のコマンドが機能します。 IPv6の場合、ホストAレコードのみが欠落しているため、pingが無効になります。
あなたが間違っている部分は、pingがAAAAレコードを使用して解決できるという仮定です-それはできません。ネットワークスニファ(wiresharkなど)を使用して、リゾルバに送信される内容を正確に確認できます。 ICMPとICMPv6は異なるプロトコルであり、それぞれIPv4とIPv6と緊密に結合されており、交換することはできません。