getent HostsはIPv6を印刷し、getent ahostsはIPv4を印刷します。

getent HostsはIPv6を印刷し、getent ahostsはIPv4を印刷します。

私の端末はそのまま出力されます。

$ getent hosts example.org
2001:500:88:200::10 example.org
$ getent ahosts example.org
192.0.43.10     STREAM 43-10.any.icann.org
192.0.43.10     DGRAM  
192.0.43.10     RAW    

私は彼ら全員(少なくとも所有者)はIPv4アドレスとIPv6アドレスの両方を印刷する必要があります。なぜ他のアドレスタイプを印刷するのですか?

$ uname -srvmpio
Linux 3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:17:36 UTC 2012 i686 i686 i386 GNU/Linux

編集する:関連があるようです。このバグレポート

答え1

getent hosts両方ともgetent ahostsIPv4とIPv6アドレスを印刷できますが、印刷するアドレスを異なる方法で決定します(これは2つの異なるコマンドを使用することです)。

hosts着信電話gethostbyname2(IPv6バリアントをサポートgethostbyname)。行動はハードコーディング:IPv6アドレスを探し、IPv4アドレスがない場合は検索します。

ahosts着信電話getaddrinfo。この関数は指定された名前のすべてのプロトコルを列挙するので、同じ呼び出しでIPv4アドレスとIPv6アドレスの両方を返すことができます。返される内容は、次の設定によって決定されます。/etc/gai.conf。多くのアプリケーションは依然としてIPv6で困難を抱えているため、ほとんどのディストリビューションはデフォルトでIPv4を優先し、明示的に要求した場合にのみIPv6を使用します。

Stack Exchangeに関するahosts有用な資料は次のとおりです。gai.conf

関連情報