ti-enxame.com

Como o Windows decide qual servidor DNS usar na resolução de nomes?

Qual algoritmo o Windows usa para decidir qual servidor DNS ele consultará para resolver nomes?

Digamos que eu tenha várias interfaces, todas ativas, algumas sem servidor DNS especificado, algumas instruídas para determiná-la automaticamente e outras especificadas manualmente (na interface ipv4 AND interface ipv6).

Estou solicitando uma resposta para essa pergunta geral, na esperança de saber como resolver um problema mais específico no Windows Vista - tenho duas interfaces, uma métrica mais baixa e um servidor DNS especificado manualmente. O nslookup usa o servidor DNS THIS DNS e resolve os nomes corretamente. No entanto, todos os outros aplicativos não conseguem resolver o nome, a menos que eu especifique manualmente um servidor DNS para a outra interface, que os aplicativos usam. O nslookup também usa o servidor DNS especificado para essa outra interface, uma vez especificado.

Obrigado

46
Artefacto

Se não me engano, é determinado pela ordem de ligação NIC nas Configurações avançadas na pasta de conexões de rede. Você pode verificar isso alterando a ordem de ligação das várias NICs e executando o nslookup como um teste.

Para expandir minha resposta, citando o artigo que Evan vinculo , aqui está um trecho do referido artigo:

O serviço de cliente DNS consulta os servidores DNS na seguinte ordem:

  1. O serviço de cliente DNS envia a consulta de nome ao primeiro servidor DNS na lista de servidores DNS do adaptador preferido e aguarda um segundo por uma resposta.

  2. Se o serviço Cliente DNS não receber uma resposta do primeiro servidor DNS dentro de um segundo, ele envia a consulta de nome para os primeiros servidores DNS em todos os adaptadores que ainda estão sendo considerados e aguarda dois segundos por uma resposta.

  3. Se o serviço Cliente DNS não receber uma resposta de nenhum servidor DNS dentro de dois segundos, o serviço Cliente DNS envia a consulta a todos os servidores DNS em todos os adaptadores que ainda estão sendo considerados e aguarda outros dois segundos por uma resposta.

  4. Se o serviço de cliente DNS ainda não receber uma resposta de nenhum servidor DNS, ele envia a consulta de nome a todos os servidores DNS em todos os adaptadores que ainda estão sendo considerados e aguarda quatro segundos por uma resposta.

  5. Se o serviço Cliente DNS não receber uma resposta de nenhum servidor DNS, o cliente DNS enviará a consulta a todos os servidores DNS em todos os adaptadores que ainda estão sendo considerados e aguarda oito segundos por uma resposta.

O adaptador preferido na etapa 1 é o adaptador listado primeiro na ordem de ligação.

30
joeqwerty

No Windows 10, você deve atualizar a métrica de cada interface na ordem que desejar.

  1. Ir para Painel de Controle> Rede e Internet> Conexões de Rede
  2. Clique com o botão direito do mouse na conexão desejada (Conexão de prioridade mais alta)
  3. Clique em Propriedades> Internet Protocol Version 4
  4. Clique em Propriedades> Avançado
  5. Desmarque 'Métrica automática'
  6. Digite 10 em 'Interface Métrica'
  7. Clique OK

Referências:

Usei 10 para minha LAN, 20 para WLAN e 100 para interfaces VPN (prefiro o DNS local no trabalho, isso pode ser inverso para outros). Lembre-se de métrica mais baixa = prioridade mais alta .

Consulte este artigo no Suporte da Microsoft para ma explicação do recurso Automatic Metric para rotas IPv4 .

Suspeito que isso funcione porque parte da seleção de rota é definir o IP de origem da interface com a maior prioridade métrica (número mais baixo), pois você não está usando o mesmo endereço IP para todas as conexões, enquanto uma conexão BGP de conexão dupla deve use o mesmo IP de origem, mas selecione diferentes gateways de próximo salto com o IP de destino pendente.

Para o Servidor, instale o serviço DNS e faça algo proposital/inteligente. Não concordo em fazer isso no SO do servidor.

17
Jacob Evans

