hosts getent imprime IPv6, getent ahosts imprime o IPv4

9

Saída verbal do meu 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    

Eu achava que ambos eram (pelo menos ahosts supostamente para imprimir endereços IPv4 e IPv6. Por que esses tipos de endereço são diferentes?

$ 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 pode estar relacionado com este relatório de erros .

    
por l0b0 09.10.2012 / 16:14

1 resposta

7

Tanto o getent hosts quanto o getent ahosts podem imprimir endereços IPv4 e IPv6, mas decidem quais endereços devem ser impressos de maneira diferente (esse é o ponto de ter dois comandos diferentes).

hosts chama gethostbyname2 (a variante de suporte a IPv6 de gethostbyname ). O comportamento é codificado / a>: procure um endereço IPv6 e, se nenhum, procure um endereço IPv4.

ahosts chama getaddrinfo . Essa função enumera todos os protocolos para um determinado nome, para que possa retornar endereços IPv4 e IPv6 na mesma chamada. O que ele retorna é determinado pelas configurações em /etc/gai.conf . Como muitos aplicativos ainda estão lutando para lidar com o IPv6, a maioria das distribuições prefere o IPv4 por padrão e só usa o IPv6 por solicitação explícita.

Algumas leituras úteis sobre ahosts e gai.conf em torno do Stack Exchange:

por 10.10.2012 / 02:55

Tags