Evite que VPN cambie DNS en la vista previa del desarrollador de Windows 7/8

10

Tengo un cliente que usa una conexión VPN, sin embargo, configura automáticamente mi configuración de DNS en un servidor DNS inexistente, lo que significa que cada resolución de DNS agota el tiempo de espera hasta que se pruebe la alternativa, lo que realmente ralentiza todo el tráfico de Internet.

¿Hay alguna manera de evitar que una aplicación anule mi configuración de DNS (sin habilitar UAC)?

Alternativamente, ¿hay alguna manera de que pueda configurar algún tipo de enrutamiento local que diga 'cuando ingrese una solicitud DNS para la dirección IP A, realmente use la dirección IP B'?

Estoy usando la vista previa de Windows 8 Developer (pero sospecho que debería funcionar igual que Windows 7).

Gracias

Wiebe Tijsma
fuente

Respuestas:

18

No creo que haya una manera de evitar que suceda, además de asignar estáticamente los servidores DNS en la conexión VPN.

Para cambiar el orden en que se consultan los servidores DNS, se supone que uno puede cambiar el orden de enlace de la interfaz según /superuser//a/314379/120267 , pero eso no parece afectar las conexiones VPN en mis pruebas personales en Windows 7; He confirmado que mi conexión VPN se agrega constantemente a la parte superior de la HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage\Bindlista, independientemente de la configuración del orden de enlace de la interfaz.

Sin embargo, puede restablecer los cambios de DNS después de establecer la conexión VPN.

Recabando información

Abra un símbolo del sistema ( Start-> Run...-> cmd) y luego ejecútelo netsh interface ipv4 show dnsservers. Verá una salida similar a la siguiente:

Configuration for interface "My VPN"
    Statically Configured DNS Servers:    11.22.33.44
                                          55.66.77.88
   ...

Configuration for interface "Local Network Connection"
    DNS servers configured through DHCP:  192.168.0.1
                                          192.168.0.2
    ...

Necesita el nombre de la interfaz para la VPN y, opcionalmente, el primer servidor DNS de su conexión no VPN . En este ejemplo, son My VPN y 192.168.0.1 , respectivamente.


Configurando todo

Opción 1: deshabilitar VPN DNS

Suponiendo que no necesita los servidores DNS de su VPN, simplemente puede ejecutar lo siguiente en el símbolo del sistema:

netsh interface ipv4 delete dnsservers name="<Interface Name>" address=all validate=no

Eg: netsh interface ipv4 delete dnsservers name="My VPN" address=all validate=no

Si netsh interface ipv4 show dnsserversvuelve a ejecutar , verá que los servidores DNS asociados con la VPN se han eliminado; los servidores DNS de su conexión que no sea VPN se utilizarán para resolver nombres de host.


Opción 2: Suplemento VPN DNS

Si necesita los servidores DNS de su VPN para resolver los nombres de host de la intranet, puede ejecutar lo siguiente en el símbolo del sistema:

netsh interface ipv4 add dnsservers name="<Interface Name>" address=<Non-VPN DNS server> index=1 validate=no

Eg: netsh interface ipv4 add dnsservers name="My VPN" address=192.168.0.1 index=1 validate=no

En este caso, netsh interface ipv4 show dnsserversmostrará que el primer servidor DNS de su conexión que no es VPN se ha agregado a la parte superior de la lista de servidores DNS de su VPN. Primero se usará para resolver nombres de host y, si no tiene éxito, recurrirá al uso de los servidores DNS regulares de su VPN.

Ashley Ross
fuente
Usted es un héroe, señor, gracias por la extensa respuesta, ¡parece funcionar bien! Traté de jugar con netsh pero no pude llegar tan lejos ...
Wiebe Tijsma
1

Tuve un problema similar; conectarse a un servidor VPN anularía el DNS de mi estación de trabajo (cliente VPN remoto) para que el DNS local de la LAN quedara oculto. Describí el problema más detalladamente en el lado de Stackoverflow antes de señalar que debería haberlo publicado aquí.

Después de leer este hilo, es evidente que no se puede evitar la anulación utilizando la configuración del cliente OpenVPN. Mi solución fue agregar un archivo por lotes en el directorio de configuración de OpenVPN que se ejecuta cuando se forma la conexión OpenVPN. Si el archivo OVPN se llama company.ovpn, el archivo que se ejecuta en connect debe llamarse company_up.bat.

He aumentado un poco el archivo desde la versión que publiqué en mi pregunta en StackOverflow esta noche. Ahora se ve así:

1: ping 127.0.0.1 -n 2 > nul
2: netsh interface ip set dns "Local Area Connection 4" static 127.0.0.1
3: route delete 0.0.0.0
4: route add -p 0.0.0.0/0 172.20.20.1 metric 1000
5: exit 0

