Usted añade una ruta de sucursal, funciona, y luego una actualización de firmware o un guardado desde la interfaz web la elimina. Dos correcciones parecen igual de razonables en ese momento: poner la ruta en la fuente de configuración admitida del dispositivo o añadirla al archivo generado desde un script de arranque. Se comportan igual durante una semana y divergen en la segunda actualización. Este artículo compara qué posee realmente cada una.

Los dos candidatos poseen cosas distintas

La fuente de configuración admitida es todo lo que el dispositivo trata como entrada: un campo de la GUI, un perfil importado, un directorio documentado por cliente, una base de datos de ajustes que lee el paquete de gestión. El server.conf generado es salida. Editar la salida funciona hasta que el generador vuelve a ejecutarse, y eso ocurre al guardar, al reiniciar y al actualizar.

El enfoque con script parchea esa salida después de que el generador termina. Es una técnica legítima para un laboratorio, y es el valor predeterminado equivocado para una oficina de sucursal, porque hace que la ruta dependa de la coincidencia de texto en lugar de un campo documentado.

QuestionSupported config sourcePost-generation script
Survives a GUI saveYesOnly if the save does not regenerate the file
Survives a package upgradeUsually, when the field is documentedNo guarantee; the wrapper can be replaced
Supportable by the vendorYesNo
Obvious to the next adminYes, it is in the UINo, it lives in a wrapper

Qué regenera el dispositivo, y cuándo

Los paquetes de gestión suelen guardar los ajustes en una base de datos o en un conjunto de plantillas y generan la configuración del demonio al arrancar. Un guardado desde la interfaz web a menudo reescribe todo el archivo en lugar de parchear una línea. Si su cambio vivía en ese archivo, ahora ha desaparecido, y nada registra una advertencia porque, desde el punto de vista del dispositivo, no se perdió nada.

Los envoltorios de arranque tienen un segundo modo de fallo. Un grep de una directiva con un espaciado concreto deja de coincidir tras un cambio de plantilla, y el script no hace nada en silencio. Peor aún, una actualización de firmware puede reemplazar el envoltorio por una versión nueva y llevarse el parche. Entonces tiene una ruta que existió un año y desapareció durante un mantenimiento que nadie relacionó con el enrutamiento.

Qué debe expresar el dueño admitido

Un prefijo de sucursal necesita tres declaraciones, no una. El cliente debe aprender la ruta, el servidor debe saber qué cliente autenticado posee el prefijo, y el lado de la sucursal debe devolver el tráfico a la dirección de túnel que se le dio. En términos de OpenVPN eso significa una route enviada, una iroute correspondiente ligada al cliente y una ruta de retorno en el otro extremo.

Aquí es donde las interfaces de los dispositivos engañan. Una casilla etiquetada «permitir que los clientes accedan a la LAN del servidor» describe tráfico hacia la propia red del servidor. Su sucursal es la dirección opuesta: una red detrás de un cliente, accesible desde el lado del servidor. La misma etiqueta no implica soporte para eso, y una directiva válida en un archivo no es una promesa de que el paquete la preserve.

Cuando no existe ningún control admitido

A veces la versión instalada genuinamente no puede expresar una ruta específica de un par. Entonces las opciones honestas son otra puerta de enlace que usted controle, o un modo sitio a sitio admitido en ambos extremos. Ambos extremos tienen que hablarlo. Una página de producto que dice sitio a sitio no hace que un perfil OpenVPN arbitrario sea intercambiable con el túnel de otro protocolo, y forzar ese emparejamiento suele producir un túnel medio conectado que se ve bien en una página de estado.

Elija la opción que pueda describir en una frase a quien herede la red. Si la respuesta requiere mencionar una ruta de script y un patrón de texto, el diseño ya es frágil.

Haga la intención auditable

Registre el contrato fuera del dispositivo: identidad efectiva del cliente, prefijo, puerta de enlace de retorno y el campo admitido que aporta cada uno. Exporte la configuración mediante el mecanismo admitido para que una reconstrucción tenga una referencia, y verifique el servicio tras una reconexión, un reinicio y una actualización en lugar de solo tras el cambio.

Compare el resultado generado con ese registro cuando algo se rompa, en lugar de restaurar una línea sin explicación y esperar.referencia de OpenVPN 2.6 es el lugar para confirmar cómo interactúan route e iroute antes de discutir con una interfaz.

Lista de comprobación para el próximo cambio: nombre al dueño, declare el contrato en tres partes, exporte la intención y vuelva a probar después de los propios eventos del ciclo de vida del dispositivo, no después de su edición.

Artículos relacionados