Conecté el cliente VPN en un portátil con Windows 11, el mosaico pasó a Conectado, se abrió un recurso compartido interno y un sitio público seguía cargando directamente desde el Wi-Fi de la oficina. Esa mezcla parece un túnel roto. Es la salida normal de un perfil que envía parte del tráfico por la VPN y deja el resto en el adaptador físico. El túnel forzado cambia qué ruta predeterminada prefiere Windows; no borra las rutas más específicas y no promete que el tráfico se detenga cuando cae la conexión. Lo que sigue es el orden que recorro cuando un cliente afirma tener cobertura: estado del cliente, perfil guardado, rutas aplicadas, resolución de nombres y luego flujos reales.

Empieza por el cliente y luego deja de confiar en él

El cliente es el lugar correcto para empezar solo porque te dice qué perfil está activo. Abre las propiedades de la conexión y anota el nombre exacto del perfil, si se creó para el usuario actual o para todos en la máquina, y qué adaptador aparece en ncpa.cpl tras conectar. En mi portátil de pruebas el adaptador llevaba el nombre del perfil, lo que hacía fácil leer la salida de rutas. En otras máquinas aparece como una entrada WAN Miniport y el nombre no te dice nada.

Lo que el cliente no puede decirte es la cobertura. Un mosaico conectado describe el estado del túnel, no un inventario de destinos. Los clientes de terceros también guardan su propia configuración, así que el perfil nativo de Windows, y cada propiedad que vas a leer de él, puede no tener nada que ver con lo que instaló ese cliente. Si la VPN llegó mediante AnyConnect, OpenVPN GUI, WireGuard o un agente del proveedor, las comprobaciones de PowerShell de abajo en su mayoría no se aplican y deberías leer la configuración propia de túnel dividido y enrutamiento de ese cliente.

Lee el perfil guardado, no el mosaico

Para un perfil nativo de Windows (IKEv2, L2TP, SSTP o uno empujado por MDM), la decisión guardada de túnel dividido es una sola propiedad:

Get-VpnConnection -Name 'Office' | Select-Object Name, ServerAddress, SplitTunneling, DnsSuffix

Añade -AllUserConnection cuando el perfil se creó para todos en el dispositivo. Sin eso lees la lista del usuario actual, que puede estar vacía o contener otra entrada con un nombre similar. Un valor False en SplitTunneling significa que el perfil se guardó como túnel completo: Windows instala una ruta predeterminada a través del adaptador de la VPN. True significa túnel dividido, y entonces la cobertura depende por completo de las rutas y las reglas de resolución de nombres que empuja ese perfil.

Trata ese valor como configuración, no como observación. Registra qué pidió el perfil al conectar. Windows puede acabar con rutas aplicadas distintas, por una ruta más específica de otra interfaz, una opción de directiva o una entrada sobrante de una conexión anterior, así que el booleano nunca resuelve la pregunta por sí solo.

Compara el valor guardado con la tabla de rutas aplicada

Después de conectar, lista las rutas del adaptador del túnel en lugar de recorrer toda la tabla:

$vpn = Get-NetAdapter | Where-Object InterfaceDescription -match 'VPN|WAN Miniport'
Get-NetRoute -InterfaceIndex $vpn.ifIndex | Sort-Object DestinationPrefix
Find-NetRoute -RemoteIPAddress 10.20.4.15 | Select-Object -First 1

Find-NetRoute es la mitad útil. Responde la pregunta que el cliente nunca responde: para este destino, ¿qué interfaz y qué dirección de origen usará Windows realmente? Ejecútalo para un host interno, un host público y cualquier cosa que consideres una excepción deliberada. Un perfil de túnel completo debería mostrar la interfaz del túnel para la dirección pública. Un perfil de túnel dividido suele mostrar ahí el adaptador físico mientras los prefijos internos siguen resolviéndose por la VPN.

