¿Cómo decide Windows qué servidor DNS usar al resolver nombres?

41

¿Qué algoritmo usa Windows para decidir qué servidor DNS consultará para resolver nombres?

Digamos que tengo varias interfaces, todas activas, algunas sin servidor DNS especificado, algunas indicadas para que lo determinen automáticamente y otras con esto especificado manualmente (en la interfaz ipv4 Y la interfaz ipv6).

Estoy pidiendo una respuesta a esta pregunta general con la esperanza de saber cómo resolver un problema más específico en Windows Vista: tengo dos interfaces, una de menor métrica y un servidor DNS especificado manualmente. nslookup usa ESTE servidor DNS y resuelve los nombres correctamente. Sin embargo, todas las demás aplicaciones no resuelven el nombre a menos que especifique manualmente un servidor DNS para la otra interfaz, que luego utilizan las aplicaciones. nslookup también usa el servidor DNS especificado para esta otra interfaz una vez que se especifica.

Gracias

Artefacto
fuente

Respuestas:

27

Si no me equivoco, está determinado por el orden de enlace de NIC en la Configuración avanzada en la carpeta de conexiones de red. Puede verificarlo cambiando el orden de enlace de los distintos NIC y ejecutando nslookup como prueba.

Para ampliar mi respuesta, citando el artículo que Evan enlazó , aquí hay un extracto de dicho artículo:

El servicio del cliente DNS consulta los servidores DNS en el siguiente orden:

  1. El servicio del cliente DNS envía la consulta de nombre al primer servidor DNS en la lista de servidores DNS del adaptador preferido y espera un segundo para recibir una respuesta.

  2. Si el servicio del cliente DNS no recibe una respuesta del primer servidor DNS dentro de un segundo, envía la consulta de nombre a los primeros servidores DNS en todos los adaptadores que aún están bajo consideración y espera una respuesta de dos segundos.

  3. Si el servicio del Cliente DNS no recibe una respuesta de ningún servidor DNS en dos segundos, el servicio del Cliente DNS envía la consulta a todos los servidores DNS en todos los adaptadores que aún están bajo consideración y espera otros dos segundos para recibir una respuesta.

  4. Si el servicio del Cliente DNS aún no recibe una respuesta de ningún servidor DNS, envía la consulta de nombre a todos los servidores DNS en todos los adaptadores que aún están bajo consideración y espera una respuesta de cuatro segundos.

  5. Si el servicio del cliente DNS no recibe una respuesta de ningún servidor DNS, el cliente DNS envía la consulta a todos los servidores DNS en todos los adaptadores que aún están bajo consideración y espera ocho segundos para recibir una respuesta.

El adaptador preferido en el paso 1 es el adaptador que aparece en primer lugar en el orden de enlace.

joeqwerty
fuente
44
Este proceso ha cambiado en Windows 10, aunque no conozco el nuevo proceso, sé que lo anterior no se aplica a Windows 10, vea este blog - blogs.technet.microsoft.com/networking/2015/08/14/…
Robert
14

En Windows 10 (y Windows Server 2016) debe actualizar la métrica de cada interfaz en el orden que desee.

  1. Ir a Panel de control> Red e Internet> Conexiones de red
  2. Haga clic derecho en la conexión deseada (conexión de mayor prioridad)
  3. Haga clic en Propiedades> Protocolo de Internet versión 4
  4. Haga clic en Propiedades> Avanzado
  5. Desmarque 'Métrica automática'
  6. Ingrese 10 en 'Métrica de interfaz'
  7. Haga clic en Aceptar

Referencias

Utilicé 10 para mi LAN, 20 para WLAN y 100 para interfaces VPN (prefiero DNS local en el trabajo, esto puede ser inverso para otros). Recuerde menor métrica = mayor prioridad .

Consulte este artículo en Soporte de Microsoft para obtener una explicación de la función Métrica automática para rutas IPv4 .

Jacob Evans
fuente
+1 Para mí en Windows 10, esta fue la única solución, gracias.
GµårÐïåñ
La modificación métrica solo afecta la selección de ruta. No afecta qué servidor DNS se utilizará.
Jruv
14 votos a favor y la experiencia personal no están de acuerdo, estoy de acuerdo en que no debería, pero los desarrolladores de Microsoft parecen haberlo codificado de esta manera.
Jacob Evans
8

Esta página describe el algoritmo utilizado por Windows para realizar consultas DNS. No es lo suficientemente profundo como para darle todas las respuestas que está buscando, pero en algún momento con un sniffer y este artículo debería ser todo lo que necesita para determinar qué está sucediendo en su situación específica.

Evan Anderson
fuente
3

Tuve exactamente el mismo problema. He pasado un día tratando de resolverlo. Ahora lo sé y funciona a las mil maravillas.

