Pesquisas reversas de DNS que retardam as operações de rede na LAN

9

Meio Ambiente

Minha configuração de LAN é bastante básica:

  • Um roteador conectado ao modem do ISP e à Internet
  • Meu pc de desenvolvimento conectado diretamente ao roteador

O roteador fornece DHCP, mas não executa seu próprio servidor DNS. De fato, não há servidor DNS hospedado em qualquer lugar da minha LAN (configuração típica de rede doméstica). O roteador está configurado para enviar os servidores DNS do ISP como parte das informações de concessão do DHCP.

Configurei uma máquina VirtualBox no meu PC de desenvolvimento e instalei o Debian Squeeze (6.0.4) nele. O modo de rede do VirtualBox é Bridged Adaptersimular um servidor autônomo na minha LAN. Ser um servidor VirtualBox em vez de um servidor físico não é realmente importante, mas eu o menciono por completo.

O problema

Toda vez que uma operação de rede executa uma pesquisa reversa de DNS de um ip da LAN antes da execução, o servidor apresenta longos atrasos. Alguns exemplos de operações de rede lentas:

  • Conexão SSH ao servidor do meu PC de desenvolvimento
  • Conexão à porta administrativa do servidor Glassfish
  • netstat -l( netstat -nlé muito rápido)
  • Starting MTA: exim4 na inicialização leva muito tempo para ser concluído

Alguns deles têm soluções alternativas, como adicionar o IP do meu PC dev /etc/hostsou adicionar uma opção específica de comando para evitar fazer pesquisas reversas de DNS. Obviamente, o uso /etc/hostssó vai tão longe porque está em desacordo com o DHCP.

No entanto, não posso deixar de pensar que estou perdendo alguma coisa. Eu realmente preciso configurar um servidor DNS em algum lugar da minha LAN? Parece um esforço enorme e inútil para minhas necessidades e não acredito que não exista outra opção em um ambiente DHCP como o meu.

Pesquisei bastante na rede e talvez não tenha os termos de pesquisa corretos, mas não consigo encontrar a solução ...

atualização 1 após a resposta de BillThor

Usando host (dig fornece os mesmos resultados):

# ip of stackoverflow.com
$ time host -v 64.34.119.12
Trying "12.119.34.64.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15537
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;12.119.34.64.in-addr.arpa.     IN      PTR

;; ANSWER SECTION:
12.119.34.64.in-addr.arpa. 143  IN      PTR     stackoverflow.com.

Received 74 bytes from 192.168.1.1#53 in 15 ms

real    0m0.020s
user    0m0.008s
sys     0m0.000s

# ip of dev pc
$ time host -v 192.168.1.50
Trying "50.1.168.192.in-addr.arpa"
;; connection timed out; no servers could be reached

real    0m10.004s
user    0m0.004s
sys     0m0.000s

Meu /etc/resolv.conf (foi criado automaticamente durante a instalação)

nameserver 192.168.1.1

O host e o dig retornam muito rapidamente para um IP público, mas levam 10 segundos para o tempo limite para um IP da LAN. Eu acho que 10s é o meu valor de tempo limite atual.

atualização 2

Com o dev-pcarquivo / etc / hosts:

$ time getent hosts 192.168.1.50
192.168.1.50    dev-pc

real    0m0.001s
user    0m0.000s
sys     0m0.000s

Sem dev-pcno arquivo / etc / hosts:

$ time getent hosts 192.168.1.50

real    0m10.012s
user    0m0.004s
sys     0m0.000s

Parece cada vez mais que vou ter que encontrar opções ou parâmetros de programa por partes para cada um tentando fazer pesquisas de DNS reversas! Nenhuma das máquinas (virtuais ou não) pode atuar como um servidor DNS na minha LAN, pois nem sempre ela está ativa. Infelizmente, o firmware do roteador não inclui um servidor DNS.

Bernie
fonte

Respostas:

3

192.168.1.1 é o endereço IP do seu roteador?

nameserver 192.168.1.1 sugere que seu roteador esteja se anunciando como um servidor DNS, em vez de "enviar os servidores DNS do ISP".

Qual marca e modelo de roteador você possui? A interface da web mostra mensagens de log?

Gostaria de saber se o seu roteador está encaminhando a solicitação para os servidores de nomes do seu ISP, mas os servidores de nomes do seu ISP estão descartando a solicitação, porque eles não querem que você saiba como 192.168.1.50é chamada a máquina com IP .

Sugestões:

  • Verifique novamente as configurações do seu roteador. Ele deve responder a solicitações para sua própria rede privada . Talvez você possa adicionar uma entrada de host estática na interface da web do seu roteador?
  • Tente instalar o Avahi em todos os sistemas da sua rede.
  • Diga ao seu roteador para usar o DNS público do Google ( 8.8.8.8e 8.8.4.4) ou o OpenDNS
