Dos sedes con enlaces móviles tienen el mismo problema en ambas direcciones: ninguna puede aceptar una conexión IPv4 no solicitada, así que ninguna puede hacer de servidor en un túnel directo. La arquitectura que funciona coloca un tercero accesible en medio: cada sede marca hacia fuera y el medio reenvía solo el tráfico que apruebas. Ese medio puede ser un enrutador que operas tú o un producto que presenta a los pares, y no son lo mismo. Los pasos de abajo están ordenados para que cada uno produzca evidencia antes de que el siguiente dependa de ella.

No se puede marcar a ninguna de las dos sedes, así que ambas deben marcar hacia fuera

Confirma la restricción antes de diseñar alrededor de ella. Si el operador entrega una dirección privada a la interfaz WAN, ninguna redirección de puerto en el enrutador de la propia sede la hará accesible, porque la traducción ocurre más arriba. Una dirección IPv6 pública puede existir en el mismo enlace y cambiar el diseño por completo, y por eso la comprobación cubre ambas familias. Anota la respuesta por sede, porque las dos rara vez tienen restricciones idénticas aunque compartan operador.

El caso móvil habitual se ve como una dirección del rango traducido del operador con una ruta por defecto a través de ella. No es una avería que reparar; es la razón por la que existe el concentrador. Lo que buscas es cualquier dirección a la que un tercero pueda llegar sin que la sede haya hablado primero.

Dos comandos responden a la pregunta de direccionamiento de la sede que tienes delante. Ejecútalos en el enrutador de la sede, no en un portátil detrás de él:

ip -4 addr show scope global
ip -6 addr show scope global

Quién presenta a los pares y quién lleva los paquetes

Presentación y transporte son trabajos separados que los productos a menudo agrupan sin hacer visible la línea. Un mecanismo de encuentro ayuda a dos pares a encontrar una ruta candidata; un relé lleva sus paquetes cuando no existe ruta directa. Comprar un servicio que presenta pares no te da un enrutador, y esa diferencia decide si el diseño necesita un concentrador siquiera.

El tránsito tiene su propio vocabulario, y las palabras describen roles, no garantías. La especificación ICE describe candidatos y comprobaciones de conectividad, STUN describe una forma de aprender sobre la traducción de direcciones, y TURN describe transporte retransmitido para aplicaciones que lo implementan. Ninguno de esos mecanismos aparece en una pasarela convencional porque la apuntaste a una dirección de descubrimiento. Verifica el tránsito como capacidad del producto y asume relé hasta que una prueba demuestre lo contrario.

Una ruta por sede, propiedad de un par

El concentrador necesita un túnel por sede, un prefijo LAN distinto detrás de cada una y una ruta para cada prefijo que nombre a su dueño. En el ejemplo el concentrador es 10.61.0.1, la sede A es 10.61.0.11 con LAN 10.60.10.0/24, y la sede B es 10.61.0.12 con LAN 10.60.20.0/24. Cada ruta de abajo apunta al par que posee el prefijo, no a la interfaz del túnel:

ip route add 10.60.10.0/24 via 10.61.0.11 dev wg0
ip route add 10.60.20.0/24 via 10.61.0.12 dev wg0
sysctl net.ipv4.ip_forward
ip route get 10.60.20.55 from 10.60.10.77

El reenvío tiene que estar activado, o los paquetes se detienen en el concentrador sin ningún error que señale la causa. El último comando responde a la pregunta real, porque pregunta qué camino tomaría un paquete de la LAN de la sede A a la LAN de la sede B con el origen incluido en la consulta. Trata una consulta que nombra la interfaz del túnel como evidencia y una que cae en la ruta por defecto como una ruta que falta, no como un misterio. Luego restringe el tránsito a propósito, porque un concentrador que reenvía entre todos los pares convierte dos sedes en una red plana y la política de acceso que creías tener deja de aplicarse.

Decide también dónde termina el cifrado. Cuando el concentrador tiene las dos terminaciones del túnel, el operador de esa máquina y su carga de trabajo entran en el modelo de confianza y disponibilidad, y su ancho de banda pasa a formar parte del camino.

Mantén vivo cada mapeo a través del operador

Cada sede inicia su propio túnel y cada una debe mantener vivo el mapeo de traducción o el operador lo olvida. Un mensaje de mantenimiento en el lado que inicia conserva ese mapeo entre los apretones de manos. Limita los prefijos permitidos a la dirección del concentrador y a la LAN remota, para que un par comprometido no pueda reclamar un prefijo que no posee:

[Peer]
PublicKey = <hub public key>
Endpoint = 192.0.2.10:51820
AllowedIPs = 10.61.0.1/32, 10.60.20.0/24
PersistentKeepalive = 25

Refleja el bloque en la otra sede con su propio prefijo remoto, y resiste la tentación de permitir todo el rango del túnel. Un apretón de manos que se detiene y se reanuda desde un puerto de origen nuevo es la firma de un mapeo caducado, y las marcas de tiempo del apretón son la prueba de que ocurrió. Un intervalo más corto que el tiempo de espera del operador evita la caducidad en lugar de repararla después. Cuando el operador cambia su comportamiento de traducción, espera que esos tiempos cambien con él.

Demuestra ambas direcciones, luego demuestra la recuperación

La verificación tiene dirección, así que un ping de A a B demuestra la mitad del diseño y nada sobre la ruta de vuelta. Comprueba el camino de respuesta con la misma consulta consciente del origen en el concentrador, y luego repite la prueba desde el otro lado. Los apretones de manos nuevos también forman parte de la evidencia, porque un túnel inactivo una hora puede estar probando un mapeo viejo:

wg show wg0 latest-handshakes
ping -c 3 10.60.20.55
traceroute -n 10.60.20.55

Luego prueba el fallo que esperas, no el éxito que quieres. Reinicia el enlace de una sede y confirma que el túnel vuelve sin que ninguna persona toque ninguno de los extremos, porque un diseño que necesita un operador tras cada cambio del operador está inacabado. Anota la ruta principal, la alternativa IPv6 cuando exista y el comportamiento cuando el concentrador no esté disponible. El concentrador ahora forma parte de tu modelo de disponibilidad, así que anótalo en lugar de descubrirlo durante una caída.

Artículos relacionados