Cómo enrutar un solo sitio web fuera de tu túnel WireGuard
Una ruta /32 a través de la puerta de enlace LAN mantiene un solo sitio en tu conexión normal, siempre que el cortafuegos lo permita y el DNS coincida en la dirección.
Excluir un nombre de host es algo que un túnel no puede hacer. Una ruta, sin embargo, puede enviar una sola dirección más allá del túnel y hacia fuera por la puerta de enlace de casa, y eso suele bastar para un sitio. El problema es que todo lo que está después de la ruta debe coincidir: el cortafuegos tiene que dejar salir el paquete, el DNS tiene que devolver la dirección que enrutaste y el sitio tiene que seguir usando esa dirección. Cuando cualquiera de los tres se desvía, la excepción deja de funcionar sin anunciarse.
Lee la dirección de destino antes de tocar el túnel
Carga el sitio una vez con el túnel activo y luego mira la dirección del par a la que el navegador se conectó realmente. En Linux, ss -tunp muestra la dirección remota de cada socket abierto, y dig +short sobre el mismo nombre muestra lo que devolvió el resolutor. Ten ambos números delante.
Las dos respuestas a menudo no coinciden, y esa discrepancia es todo el problema. Los sitios grandes colocan una red de contenido delante de su origen, así que la dirección que devuelve tu resolutor ahora puede no ser la que usó el navegador hace un minuto. Enruta lo que observaste en el socket, no lo que enumera una guía antigua. Si las respuestas siguen rotando entre regiones, una excepción de dirección es la herramienta equivocada para ese sitio concreto.
Ejecuta la consulta una segunda vez desde otra red y anota la respuesta IPv6 junto con la IPv4. Un túnel que transporta ambas familias necesita una excepción en las dos, de lo contrario el navegador vuelve en silencio a la ruta IPv6 que nunca tocaste. Guarda las direcciones y la fecha en un lugar donde vuelvas a mirar.
Pon una ruta de host en el cliente
Supongamos que la interfaz se llama home-wg y que el router LAN está en 192.168.1.1. NetworkManager toma una ruta cuya puerta de enlace es ese router y cuya longitud de prefijo cubre los 32 bits completos, y el núcleo la prefiere porque gana el prefijo más largo.
nmcli connection modify home-wg +ipv4.routes "198.51.100.20/32 192.168.1.1"
nmcli connection up home-wg
ip route get 198.51.100.20
La puerta de enlace debe ser alcanzable sin el túnel; apuntar el siguiente salto a la dirección del túnel frustra el propósito, porque el paquete volvería a entrar en la interfaz que intentas evitar. Cuando la conexión vuelve a levantarse, ip route get para la excepción debería imprimir la puerta de enlace LAN, y el mismo comando para un resolutor público debería seguir imprimiendo el dispositivo del túnel.
Un perfil de wg-quick no tiene campo de rutas, así que la misma excepción vive en una línea PostUp que añade la ruta de host a la tabla principal con la interfaz LAN como su dispositivo. Baja y vuelve a subir la interfaz después de editar, porque una interfaz en marcha nunca relee su archivo. Las reglas fwmark que instala wg-quick solo dirigen sus propios paquetes encapsulados, así que el tráfico normal del navegador sigue la tabla principal y encuentra tu /32.
El interruptor de emergencia es lo siguiente que lo bloquea
Una política de cortafuegos que solo admite tráfico en la interfaz del túnel descartará la excepción incluso cuando la ruta sea exactamente correcta. Lee las reglas que hay detrás del conmutador en vez de confiar en el conmutador, porque las que implementan un interruptor de emergencia suelen estar limitadas a un nombre de interfaz.
Lo que quieres es un permiso estrecho para la interfaz física y ese único destino, colocado antes del descarte, mientras la política predeterminada queda intacta. Pausar el interruptor de emergencia por completo demuestra el punto, pero también deja la máquina expuesta mientras te olvidas de volver a activarlo.
Prueba las dos direcciones por separado. Una petición a la dirección de la excepción debería funcionar mientras una petición a un sitio no relacionado sigue saliendo por el túnel. Si ambas funcionan pero la segunda informa de la dirección de casa, el orden de las reglas del cortafuegos es incorrecto, no la ruta.
El DNS decide a qué dirección marca el navegador
Cuando el nombre se resuelve dentro del túnel, el resolutor del proveedor puede responder con una dirección distinta de la que dio el local. Entonces tu ruta se aplica a una dirección que el navegador nunca contacta, y la página se carga por el túnel como si nada hubiera cambiado. Este fallo parece una excepción rota aunque la tabla de enrutamiento sea correcta.
Envía también las consultas de ese nombre a través del resolutor local, o sáltate los nombres por completo y prueba la dirección directamente. Separar la dirección mientras el DNS se queda dentro del túnel es la versión a medio terminar más común de esta configuración, y también la más difícil de notar, porque el sitio sigue funcionando, solo que no como pretendías.
La misma excepción en el router, una vez, para cada dispositivo
Con el túnel funcionando en el router, la ruta de host pertenece a la tabla de enrutamiento por políticas del router y apunta a la puerta de enlace WAN en lugar de la LAN. Cada dispositivo que hay detrás hereda la excepción, lo que importa para un equipo de streaming o un portátil de trabajo cuyos ajustes de red no puedes cambiar.
Deja el túnel como salida predeterminada para todos los demás clientes y luego verifica desde una máquina cliente en lugar de desde la consola del router. Carga el sitio de la excepción y un segundo sitio en la misma sesión del navegador y compara las direcciones de salida; si el segundo sigue mostrando el túnel, la tabla de políticas hace lo que pediste.
Apunta la dirección, la fecha y el motivo en las notas del router. Una excepción construida alrededor de una dirección que luego se mueve se convierte en una avería que nadie puede explicar dentro de un año, y la solución siempre parece un misterio hasta que alguien encuentra la nota antigua.