La impresora del escritorio sigue funcionando cuando el túnel sube, mientras que un servidor de la otra oficina se resuelve en silencio hacia algo local. Ambos comportamientos vienen de la misma regla: gana la ruta más específica, y un prefijo conectado directamente es tan específico como puede serlo. Suele ser el diseño que quieres, y también es así como un rango privado duplicado roba una dirección remota. Leer primero la elección del núcleo convierte un fallo misterioso en una comparación de prefijos.

Un prefijo conectado es más específico que una ruta predeterminada

Un túnel suele instalar una ruta predeterminada o un conjunto de prefijos, mientras que una interfaz local lleva un prefijo conectado más una ruta a toda la LAN. Entre ellas decide la coincidencia del prefijo más largo, así que un destino dentro del prefijo de la LAN nunca llega al túnel. Por eso una impresora, la página de administración de un router y un NAS local siguen siendo accesibles mientras la VPN está activa. Por eso también un recurso remoto dentro de un rango solapado va a la máquina equivocada.

El espacio de direcciones privadas no es único, y que dos sedes elijan el mismo prefijo es lo bastante habitual como para planificarlo. Cuando los rangos se solapan, la respuesta local llega rápido y parece autoritativa, así que el fallo se lee fácilmente como un problema de inicio de sesión. El destino sí respondió, solo que no el que querías.

Lee la elección que haría el núcleo

Pregunta al núcleo qué ruta usaría para el destino exacto en lugar de leer la tabla desde arriba. Después busca reglas de política que puedan elegir otra tabla. Dos comandos responden a ambas preguntas en unos segundos.

ip route get 10.20.30.41
ip route show table all | grep -E '10\.|default'
ip rule show

La primera salida nombra la interfaz, el siguiente salto y la dirección de origen que usaría el núcleo, y esa es la respuesta que importa. Un valor dev que apunta al puente local significa que el paquete nunca entra en el túnel, diga lo que diga el panel de estado del cliente VPN. El listado filtrado de tablas muestra si otra tabla contiene el mismo prefijo, y la lista de reglas muestra el orden en que se consultan esas tablas. Una regla de política puede enviar un prefijo por una tabla concreta incluso cuando la tabla principal no está de acuerdo, así que ese orden forma parte de la respuesta.

El acceso local es un permiso aparte

Tener una ruta no es lo mismo que tener permiso para usarla. La mayoría de los clientes pueden bloquear la comunicación de red local mientras el túnel está activo, y ese ajuste es una decisión de política, no un artefacto de enrutamiento. Cuando un servicio cercano de confianza forma parte del diseño, activa la opción de acceso local admitida en lugar de inventar rutas. Cuando el dispositivo está en una Wi-Fi pública, déjala desactivada.

Las dos capas fallan de forma distinta. Una ruta local bloqueada produce un tiempo de espera aunque la ruta exista, mientras que una ruta solapada produce una respuesta del host equivocado. Distinguirlas cuesta una consulta y ahorra una tarde de cambios de cortafuegos, y la disposición del reenvío se describe en las notas de reenvío de strongSwan.

Corrige un solapamiento sin acumular rutas de host

Una ruta de host para una dirección parece corregir un solapamiento y falla en el momento en que se necesita una segunda dirección del mismo rango. Veinte de ellas después, nadie puede decir qué prefijo es autoritativo. Las soluciones duraderas son un cambio de direccionamiento, una topología documentada que evite el rango duplicado o una traducción en un extremo. Cada una cuesta tiempo de planificación una vez en lugar de mantenimiento para siempre.

Si de verdad hace falta una ruta de host temporal, anota junto a ella el motivo, el propietario y la fecha para que pueda retirarse más adelante. Después prueba la dirección y el servicio exactos más un destino público, porque un cambio de acceso local que excluya en silencio aplicaciones no relacionadas del túnel es peor que el fallo original. Mantén el prefijo local y el prefijo remoto escritos por separado; esa costumbre evita que un ping local que funciona se pase como prueba de que la oficina remota es accesible.

Artículos relacionados