Conectado, icono verde en la bandeja y una página de eco de dirección que sigue mostrando la dirección del proveedor no significan automáticamente una avería. Un cliente hace dos trabajos separados: construye un túnel y edita la tabla de enrutamiento. Cualquiera de los dos puede ocurrir sin el otro, y el enrutamiento selectivo es la configuración en la que el segundo se omite a propósito.

Qué instaló realmente el cliente

Pregunta qué interfaz llevaría un paquete a un destino real en lugar de preguntar si el túnel está activo. Un túnel sin ruta hacia ese destino es un camino privado que nadie usa.

ip route get 9.9.9.9
Find-NetRoute -RemoteIPAddress 9.9.9.9
route print -4

El primer comando responde en Linux y macOS, y los otros dos son los equivalentes de Windows, donde basta uno. Si la respuesta nombra el adaptador físico, el túnel está activo y la ruta predeterminada nunca se movió. Repite la consulta para un destino que debería usar el túnel, porque dos consultas, una remota y otra ordinaria, dicen qué diseño está desplegado.

Tres formas de enrutamiento selectivo

Un perfil de túnel completo suele escribir una ruta predeterminada que apunta a la interfaz, o escribe el par de prefijos de medio rango que ganan por longitud de prefijo mientras la ruta predeterminada original permanece en la tabla. El enrutamiento selectivo es la otra opción, y llega en varias formas. Un perfil enruta un solo host como un servidor RDP, otro enruta un rango público al que hay que llegar desde un lugar concreto, y un tercero excluye una aplicación a propósito. Los tres son legítimos, y ninguno cambia la dirección que ve un sitio web cualquiera.

grep -nE "redirect-gateway|route-nopull|route " /etc/openvpn/client/*.conf
ip route show table main | head -20

Lee el perfil para la directiva que decide y luego la tabla para lo que produjo. Una directiva empujada también se puede suprimir en el cliente, por eso el perfil y la tabla tienen que coincidir antes de culpar al servidor.

El lado remoto debe reescribir la dirección de origen

Hay un segundo fallo que desde el navegador parece idéntico. La ruta apunta al túnel, el servidor recibe los paquetes y luego los reenvía con la dirección privada del cliente intacta. El siguiente salto no tiene camino de vuelta para esa dirección, así que las respuestas desaparecen y las páginas se cuelgan. El servidor tiene que reenviar siquiera, y tiene que traducir el origen en algo que internet pueda enrutar de vuelta.

sysctl net.ipv4.ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -S | grep MASQUERADE

Nombra la interfaz que realmente mira a internet, que en una distribución moderna no siempre es eth0. Un servidor alojado con dirección fija puede traducir explícitamente a esa dirección en lugar de usar masquerade. Las dos mitades importan, porque el reenvío sin traducción filtra orígenes no enrutables mientras que la traducción sin reenvío nunca ve el paquete.

La resolución de nombres toma su propio camino

El tráfico puede salir por el túnel mientras la consulta que encontró el nombre fue a un resolutor de la red local. La dirección visible sigue igual, las consultas no, y ese hueco es exactamente lo que elige un diseño de DNS dividido.

resolvectl status | head -20
resolvectl query example.org

Fíjate en qué servidor respondió y si difiere de la línea base previa al túnel. En un túnel dividido suele ser el ajuste que la gente quería cambiar cuando se quejaba de la dirección, y es el que nunca miró.

Cuatro observaciones que lo resuelven

Captura la dirección de salida con el túnel bajado y luego con el túnel subido. Ejecuta la consulta de destino en ambos estados y anota la interfaz cada vez.

curl -sS https://ifconfig.me/ip
ip route get 9.9.9.9

Cuando la consulta cae dentro del túnel y el eco sigue mostrando la dirección del proveedor, falta la traducción en la salida. Cuando la consulta cae en el adaptador físico, el perfil es selectivo y la dirección pública nunca estuvo en juego. Sustituye el servicio de eco por uno en el que confíes y anota las cuatro observaciones juntas, porque por separado son anécdotas. Juntas identifican cuál de los dos trabajos hizo realmente el cliente.

Artículos relacionados