Reverse pesquisas de DNS reduzindo as operações de rede na LAN

9

Ambiente

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

  • Um roteador conectado ao modem do provedor e à internet
  • Meu PC de desenvolvimento conectado diretamente ao roteador

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

Eu configurei uma máquina VirtualBox no meu PC de desenvolvimento e instalei o Debian Squeeze (6.0.4) nela. O modo de rede do VirtualBox é Bridged Adapter para simular 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 tem longos atrasos. Alguns exemplos de operações de rede lentas:

  • Conexão SSH ao servidor do meu dev PC
  • Conexão à porta de administração do servidor Glassfish
  • netstat -l ( netstat -nl é muito rápido)
  • Starting MTA: exim4 na inicialização demora muito para concluir

Algumas delas têm soluções alternativas, como adicionar o Ip do meu dev pc a /etc/hosts ou adicionar uma opção específica de comando para evitar fazer pesquisas reversas de DNS. Obviamente, usar /etc/hosts só 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? Isso parece um esforço enorme e inútil para minhas necessidades e não posso acreditar que não haja outra opção em um ambiente DHCP como o meu.

Pesquisei muito na Internet sobre isso 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 o host (dig dá 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

Tanto o host quanto o dig retornam muito rápido para um ip público, mas levam 10 segundos para o tempo limite de um ip da LAN. Eu acho que 10s é o meu valor de tempo limite atual.

atualização 2

Com dev-pc no arquivo / 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-pc no arquivo / etc / hosts:

$ time getent hosts 192.168.1.50

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

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

    
por bernie 26.04.2012 / 23:54

4 respostas

3

192.168.1.1 é o endereço IP do seu roteador?

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

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

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

Sugestões:

  • Verifique as configurações do seu roteador. Deve responder aos pedidos da sua própria rede privada . Talvez você possa adicionar uma entrada de host estático na interface da Web do seu roteador?
  • Tente instalar o Avahi em todos os sistemas da sua rede.
  • Informe ao seu roteador para usar o DNS público do Google ( 8.8.8.8 e 8.8.4.4 ) ou OpenDNS
por 27.04.2012 / 22:10
4

As pesquisas de DNS com falha devem falhar rapidamente. No entanto, geralmente executo o dnsmasq, que lê o arquivo hosts e serve essas entradas para pesquisas diretas e inversas. Ele também atua como um servidor de cache DNS para reduzir a carga em seus servidores DNS upstream.

Você pode querer usar o comando host ou dig para ver quais pesquisas estã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 novas tentativas em /etc/resolv.conf 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 arquivo /etc/hosts , bem como do DNS. Os comandos host e dig apenas verificam o DNS. Se isso retornar, mas levar alguns segundos, talvez você queira alterar a ordem da entrada hosts em /etc/nsswitch.conf move files para a frente da lista.

Configurar dnsmasq e usá-lo como seu servidor DNS primário em /etc/resolve.conf deve resolver o problema se você tiver algum programa que dependa apenas do DNS para pesquisas de nome. Exim deve usar o resolvedor para pesquisas de base. Você precisará de um arquivo /etc/hosts , a menos que você possa desativar o servidor DHCP em seu roteador, você pode usar dnsmasq para DHCP. dnsmasq registrará automaticamente os nomes, se forem fornecidos em solicitações DHCP tratadas.

EDIT2: Se nenhum de seus computadores estiver sempre ativo, você pode querer instalar o samba e usar wins em sua configuração do nsswitch. Ele deve ser rápido, então pode funcionar se você colocá-lo à frente de dns na entrada hosts.

Você também pode verificar a instalação dos utilitários avahi , que permitirão a descoberta automática em redes locais vinculadas. Eu tenho que trabalhar 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 ser mais lento fazer pesquisas do que wins , portanto, colocar mdns à frente de dns na configuração do nsswitch pode não ser adequado.

    
por 27.04.2012 / 02:42
3

Se você não quiser passar pelo exercício de configurar um servidor DNS local (e potencialmente DHCP) para a sua rede doméstica, poderá informar aos serviços, quando possível, para não realizar pesquisas de DNS reverso.

Por exemplo, para desabilitar a pesquisa reversa de DNS para SSHD, adicione o seguinte ao arquivo sshd_config (ou similar, dependendo da distribuição):

UseDNS no

Você poderia remover essa linha da configuração do Exim, embora não esteja claro se isso terá impacto na velocidade de inicialização, ela impedirá a pesquisa de DNS reverso 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

    
por 27.04.2012 / 22:13
1

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

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 que esse tipo de pesquisa não ia funcionar e a sugestão de editar / etc / hosts - mas a única coisa que eu fiz com / etc / hosts foi comentar o ip6-allnodes e o ip6- linhas allrouters.

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

Espero que ajude os outros também:)

    
por 29.10.2014 / 19:26