Como deixar o navegador preferir o IPv6 ao IPv4?

16

Eu instalei o miredo e tenho o IPv6 instalado e funcionando, ao que parece. Posso executar ping6 em hosts e fazer download de páginas da Web com o wget ou o meu navegador da Web quando especificar endereços IPv6; no entanto, sempre que especificar um nome de host que seja oferecido em IPv4 e IPv6, o navegador escolherá o endereço IPv4 para a conexão.

Como posso mudar isso e permitir que o navegador use o IPv6 em vez do IPv4, se disponível?

Pesquisando ao redor, encontrei uma dica de que os navegadores preferem o IPv4 sobre o IPv6 para os túneis 6to4 / teredo, mas até agora não encontrei uma explicação sobre por que ou como mudar isso.

Grumbel
fonte

Respostas:

10

Não são os navegadores que preferem nenhuma das opções, é o sistema operacional. O padrão define as prioridades aproximadamente assim:

  1. ipv6
  2. ipv4
  3. Tráfego 6to4

Você pode alterar isso editando os blocos de rótulo / precedência em /etc/gai.conf(gai significa getaddrinfo, a chamada padrão do sistema para resolver nomes de host).

Uma explicação detalhada gai.confpode ser encontrada na página de manual

A propósito, isso também explica a experiência de Jonathon de que o túnel SiXXS era preferido em vez de 6to4.

freddyb
fonte
7

Para o Firefox e outros navegadores baseados no Mozilla / Gecko, a network.dns.disableIPv6configuração about:configdeve ser falsese você tiver o IPv6 (por padrão, no Ubuntu, porque é verdadeiro no Ubuntu, porque, caso contrário, muitas pessoas terão problemas com proxies DNS com erros nos roteadores domésticos).

JanC
fonte
Acho que isso é para o Firefox?
Sim, desculpe, atualizarei minha resposta.
JanC 24/10/10
2
Apenas verificado. Não há necessidade de tocar no pref. Atualmente, o padrão é o trueFirefox - também para o Firefox, do Ubuntu.
Freddyb
6

Assim como freddyb apontou, isso depende da configuração da chamada do sistema padrão para resolver nomes de host, getaddrinfo .

Para resolver seu problema, substitua o conteúdo do seu /etc/gai.confpelas seguintes linhas:

label ::1/128       0
label ::/0          1
label 2002::/16    2
label ::/96         3
label ::ffff:0:0/96 4
label fec0::/10     5
label fc00::/7      6
#label 2001:0::/32   7

updated : thx to freddyb por apontar que minha resposta anterior estava errada: precisamos comentar a última linha, não a 3ª. Agora funciona para mim!

pklaus
fonte
6

Recentemente, o Chrome, o Firefox e os navegadores derivados realmente evitam o IPv6 se um site responder mais rapidamente pelo IPv4. Não é possível alterar esse comportamento por meio de uma configuração.

O recurso em si provavelmente é razoável para o usuário comum, mas quase me deixa louco por não poder desativá-lo. Atualmente, a conectividade IPv6 é muito boa e, às vezes, o IPv6 tem várias vantagens em relação à conexão através do IPv4, mesmo que a latência - devido ao tunelamento - seja maior. Estou navegando no IPv6 há anos e, apesar de o roteamento e o desempenho do IPv6 estarem ficando muito melhores, esse maldito recurso de "hack" do navegador me lembra uma década.

MegaGuest
fonte
2
Esse comportamento é recomendado na RFC 6555. É uma prática comum desde cerca de 2010. E para fornecer uma experiência decente ao usuário, é absolutamente o comportamento certo a ser usado por padrão. Se os navegadores não tivessem feito isso, a maioria dos sites teria se recusado a publicar registros AAAA. Dito isso, uma configuração para ajustar muitos milissegundos de antecedência para fornecer IPv6 seria uma boa idéia. Ser capaz de escolher essa vantagem por site seria ainda melhor. A configuração por site pode ser adicionada ao navegador como um possível valor de retorno de um script proxy.
kasperd
2

OK, eu estive investigando isso e é estranho.

  1. Usar um proxy local
    Se eu configurar o Firefox como proxy através do Squid em execução na minha máquina, o Firefox (ou mais precisamente, o Squid) se conectará através do túnel miredo. Se eu tenho o miredo instalado, mas o Firefox está definido como "sem proxy", o Firefox usa o IPV4 primeiro.

  2. Instalar o aiccu
    Se eu instalar o aiccu e configurá-lo com um túnel (por exemplo, SiXXS), não importa que minhas configurações de proxy IPV6 sejam usadas primeiro pelo Firefox.

Pode ser que, como o miredo esteja lá para se conectar a sites IPV6, ele seja usado apenas quando o IPV4 não estiver disponível; nesse caso, tente aiccu.

Jonathon
fonte
1

A resposta é simples: altere os rótulos.

label 2002::/16    1
label 2001:0::/32   1

Isso os torna equivalentes ao ipv6 "vanilla".

Se você os deixar comentados, eles receberão os valores padrão.

Arminho
fonte