La configuración de OpenVPN del router se revierte tras reiniciar: repara el generador
El firmware que reconstruye su configuración de OpenVPN en cada arranque descarta tus ediciones. Aplica un parche al enganche del generador y luego compara el archivo generado tras un reinicio.
El firmware de un router doméstico o un NAS suele reconstruir su configuración de OpenVPN en cada arranque, así que una directiva que añades sobrevive exactamente hasta el siguiente arranque. Lo mismo ocurre con las claves escritas en un formulario web, donde el valor guardado puede volver corrupto tras guardar. Ninguno de estos síntomas significa que el cambio se haya rechazado. Significa que la edición aterrizó en un archivo que el firmware trata como salida, y que el lugar duradero está un paso antes en la secuencia de arranque.
Por qué se regenera el archivo editado
Un script de inicio ensambla la configuración del servidor a partir de una plantilla y luego lanza el demonio, lo que convierte el archivo renderizado en un artefacto de compilación en lugar de una fuente. Todo lo que se añade después del inicio es invisible para la siguiente ejecución de ese script. El segundo patrón es más sutil: las entradas de clave y certificado en la interfaz web se guardan en forma escapada, y guardar el formulario puede empujar ese texto escapado al archivo que lee el demonio. En cualquier caso, la configuración renderizada es el lugar equivocado para hacer un cambio duradero.
Mira qué escribe la secuencia de arranque y cuándo lo escribe. La respuesta casi siempre es un script dentro del directorio init o de inicio automático del firmware.
Inserta la directiva donde el script construye el archivo
Los equipos QTS regeneran la configuración del servidor OpenVPN dentro del script init que arranca el demonio, así que la edición tiene que ocurrir ahí. Añade el anexo justo antes del comando de arranque en lugar de editar el archivo generado.
sed -i '/daemon_mgr/i echo client-config-dir clientconfig >>/etc/openvpn/server.conf' /etc/init.d/vpn_openvpn.sh
grep -c client-config-dir /etc/openvpn/server.confAncla la inserción en un comando que no se mueva, porque los números de línea cambian entre compilaciones. Como el propio script init se reemplaza durante el arranque, el cambio debe reemitirse desde el enganche de inicio automático del firmware cada vez que arranca el sistema. Tras un reinicio, cuenta las apariciones en el archivo generado: una línea significa que el parche funcionó, mientras que dos significan que el enganche se ejecuta más de una vez. Investiga la ejecución doble por separado, porque no es la misma falla que un cambio que desapareció.
Repara un formulario que guardó claves escapadas
En las páginas de estilo Asus, los campos de certificado y clave muestran texto escapado, y guardar tras un ajuste no relacionado puede devolver esas entidades al disco. Trabaja desde una copia decodificada y guarda solo una vez, cuando todas las ediciones estén listas.
openssl dhparam -out dh2048.pem 2048
grep -n "BEGIN DH PARAMETERS" dh2048.pemAl cambiar un conjunto de parámetros nuevo, pega solo la carga base64 si la etiqueta pide el cuerpo de la clave, y conserva las líneas de armadura solo cuando el campo espera un bloque PEM completo. Recuperar una página ya guardada en su forma escapada suele significar vaciar los campos afectados y aplicar, lo que permite al firmware reconstruirlos. Genera cualquier cosa por encima de 2048 bits en una estación de trabajo, porque el suministro de entropía del router hace la operación lenta y a veces poco fiable. Guarda el archivo de parámetros en un lugar al que puedas llegar tras un restablecimiento de fábrica.
Vuelve a comprobar tras las actualizaciones
Las actualizaciones de firmware reemplazan los scripts init y pueden borrar el directorio de inicio automático, así que el parche debe reinstalarse y probarse de nuevo. Compara el archivo regenerado con la copia que guardaste y confirma que la directiva está exactamente una vez. Un valor visible en la interfaz web no es prueba de que el demonio lo haya recibido, porque la página lee campos guardados. Escribe el comando del parche y la versión del firmware en las notas de mantenimiento para que la próxima actualización las arrastre.
Después conecta un cliente y lee el registro del servidor para la opción enviada. Un ajuste que solo existió alguna vez en un formulario es un ajuste que nadie ha probado.