O que pode fazer com que uma pesquisa de DNS ignore uma entrada de arquivo de hosts?

13

Estou tendo um problema de resolução de DNS que afeta o desempenho do meu site hospedado localmente quando o navega na minha máquina local. Se eu anexar o sufixo DNS da minha rede ao nome da máquina local quando for para o URL no meu navegador, o site terá um tempo de carregamento terrível (mais de 100 vezes mais lento) do que sem o sufixo DNS.

Eu pensei que poderia corrigir isso usando o meu arquivo hosts para evitar a necessidade de uma pesquisa. Adicionei uma entrada ao meu arquivo hosts como esta

127.0.0.1    myMachine.MyDnsSuffix

Mas isso não mudou os tempos de carregamento, mesmo após uma reinicialização. Embora não seja importante resolver esse problema específico, eu realmente gostaria de saber por que isso acontece.

Além disso, quando executo o nslookup no domínio myMachine.MyDnsSuffix, percebo que ele usa o servidor DNS da minha rede para encontrar o IP. Isso pode estar relacionado ao meu problema ou estou apenas entendendo mal o funcionamento do nslookup?

Dan Herbert
fonte

Respostas:

20

Acredito que o nslookup é usado para testar o próprio servidor DNS, em vez de utilizar o arquivo HOSTS. http://support.microsoft.com/kb/200525 parece indicar o mesmo.

Tente apenas um ping simples. Será que ping myMachine.MyDnsSuffixresolve para o endereço de auto-retorno que o especificado em seu arquivo HOSTS?

Christopher Karel
fonte
Você fez um bom argumento nslookup. Eu apenas tentei fazer ping no myMachine.MyDnsSuffixe ele resolveu o meu IP na rede, não 127.0.0.1como o especificado no meu arquivo HOSTS.
11139 Dan Herbert
Qual é o seu sistema operacional? Eu acho que o Windows7 e possivelmente o Vista têm algumas proteções UAC estranhas no arquivo HOSTS. Você tem certeza de que suas alterações estão sendo salvas corretamente?
Christopher Karel
Meu sistema operacional é o Windows XP. As alterações parecem estar sendo salvas corretamente.
11119 Dan Herbert
Hmm ... não há uma marca de hash no início da entrada HOSTS, existe? (isso tornaria um comentário) E você tem certeza de que está em C: \ Windows \ System32 \ drivers \ etc \ hosts? Você pode adicionar uma entrada fictícia lá e ver se isso resolve conforme você especifica?
Christopher Karel
3
Ah, e não se esqueça de limpar seu cache de nomes. ipconfig /flushdns. E os NETBIOS armazenar em cache também: nbtstat -R. (Processo sensível no Windows - WTF, por quê?!?)
Christopher Karel
8

As pesquisas de DNS não usam um arquivo de hosts. Sempre.

adaptr
fonte
2
@ BartDeVos não, não está errado. Um genérico de acolhimento de pesquisa (ou seja, gethostbyname()pode ir através do arquivo hosts, ou através de DNS, mas um específico do DNS lookup (interpretada por nslookup) não vai usar o arquivo hosts.
Alnitak
Dito isto, gethostinfo / getaddrinfo (as versões modernas do gethostbyname) são POSIX, e não necessariamente o que o Windows usa.
adaptr
2

OK, nova abordagem. Vamos limpar seu cache IP e NETBIOS. ipconfig /flushdnse nbtstat -R. Em seguida, ative um farejador de pacotes como o Wireshark e execute um ping enquanto estiver em execução.

A partir da captura de pacotes, queremos ver se A) Há uma solicitação de DNS sendo enviada e, em caso afirmativo, que nome está solicitando. B) Se houver uma solicitação NETBIOS saindo. É possível que esse nome esteja sendo resolvido via NETBIOS em vez do DNS adequado.

Se não visualizarmos nenhuma das opções acima, apesar de você ter liberado o cache, é provável que o nome esteja sendo extraído de hosts ou lmhosts.

Christopher Karel
fonte
1

Algumas pessoas nos fóruns da Web afirmam que criar um novo arquivo de hosts e reiniciar o serviço de cliente DNS corrige o problema, mas não sei por que isso funcionaria se você já tentou reiniciar.

Sei que é um tiro no escuro, mas não existem palavras relacionadas à Microsoft como MSDN, Microsoft ou MSN na entrada do arquivo hosts, existem? A Microsoft criou o dnsapi.dll para ignorar as entradas de arquivo de hosts que correspondem a determinados nomes. Por exemplo, se eu adicionar a seguinte entrada, o Windows a ignorará e resolverá os dois nomes de host na entrada usando DNS:

127.0.0.1 www.microsoft.com www.mysite.com
jlupolt
fonte
Não tenho nenhum material relacionado à Microsoft no meu arquivo HOSTS. Eu tenho apenas alguns domínios de teste internos atribuídos. Meu arquivo HOSTS é bastante básico.
11119 Dan Herbert
Hmm interessante. Eu sabia que eles codificavam domínios da Microsoft para ignorar o HOSTSarquivo, mas mesmo o domínio que não é da Microsoft é ignorado se compartilhar uma entrada com um domínio da Microsoft? Isso é apenas uma má programação da parte deles. Definitivamente, isso é algo a se observar se "minificar" um HOSTSarquivo.
Synetech
0

Ao usar o nome DNS completo, seu navegador está tentando acessar o servidor proxy - clique no IE .

O arquivo de hosts ou a ordem de resolução de nomes não tem nada a ver com esse problema, e a dor inflamada na parte traseira da humanidade, que é o arquivo de hosts, deve ser retirada e filmada ruidosamente.

Maximus Minimus
fonte
Eu não estou conectado a um proxy embora.
11119 Dan Herbert
1
@mh: eu concordo com você sobre a gravação de hosts, desde que os servidores raiz me permitam adicionar / remover / editar registros.
23710 Ian Boyd
0

http://geekswithblogs.net/JanS/archive/2009/06/17/beware-of-spacing-in-windows7-hosts-file.aspx

Esta parece ser a causa real. Deixe a Microsoft repentinamente e sem aviso, ignorar uma convenção de 25 anos.

Michael McNally
fonte
2
Inclua uma essência da resposta / causa em sua resposta. É muito melhor do que apenas um link.
Jacob
Aqui está a parte essencial do URL vinculado No entanto, nada parecia funcionar. Até que eu vi outro exemplo, hospeda arquivos que foram formatados como <endereço IP> <espaço único> <valor>
Tun