Por que você resolve dl.google.com para um endereço IPv6?

4

Eu instalei o navegador Google chrome no Fedora 18. Agora, quando eu tento atualizar softwares usando yum upgrade , ele informa o seguinte erro e não consigo atualizar o chrome.

http://dl.google.com/linux/chrome/rpm/stable/x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed to connect to 2404:6800:4005:c00::88: Network is unreachable"

Parece que o dl.google.com está resolvido para um endereço IPv6, mas eu não uso o IPv6 e ping dl.google.com retorna um endereço IPv4 conforme o esperado.

# ping dl.google.com
PING dl.l.google.com (74.125.128.93) 56(84) bytes of data.

Qual é o motivo possível e como posso corrigir isso?

    
por LiuYan 刘研 20.03.2013 / 18:43

3 respostas

7

Por padrão, o yum resolverá o IPv4 & Endereços IPv6 do host / nome de domínio, veja a imagem abaixo wireshark (eu não sei o programa python, então a captura de tráfego de rede é a única maneira de descobrir como yum resolve o nome do host).

PararesolverapenasoendereçoIPv4,apenasadicioneip_resolve=4ouip_resolve=ipv4configayum.conf(consultemanyum.confparaobtermaisajuda).ParaoFedora,executeoseguintecomandodoterminalusandoumacontaroot:

echo"ip_resolve=4" >> /etc/yum.conf

Para resolver apenas o endereço IPv6, altere ip_resolve=4 acima para ip_resolve=6 .

Outros programas

wget e curl

# To resolve IPv4 address only
wget -4
curl -4

# To resolve IPv6 address only
wget -6
curl -6

host

host também tem -4 e -6 opções, mas elas não têm o mesmo significado wget & enrolar, eles forçam host a usar o transporte IPv4 / IPv6 para consultar o nome do host.

# To resolve IPv4 address only
host -t A

# To resolve IPv6 address only
host -t AAAA
    
por 10.02.2014 / 06:48
3

Eu não sei sobre o yum. Parece que está faltando uma implementação de Happy Eyeballs, ou seja, fallback para ipv4. Existe um endereço ipv6 ...

$ host dl.google.com
dl.google.com is an alias for dl.l.google.com.
dl.l.google.com has address 173.194.34.132
...many randomly permuted addresses...
dl.l.google.com has address 173.194.34.137
dl.l.google.com has IPv6 address 2a00:1450:400c:c06::5d

Aparentemente, há uma solução alternativa para quando isso dá errado, que é editar /etc/gai.conf e descomentar a linha precedence ::ffff:0:0/96 100 . Isso dá precedência aos endereços ipv4.

Eu acho que normalmente deveria funcionar. Você terá um endereço ipv6 local vinculado, mas um endereço ipv4 site-local (ou um público sem NAT). O resolvedor DNS da libc deve então preferir os destinos do ipv4. Isso é especificado no RFC 3484.

Eu me pergunto se isso é um problema no estilo Teredo. O seu roteador (por exemplo, um aeroporto da Apple) lhe atribuiu um endereço IPV6 global através de um túnel não confiável? Meu computador (nenhum ipv6 global) é assim:

$ ip addr |grep inet6
    inet6 ::1/128 scope host 
    inet6 fe80::215:afff:fe9f:fcd2/64 scope link
    
por 20.03.2013 / 19:03
1

Você pode desabilitar completamente o IPv6 adicionando

net.ipv6.conf.all.disable_ipv6 = 1

para um arquivo em /etc/sysctl.d , por exemplo, /etc/sysctl.d/disable-ipv6.conf .

    
por 21.03.2013 / 16:01