Mikel
fonte
O meu router é um "NETGEAR Router WNR3500L" @ 192.168.1.1. Os logs mostram apenas concessões e logins de DHCP na interface administrativa. Você está certo, o roteador envia 192.168.1.1 como servidor dns ao lidar com concessões DHCP (confirmadas com o Wireshark). Na interface administrativa do roteador, estou usando "Obter automaticamente do ISP" para os endereços DNS. A outra opção é especificar diretamente os servidores DNS por IP. Eu acho que isso significa que as solicitações de DNS são realmente encaminhadas pelo roteador.
Bernie
Sim, acho que está encaminhando as solicitações de DNS. E se você o alterar para usar o DNS público do Google ( 8.8.8.8e 8.8.4.4)?
27412 Mikel
Uau, isso realmente faz uma grande diferença! Aparentemente, esses servidores DNS (Google e OpenDNS) falham rapidamente quando recebem um endereço IP privado. Vou fazer mais alguns testes, mas acho que isso resolve meu problema!
22412 bernie
Marcando isso como resposta aceita. As 3 respostas foram úteis, mas a alteração dos servidores de DNS resolveu o problema "em geral".
May12
4

A falha na pesquisa de DNS deve falhar rapidamente. No entanto, geralmente executo o dnsmasq, que lerá o arquivo hosts e servirá essas entradas para pesquisas diretas e reversas. Ele também atua como um servidor de cache DNS para reduzir a carga nos servidores DNS upstream.

Você pode usar o comando hostou digpara ver quais pesquisas são lentas. Se você for redirecionado para um servidor DNS que não esteja executando o DNS, levará um bom tempo para falhar. Você pode ajustar os tempos limite e as /etc/resolv.confnovas tentativas para acelerar as falhas.

EDIT: Para testar a resposta do resolvedor, tente usar time getent hosts 192.168.1.50. Isso deve retornar pesquisas do seu /etc/hostsarquivo e do DNS. Os comandos hoste digapenas verificam o DNS. Se isso retornar, mas demorar alguns segundos, convém alterar a ordem da hostsentrada em /etc/nsswitch.confmover arquivos para a frente da lista.

Configurar dnsmasqe usá-lo como seu servidor de nomes DNS primário /etc/resolve.confdeve resolver o problema se você tiver algum programa que dependa apenas do DNS para pesquisas de nome. O Exim deve usar o resolvedor para pesquisas básicas. Você precisará de um /etc/hostsarquivo, a menos que possa desativar o servidor DHCP no seu roteador, poderá usá-lo dnsmasq. dnsmasqregistrará automaticamente os nomes se eles forem fornecidos nas solicitações DHCP que ele manipula.

EDIT2: Se nenhum de seus computadores estiver sempre ativo, convém instalar o samba e usá-lo winsna configuração do nsswitch. Deve ser rápido, portanto pode funcionar se você o colocar à frente dnsna entrada de hosts.

Você também pode instalar os avahiutilitários que permitirão a descoberta automática em redes locais de link. Estou trabalhando no lado do IPv6, mas não está publicando endereços IPv4. O domínio padrão para hosts é '.local'. Isso pode não ser adequado no seu caso, mas pode ser substituído. Também parece mais lento fazer pesquisas do que winscolocar na mdnsfrente da dnsconfiguração do nsswitch pode não ser adequado.

BillThor
fonte
Acho que ele disse que todas as (e somente) as LAN pesquisadas são lentas, e ele está tentando evitar um arquivo de hosts completamente.
ckhan
Como este é apenas um servidor de teste (e virtual também!), Não posso confiar nele como servidor DHCP para toda a LAN. Também existem outros clientes sem fio que precisam de um IP mesmo quando meu pc dev e, portanto, o servidor de teste, não estão em execução.
Bernie
Atualizei minha postagem novamente. Obrigado pela vossa ajuda até agora.
22412 bernie
3

Se você não deseja executar o exercício de configurar um servidor DNS local (e potencialmente DHCP) para sua rede doméstica, informe os serviços sempre que possível para não executar pesquisas reversas no DNS.

Por exemplo, para desativar a pesquisa reversa de DNS para SSHD, adicione o seguinte ao sshd_configarquivo (ou semelhante, dependendo da distribuição):

UseDNS no

Você pode remover esta linha da configuração do Exim, embora não esteja claro se isso terá impacto na velocidade de inicialização, impedirá a pesquisa reversa de DNS na conexão de clientes:

host_lookup = *

Parece que você pode exportar essa variável de ambiente para o usuário que inicia o processo Glassfish:

export AS_NO_REVERSE_DNS=true

George M
fonte
Eu gostaria de poder configurar um servidor DNS com o equipamento real que tenho, mas não é realmente possível, a menos que eu carregue um firmware alternativo no roteador. Obrigado pelas opções de configuração; Eu não tinha descoberto a AS_NO_REVERSE_DNSopção para o Glassfish, então darei uma olhada.
Bernie
1

Teve o mesmo problema depois de mudar de IP dinâmico para estático. Minha rede configurada agora: STATIC - NO IPv6 e não pretende usar um servidor de correio.

Eu resolvi o problema fazendo:

1: execute o dpkg-reconfigure exim4-config

2: Quando você chegar à pergunta de pesquisas de DNS -> Defina as pesquisas de DNS para o mínimo (Dial up)

Ele me deu um erro de que esse tipo de pesquisa não funcionaria e a sugestão de editar o / etc / hosts - mas a única coisa que fiz com o / etc / hosts foi comentar as linhas ip6-allnodes e ip6-allrouters.

A reinicialização deve ser rápida agora (pelo menos para mim).

SERRA
fonte