1: Un truco para esperar un par de segundos antes de continuar. La última versión (2.3) del cliente OpenVPN ignoraría el DNS y los cambios de ruta si se ejecutaran sin demora.

2: Configure el DNS de la conexión VPN para que apunte al host local. Tengo un resolutor (uso SimpleDNS Plus ) que se ejecuta en el host local que reenvía las consultas al dominio de la compañía al servidor DNS de la compañía a través de la VPN, y todo lo demás al servidor DNS LAN local. Tenga en cuenta que no podría usar un solucionador de LAN local para reenviar las consultas del dominio de la empresa al DNS de la empresa a través de la VPN, ya que el punto final de VPN está en el host local. El nombre de la conexión ("Conexión de área local 4") se determinó en el símbolo del sistema a través de "ipconfig / all".

3: El servidor VPN de la compañía está configurado para enrutar todo el tráfico saliente a través de la VPN y al mismo tiempo restringir las conexiones SSH salientes (a Internet). Esto entró en conflicto con mi flujo de trabajo, y primero estoy eliminando la ruta "0.0.0.0 netmask 0.0.0.0" ...

4: ... y luego vuelvo a agregar la ruta 0.0.0.0/0 para que apunte a la puerta de enlace LAN local, y establezco su métrica (peso) en 1000 como un todo para todo el tráfico que de otro modo no se enrutará.

5: Sin "salir 0" OpenVPN escupe una advertencia de error del script fallido (con un estado de salida 1).

Espero que esto sea útil para alguien ... funciona razonablemente bien para mí (no es necesario hacer ajustes de ruta o DNS manualmente cada vez que abro una conexión).

Ville
fuente
0

¿Hay alguna manera de evitar que una aplicación anule mi configuración de DNS (sin habilitar UAC)?

Al menos no hay una manera fácil de hacerlo.

Alternativamente, ¿hay alguna manera de que pueda configurar algún tipo de enrutamiento local que diga 'cuando ingrese una solicitud DNS para la dirección IP A, realmente use la dirección IP B'?

Puede agregar entradas al archivo de hosts ( C:\Windows\System32\drivers\etc\hosts). Este archivo contiene asignaciones de nombres de host a direcciones IP y se prefiere a las solicitudes de DNS.

Miguel
fuente
Bueno, sé sobre el archivo de hosts, pero todo esto está basado en la dirección IP, así que desafortunadamente no funciona ...
Wiebe Tijsma
Oh, está bien, ahora recibo tu pregunta. Y no, no puede redirigir las solicitudes de una IP a otra.
Michael
0

¿Puede verificar el estado de la casilla de verificación 'Usar puerta de enlace predeterminada en la red remota'? Esto se encuentra abriendo las propiedades de su conexión VPN y vaya a la pestaña Redes y seleccione TCP / IP v4 o TCP / IP V6 y luego seleccione propiedades y luego avanzado. Esto puede estar habilitado, lo que podría significar que todo el tráfico de Internet se enruta a través de la conexión VPN. No siempre es posible deshabilitar esto y seguir haciendo lo que desea con la VPN, pero se puede deshabilitar, puede acelerar el acceso a Internet.

Si eso no ayuda, hay una pestaña DNS allí y puede intentar agregar sus servidores DNS allí. He intentado esto, pero espero que estas configuraciones anulen las configuraciones automáticas.

sgmoore
fuente
No está marcado, por lo que no está enrutando todo el tráfico de Internet a través de VPN (cuando el nombre finalmente se resuelve, la conexión es lo suficientemente rápida). Traté de cambiar la configuración de DNS allí, pero desafortunadamente todo volvió a cambiar automáticamente a la configuración de DNS no válida cuando reinicio la conexión :(
Wiebe Tijsma
Si no puede evitar que se cambie el DNS, ¿es posible que falle más rápido utilizando un firewall para bloquear las solicitudes de DNS a esta dirección?
sgmoore
0

Desafortunadamente, netsh no puede eliminar los servidores dns asignados por dhcp. Pero esto se puede hacer borrando el parámetro DhcpNameServer en

HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\{id}

clave de registro.

a1nt
fuente
0

A partir de 2017, esto ahora es posible si se basa en OpenVPN

Agregue una línea al archivo de configuración de su cliente de

pull-filter ignora "dhcp-option DNS"

e ignorará todas las líneas de configuración empujadas que comienzan con el texto citado.

Las tres palabras clave de acción son accept ignore reject. No he descubierto un caso de uso para rechazar.

Criggie
fuente
0

Simplemente elimino esta opción de la configuración de VPN del cliente

setenv opt block-outside-dns

Se resolvió el problema.

Ismail
fuente