Sortie verbatim de mon 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
Je pensais qu'ils étaient tous les deux (au moins ahosts ) censés imprimer les adresses IPv4 et IPv6. Pourquoi ces types d'adresse sont-ils différents?
$ uname -srvmpio
Linux 3.2.0-31-generic #50-Ubuntu SMP Fri Sep 7 16:17:36 UTC 2012 i686 i686 i386 GNU/Linux
Modifier : il semble que cela puisse être lié à ce rapport de bogue .
Réponses:
Les deux
getent hosts
etgetent ahosts
peuvent potentiellement imprimer les adresses IPv4 et IPv6, mais ils décident quelle (s) adresse (s) imprimer différemment (c'est le point d'avoir deux commandes différentes).hosts
appelsgethostbyname2
(la variante prenant en charge IPv6 degethostbyname
). Le comportement est codé en dur : recherchez une adresse IPv6 et, s'il n'en existe pas, recherchez une adresse IPv4.ahosts
les appelsgetaddrinfo
. Cette fonction énumère tous les protocoles pour un nom donné, afin qu'elle puisse renvoyer les adresses IPv4 et IPv6 dans le même appel. Ce qu'il renvoie est déterminé par les paramètres de/etc/gai.conf
. Étant donné que de nombreuses applications ont encore du mal à gérer IPv6, la plupart des distributions préfèrent IPv4 par défaut et n'utilisent IPv6 que sur demande explicite.Quelques lectures utiles sur
ahosts
etgai.conf
autour de Stack Exchange:la source