Esta página descreve o algoritmo usado pelo Windows para executar consultas DNS. Não é aprofundado o suficiente para fornecer todas as respostas que você procura, mas algum tempo com um sniffer e este artigo devem ser tudo o que você precisa para determinar o que está acontecendo em sua situação específica.

8
Evan Anderson

Eu tive exatamente o mesmo problema. Passei um dia tentando descobrir. Agora eu sei e funciona como um encanto.

Se você possui várias placas de rede e se especifica o servidor DNS em cada uma delas. Você sabe qual servidor DNS será usado finalmente?

Bem, você pode verificá-lo através da prática.

nslookup 192.168.3.6

Então você vê o servidor que seu PC realmente usa

A questão é: do que depende as janelas do servidor DNS que você escolhe usar e como podemos alterá-lo.

Precisamos especialmente disso quando usamos clientes VPN.

O resposta de qwerty201 está correto e correto. Mas você pode usá-lo APENAS quando tiver NIC no painel de controle - centro de rede e compartilhamento - alterar configurações do adaptador - lista de placas de rede

Somente se você vir o nic que é responsável pelo seu cliente VPN, poderá usar a maneira gráfica de apontar para o Windows o servidor DNS (especificado em um nic em particular) que você gostaria de usar.

Então vá ao Centro de rede e compartilhamento -> Altere as configurações do adaptador -> Avançado -> Configurações avançadas -> e mova o nicho com o DNS que deseja usar. (UP você precisa levantá-lo).

No entanto, se, por exemplo, você usar o cliente Shrew vpn - você não terá nenhuma placa de rede.

O que você faz.

Você abre o registro.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}

E você olha nas subpastas 0000, 0001 etc a pasta com

DriverDesc = Shrew Soft Virtual Adapter

bem. Então você copia para a área de transferência

NetCfgInstanceId = {B498E7DE-7257-48F6-AD32-60E470030F05}

Agora você vai

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage]

e você abre key = Bind. Você verá a lista assim

\Device\{1DF89CE3-CAAD-4EB7-A53F-AD16BC1D5EFD}
\Device\{70126DBE-B44D-4392-9417-0CABD6E384B1}
\Device\{D5127F8E-E7BB-4661-AE5A-A922614173D0}
\Device\{C44039AB-6801-4A9B-A736-3B12782FF411}
\Device\{85231D0F-CD05-4774-A983-632C5D83AC62}
\Device\{7E87BC81-8C58-4E05-9FA0-7897A6AA5CCE}
\Device\{3A1A3EFC-A9DE-4BCA-BAF6-81C7074487E0}
\Device\{8D41EDFC-04AC-4537-B5D5-0D54EB51A023}

Tudo o que você precisa fazer é colocar no topo

\Device\{B498E7DE-7257-48F6-AD32-60E470030F05}
\Device\{1DF89CE3-CAAD-4EB7-A53F-AD16BC1D5EFD}
\Device\{70126DBE-B44D-4392-9417-0CABD6E384B1}
\Device\{D5127F8E-E7BB-4661-AE5A-A922614173D0}
\Device\{C44039AB-6801-4A9B-A736-3B12782FF411}
\Device\{85231D0F-CD05-4774-A983-632C5D83AC62}
\Device\{7E87BC81-8C58-4E05-9FA0-7897A6AA5CCE}
\Device\{3A1A3EFC-A9DE-4BCA-BAF6-81C7074487E0}
\Device\{8D41EDFC-04AC-4537-B5D5-0D54EB51A023}

Isso é tudo. Não há necessidade de reiniciar.

Agora, o seu Windows usará o DNS especificado no shrew vpn nic quando você usar a conexão vpn.

4
Alex

Como isso pode ajudar você ou outras pessoas, você pode desativar o uso de round-robin do Windows dos DNS listados para tornar o uso de DNS mais previsível. Tente configurar o RoundRobin=0 no HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parameters ( referência ) para desativar o round-robing do DNS.

Há também um "tempo limite" para rotacionar os servidores; você também pode tentar defini-lo como zero :

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
 ServerPriorityTimeLimit=0
0
higuita