Prefira pesquisas DNS A (IPv4) antes de pesquisas AAAA (IPv6)

44

Observe que meu Ubuntu 10.10 recém-instalado sempre faz uma pesquisa de DNS AAAA antes de pesquisas de registro A. Existe alguma maneira de configurar o sistema para fazer pesquisas A primeiro?

(Embora vários navegadores e outros aplicativos possam conter seus próprios resolvedores, estou falando sobre os que estão na glibc)

n
fonte
Para esclarecer, você quer ter o IPv4 e o IPv6 presentes?
23411 belacqua
De preferência sim. Mas como eu tenho apenas o link do IPv6 local, é um desperdício pedir, por exemplo, o registro AAAA do google.com todas as vezes e depois solicitar o registro A depois.
Nos

Respostas:

53

É o padrão priorizar o IPv6 sobre o IPv4 para permitir que a próxima geração de IP assuma o controle :)

Você pode alterar isso editando os blocos de precedência em /etc/gai.conf(gai significa getaddrinfo, a chamada padrão do sistema para resolver nomes de host). Apenas comente a linha como descrito no arquivo:

# Para sites que preferem conexões IPv4, altere a última linha para

#precedence :: ffff: 0: 0/96 100

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

freddyb
fonte
obrigada, vc salvou meu dia! um dos meu servidor está ficando cada vez IPv6 resultados do servidor dns, mas o meu servidor simplesmente não podia funcionar correctamente w / IPv6
Boon
Olá, essa configuração requer um sysctl ou qualquer serviço recarregado ou reinicializado para entrar em vigor? Achei sua resposta útil, mas você pode editá-la para corrigir essas dúvidas.
Marco
A página de manual gai.confdiz que você deve cancelar o comentário de todas as linhas, não apenas da IPv4, para obter o comportamento modificado correto. De gai.conf(5): "Mais uma vez, a presença de uma única linha de precedência no arquivo de configuração faz com que a tabela padrão não seja usada." Se você deseja que as outras linhas da tabela padrão continuem funcionando, é necessário desmarcá-las também.
Ian D. Allen
10

Meu problema era o mesmo, eu tinha consultas IPV6 feitas antes do IPV4 e elas estavam desperdiçando recursos, então mudei meu arquivo /etc/gai.conf conforme o freddyb postou, mas meu cenário é um pouco diferente, meu servidor é Natted, então O IPv4 não terá precedência sobre o IPv6 apenas com essa linha. A solução também está comentando outras linhas no gai.conf, para que fique assim

#For sites which prefer IPv4 connections change the last line to
precedence ::ffff:0:0/96 100
...
#    For sites which use site-local IPv4 addresses behind NAT there is
#    the problem that even if IPv4 addresses are preferred they do not
#    have the same scope and are therefore not sorted first.  To change
#    this use only these rules:
#
scopev4 ::ffff:169.254.0.0/112  2
scopev4 ::ffff:127.0.0.0/104    2
scopev4 ::ffff:0.0.0.0/96       14

Portanto, seu servidor tentará primeiro o ipv4, mesmo se você for Natted!

Carlos Ho Continy
fonte
2
O /etc/gai.confarquivo no Ubuntu 15.04 "vivid" diz que as três scopev4linhas que você sugere acima já são o padrão. Fiz apenas a precedence ::ffff:0:0/96 100alteração de uma linha e isso funcionou mesmo atrás do NAT.
Ian D. Allen
1

Se você não deseja ativar o IPv6, pode desativar o IPv6 para fazer isso. http://www.webupd8.org/2010/05/how-to-disable-ipv6-in-ubuntu-1004.html

Caso contrário, você pode tentar adicionar

options single-request

Para o seu arquivo /etc/resolv.conf. (consulte http://udrepper.livejournal.com/20948.html para obter detalhes sangrentos)

ipv6_twit
fonte
1
A página de manual do resolv.conf indica que a opção que você sugere faz exatamente o contrário "Esta opção [...] faz com que o glibc execute as solicitações IPv6 e IPv4 sequencialmente (ao custo de alguma lentidão do processo de resolução)". - man7.org/linux/man-pages/man5/resolver.5.html
ndemou
sequencial = primeiro, depois o outro - em oposição ao paralelo. funciona bem aqui.
Ceviske