Salida literal de mi terminal:
$ 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
Pensé que se suponía que ambos (al menos un host ) debían imprimir direcciones IPv4 e IPv6. ¿Por qué imprimen diferentes tipos de direcciones?
$ uname -srvmpio
Linux 3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:17:36 UTC 2012 i686 i686 i386 GNU/Linux
Editar : Parece que podría estar relacionado con este informe de error .
Respuestas:
Ambos
getent hosts
ygetent ahosts
potencialmente pueden imprimir direcciones IPv4 e IPv6, pero deciden qué dirección (es) imprimir de manera diferente (ese es el punto de tener dos comandos diferentes).hosts
llamadasgethostbyname2
(la variante compatible con IPv6 degethostbyname
). El comportamiento está codificado : busque una dirección IPv6 y, si no existe, busque una dirección IPv4.ahosts
llamadasgetaddrinfo
. Esta función enumera todos los protocolos para un nombre dado, por lo que puede devolver direcciones IPv4 e IPv6 en la misma llamada. Lo que devuelve está determinado por la configuración en/etc/gai.conf
. Debido a que muchas aplicaciones todavía tienen dificultades para hacer frente a IPv6, la mayoría de las distribuciones prefieren IPv4 de forma predeterminada y solo usan IPv6 por solicitud explícita.Algunas lecturas útiles sobre Stack Exchange
ahosts
y susgai.conf
alrededores:fuente