Si tiene varias tarjetas de red y si especifica el servidor DNS en cada una de ellas. ¿Sabes qué servidor DNS se utilizará por fin?

Bueno, puedes verificarlo a través de la práctica.

nslookup 192.168.3.6

Entonces ves el servidor que tu PC realmente usa

La pregunta es: de qué depende qué ventanas del servidor DNS eligen usar y cómo podemos cambiarlo.

Lo necesitamos especialmente cuando usamos clientes VPN.

La respuesta de qwerty2010 es correcta y correcta. Pero puede usarlo SOLO cuando tenga NIC en el panel de control - centro de redes y recursos compartidos - cambiar la configuración del adaptador - lista de nics

Solo si ve el nic que es responsable de su cliente VPN, puede usar una forma gráfica para señalar a Windows qué servidor dns (que se especifica en un nic particular) le gustaría usar.

Por lo tanto, vaya al Centro de redes y recursos compartidos -> Cambiar la configuración del adaptador -> Avanzado -> Configuración avanzada -> y suba el nic con el DNS que desea USAR. (ARRIBA necesitas levantarlo).

Sin embargo, si, por ejemplo, usa el cliente Shrew vpn, no tendrá ninguna nics.

Qué haces.

Abres registro.

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

Y mira en las subcarpetas 0000, 0001, etc., la carpeta con

DriverDesc = Shrew Soft Virtual Adapter

multa. Luego copia al portapapeles

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

Ahora te vas

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

y se abre key = Bind. Verás la lista así

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

Todo lo que tienes que hacer es llegar a la cima

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

Eso es todo. No hay necesidad de reiniciar.

Ahora sus ventanas usarán el DNS especificado en shrew vpn nic cuando use la conexión vpn.

Alex
fuente
0

Como esto podría ayudarlo a usted u otros, puede deshabilitar el uso de Windows Round-Robin de los DNS enumerados para hacer que el uso de DNS sea más predecible. Intente configurar el RoundRobin=0en la HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parameters( referencia ) para desactivar el dns round-robing.

También hay un "tiempo de espera" para rotar los servidores, también puede intentar establecerlo en cero :

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters
 ServerPriorityTimeLimit=0
higuita
fuente
De acuerdo con la "referencia" mencionada (enlace), esto se aplica para configurar el servidor DNS al proporcionar múltiples direcciones IP para algunos FQDN consultados en orden de clasificación rotados de una consulta a otra. Esto no tiene nada que ver con la pregunta sobre cómo un solucionador DNS (cliente) elige el servidor DNS para ser consultado.
Thomas Urban
-13

No decide al azar. Estás conectado a un enrutador que obtiene IP de una compañía que tiene servidores DNS. Reciben su solicitud a menos que modifique la IP manualmente a otro DNS, por ejemplo: OpenDns . O tal vez decida tener sus propios servidores DNS. Eso tambien funciona. Simplemente ingrese las direcciones IP en el centro de red y todo debería estar bien. Y sí, tendrá que configurarlos manualmente.

También puede ajustar un archivo C:\Windows\System32llamado "hosts" sin extensión. Le permite redirigir las solicitudes de URL en lugar de enviarlas al DNS estándar. A un servidor local (que debe estar ejecutándose y escuchando el puerto 80)

KdgDev
fuente
18
Básicamente, todo lo que has dicho aquí está mal
MDMarra
3
Y un -1 adicional por incluso mencionar la abominación enconada que es el archivo hosts.
Maximus Minimus
Manera de ser informativo MarkM
KdgDev
44
@WebDevHobo: realmente hay mucho que corregir en un comentario, pero tocaré los puntos importantes. 1) El OP tiene una computadora con múltiples interfaces (muy probablemente NIC separadas), y cada una tiene un DNS diferente definido. En el contexto de la pregunta, claramente está ejecutando algunos servidores DNS internos o tiene algunos servidores DNS externos preferidos; la caja es probablemente multi-homed. 2) No necesita establecer la dirección de un servidor DNS interno manualmente si está utilizando DHCP en la configuración del servidor DHCP para ese grupo de direcciones. 3) La ruta al archivo hosts es c: \ windows \ system32 \ drivers \ etc
MDMarra
3
Y el archivo HOSTS no debe usarse en esta situación, o prácticamente nunca a menos que esté haciendo desarrollo local y usando encabezados HOST o algo similar y necesite un FQDN para resolverlo localmente. Y el servidor no necesita ejecutar el puerto 80, ya sea que use el archivo HOSTS para la resolución de nombres o un servidor DNS. Simplemente agregue: número_puerto al final de la URL. A HOSTS no le importa el puerto, al igual que a DNS: es una forma de traducir un nombre de host a una dirección IP y nada más.
MDMarra