web-dev-qa-db-fra.com

Comment Windows décide-t-il du serveur DNS à utiliser lors de la résolution des noms?

Quel algorithme Windows utilise-t-il pour décider quel serveur DNS il interrogera afin de résoudre les noms?

Disons que j'ai plusieurs interfaces, toutes actives, certaines sans serveur DNS spécifié, certaines dites de le déterminer automatiquement, et certaines spécifiées manuellement (dans l'interface ipv4 ET l'interface ipv6).

Je demande une réponse à cette question générale en espérant savoir comment résoudre un problème plus spécifique dans Windows Vista - J'ai deux interfaces, une métrique inférieure et un serveur DNS spécifié manuellement. nslookup utilise CE serveur DNS et résout correctement les noms. Cependant, toutes les autres applications ne parviennent pas à résoudre le nom, sauf si je spécifie manuellement un serveur DNS pour l'autre interface, que les applications utilisent ensuite. nslookup utilise également le serveur DNS spécifié pour cette autre interface une fois qu'il est spécifié.

Merci

46
Artefacto

Si je ne me trompe pas, cela est déterminé par l'ordre de liaison NIC dans les paramètres avancés du dossier des connexions réseau. Vous pouvez le vérifier en modifiant l'ordre de liaison des différentes cartes réseau et en exécutant nslookup comme un examen.

Pour développer ma réponse, en citant l'article que Evan a lié , voici un extrait dudit article:

Le service client DNS interroge les serveurs DNS dans l'ordre suivant:

  1. Le service client DNS envoie la requête de nom au premier serveur DNS de la liste des serveurs DNS de l'adaptateur préféré et attend une seconde pour une réponse.

  2. Si le service client DNS ne reçoit pas de réponse du premier serveur DNS dans une seconde, il envoie la requête de nom aux premiers serveurs DNS sur tous les adaptateurs qui sont toujours à l'étude et attend deux secondes pour une réponse.

  3. Si le service client DNS ne reçoit pas de réponse d'un serveur DNS dans les deux secondes, le service client DNS envoie la requête à tous les serveurs DNS sur tous les adaptateurs qui sont toujours à l'étude et attend deux secondes supplémentaires pour une réponse.

  4. Si le service client DNS ne reçoit toujours pas de réponse d'un serveur DNS, il envoie la requête de nom à tous les serveurs DNS sur tous les adaptateurs qui sont toujours à l'étude et attend quatre secondes une réponse.

  5. Si le service client DNS ne reçoit pas de réponse d'un serveur DNS, le client DNS envoie la requête à tous les serveurs DNS sur tous les adaptateurs qui sont toujours à l'étude et attend huit secondes pour une réponse.

L'adaptateur préféré à l'étape 1 est l'adaptateur répertorié en premier dans l'ordre de liaison.

30
joeqwerty

Dans Windows 10, vous devez mettre à jour la métrique de chaque interface dans l'ordre souhaité.

  1. Aller au Panneau de configuration> Réseau et Internet> Connexions réseau
  2. Cliquez avec le bouton droit sur la connexion souhaitée (connexion de priorité supérieure)
  3. Cliquez sur Propriétés> Internet Protocol Version 4
  4. Cliquez sur Propriétés> Avancé
  5. Décochez "métrique automatique"
  6. Entrez 10 dans "métrique d'interface"
  7. Cliquez sur OK

Références:

J'ai utilisé 10 pour mon LAN, 20 pour le WLAN et 100 pour les interfaces VPN (je préfère le DNS local au travail, cela peut être inversé pour les autres). N'oubliez pas métrique inférieure = priorité plus élevée .

Consultez cet article dans le support Microsoft pour ne explication de la fonctionnalité de métrique automatique pour les routes IPv4 .

Je soupçonne que cela fonctionne parce qu'une partie de la sélection de l'itinéraire consiste à définir ensuite l'IP source de l'interface avec la priorité métrique la plus élevée (nombre le plus bas) car vous n'utilisez pas la même adresse IP pour toutes les connexions, alors qu'une connexion BGP à double hébergement serait utiliser la même IP source, mais sélectionner différentes passerelles de saut suivant IP de destination en attente.

Pour le serveur, installez le service DNS et faites quelque chose d'intéressant/intelligent, je ne suis pas d'accord avec cela sur le système d'exploitation du serveur.

17
Jacob Evans

Cette page décrit l'algorithme utilisé par Windows pour effectuer des requêtes DNS. Ce n'est pas assez en profondeur pour vous donner toutes les réponses que vous recherchez, mais un peu de temps avec un renifleur et cet article devrait être tout ce dont vous avez besoin pour déterminer ce qui se passe dans votre situation spécifique.

8
Evan Anderson

J'ai eu exactement le même problème. J'ai passé une journée à essayer de comprendre. Maintenant je sais et ça marche comme un charme.

Si vous avez plusieurs cartes réseau et si si spécifiez un serveur DNS dans chacune d'elles. Savez-vous enfin quel serveur DNS sera utilisé?

Eh bien, vous pouvez le vérifier via la pratique.

nslookup 192.168.3.6

Vous voyez donc le serveur que votre PC utilise réellement

La question est - de ce qui dépend de ce que les fenêtres du serveur DNS choisissent d'utiliser et comment nous pouvons le changer.

Nous en avons particulièrement besoin lorsque nous utilisons des clients VPN.

Le réponse de qwerty201 est juste et correct. Mais vous pouvez l'utiliser UNIQUEMENT lorsque vous avez NIC dans le panneau de configuration - réseau et centre de partage - modifier les paramètres de l'adaptateur - liste des cartes réseau)

Ce n'est que si vous voyez le nic qui est responsable de votre client VPN que vous pouvez utiliser un moyen graphique pour pointer Windows quel serveur DNS (qui est spécifié sur un nic particulier) que vous souhaitez utiliser.

Vous allez donc au Centre Réseau et partage -> Modifier les paramètres de l'adaptateur -> Avancé -> Paramètres avancés -> et vous montez le nic avec le DNS que vous souhaitez UTILISER. (UP, vous devez le soulever).

Cependant, si par exemple vous utilisez le client vpn de Shrew - vous n'aurez pas de NIC.

Que faire.

Vous ouvrez le registre.

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

Et vous regardez dans les sous-dossiers 0000, 0001 etc. le dossier avec

DriverDesc = Shrew Soft Virtual Adapter

bien. Ensuite, vous copiez dans le presse-papiers

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

Maintenant tu vas

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

et vous ouvrez key = Bind. Vous verrez la liste comme celle-ci

\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}

Tout ce que vous avez à faire est de vous mettre au sommet

\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}

C'est tout. Il n'est pas nécessaire de redémarrer.

Maintenant, vos fenêtres utiliseront le DNS spécifié dans shrew vpn nic lorsque vous utilisez une connexion vpn.

4
Alex

Comme cela peut vous aider ou aider d'autres personnes, vous pouvez désactiver l'utilisation de la répétition alternée de Windows des DNS répertoriés pour rendre l'utilisation du DNS plus prévisible. Essayez de définir le RoundRobin=0 dans le HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parameters ( référence ) pour désactiver le balayage circulaire DNS.

Il y a aussi un "timeout" pour faire tourner les serveurs, vous pouvez également essayer de le régler sur zéro :

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