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 Adapter
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 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/hosts
ou adicionar uma opção específica de comando para evitar fazer pesquisas reversas de DNS. Obviamente, o uso /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? 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-pc
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 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.
fonte
8.8.8.8
e8.8.4.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
host
oudig
para 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.conf
novas 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/hosts
arquivo e do DNS. Os comandoshost
edig
apenas verificam o DNS. Se isso retornar, mas demorar alguns segundos, convém alterar a ordem dahosts
entrada em/etc/nsswitch.conf
mover arquivos para a frente da lista.Configurar
dnsmasq
e usá-lo como seu servidor de nomes DNS primário/etc/resolve.conf
deve 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/hosts
arquivo, a menos que possa desativar o servidor DHCP no seu roteador, poderá usá-lodnsmasq
.dnsmasq
registrará 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
wins
na configuração do nsswitch. Deve ser rápido, portanto pode funcionar se você o colocar à frentedns
na entrada de hosts.Você também pode instalar os
avahi
utilitá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 quewins
colocar namdns
frente dadns
configuração do nsswitch pode não ser adequado.fonte
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_config
arquivo (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
fonte
AS_NO_REVERSE_DNS
opção para o Glassfish, então darei uma olhada.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).
fonte