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 ahosts可以打印 IPv4 和 IPv6 地址,但它们决定以不同方式打印哪个地址(这就是使用两个不同命令的要点)。

hosts来电gethostbyname2(支持 IPv6 的变体gethostbyname)。行为是硬编码的:查找IPv6地址,如果不存在,则查找IPv4地址。

ahosts来电getaddrinfo。此函数枚举给定名称的所有协议,因此它可以在同一调用中返回 IPv4 和 IPv6 地址。它返回的内容由中的设置决定/etc/gai.conf。由于许多应用程序仍在努力应对 IPv6,因此大多数发行版默认情况下更喜欢 IPv4,并且仅在明确请求时才使用 IPv6。

关于Stack Exchangeahosts及其周围的一些有用的读物​​:gai.conf

相关内容