Dos trampas explican la mayoría de los informes de «enruta mal». El prefijo más específico siempre gana, así que un /24 en el adaptador físico supera a una ruta predeterminada en la VPN por baja que sea la métrica del túnel. La métrica solo desempata entre rutas del mismo prefijo. Y IPv4 e IPv6 se deciden por separado: un perfil que cubre 0.0.0.0/0 puede dejar IPv6 en el enlace local, lo que hace que un sitio de doble pila parezca medio tunelizado. Comprueba Get-NetRoute -AddressFamily IPv6 antes de concluir que el túnel está bien.

What you seeMost likely causeCheck next
Public traffic leaves the physical adapter while SplitTunneling reads FalseA more specific route on that adapter wins over the tunnel defaultFind-NetRoute for the exact destination, then look for a /24 or host route on the physical interface
Internal name fails, internal IP worksNo NRPT rule for that namespace, or a broader rule matches firstGet-DnsClientNrptPolicy and the namespace order
A dual-stack site opens directly while IPv4 uses the tunnelThe profile covers only the IPv4 default routeThe IPv6 route table on both interfaces
Routes look right but one app still goes directThe app uses its own proxy, or the client keeps a per-app listThe app's proxy settings and the client's application list

Comprueba la resolución de nombres por separado con NRPT

Los nombres internos que fallan mientras las direcciones IP internas funcionan apuntan a la directiva del resolutor, no al enrutamiento. Windows decide el DNS por espacio de nombres mediante la tabla de directivas de resolución de nombres, que es independiente de la tabla de rutas:

Get-DnsClientNrptPolicy -Effective | Select-Object Namespace, NameServers
Get-DnsClientServerAddress -InterfaceIndex $vpn.ifIndex

Cuando una regla coincide con *.corp.example, las consultas de ese espacio de nombres van a los servidores DNS del túnel aunque la ruta de datos hacia esos servidores siga en el adaptador físico en modo de túnel dividido. Ese es el diseño, y por eso una prueba de navegador que abre un sitio público no te dice nada sobre nombres internos. Si el adaptador lista los servidores esperados pero las consultas siguen yendo a otro sitio, compara el orden de las reglas NRPT y comprueba si coincide primero un espacio de nombres más específico.

Verifica los flujos y luego decide qué pediste en realidad

Recorre los destinos en un orden fijo para que los resultados sean comparables entre máquinas: una dirección pública, una dirección interna, un nombre interno y una excepción deliberada como una impresora local o una videollamada. Anota la interfaz y la dirección de origen que Find-NetRoute devuelve para cada una. Tras cualquier cambio de directiva, reconecta y repite las mismas cuatro comprobaciones; la tabla de rutas posterior a la reconexión es la única prueba de que el nuevo perfil surtió efecto.

Luego separa el enrutamiento de la aplicación forzosa. El túnel forzado prefiere el túnel para el tráfico cubierto mientras está activo. No es un interruptor de emergencia. Si el requisito es que nada salga de la máquina cuando cae el túnel, eso debe venir de un diseño de bloqueo: un perfil de firewall ligado al estado del túnel, un perfil siempre activo con filtros de tráfico o la opción propia de cierre ante fallo del cliente del proveedor. El túnel forzado también debe dejar accesible la dirección del propio servidor VPN fuera del túnel, y bloquearla en nombre de «forzarlo todo» es una forma fiable de quedarte fuera de la conexión que intentas aplicar.

Antes de cambiar nada, repasa esta lista. Cada elemento que falla acota dónde está el problema real.

  • Nombre y alcance del perfil confirmados, con -AllUserConnection para perfiles de toda la máquina.
  • SplitTunneling leído y tratado como configuración, no como prueba de cobertura.
  • Rutas del adaptador del túnel listadas por separado para IPv4 e IPv6.
  • Find-NetRoute ejecutado para un destino público, uno interno y uno de excepción.
  • Reglas NRPT comprobadas antes de culpar a las rutas de un fallo de nombre.
  • Requisito de bloqueo releído: el enrutamiento preferido no es lo mismo que el bloqueo aplicado.

La decisión de túnel completo o dividido pertenece a quien posee el perfil, y las notas de enrutamiento de Microsoft describen el comportamiento que Windows implementa cuando un perfil lo establece. Microsoft: túnel forzado y dividido es la referencia que mantengo abierta mientras leo la salida.

Artículos relacionados