Un perfil que ha funcionado durante años de repente se niega a arrancar, y el mensaje nombra una directiva que nadie recuerda haber añadido: key-method. El siguiente resultado de búsqueda sugiere añadir key-method 2 por compatibilidad, un consejo de otra época. El analizador que rechazó la línea es actual y no tiene esa opción en absoluto. Quitar la línea arregla el arranque y no cambia nada en cómo los dos pares protegen la sesión.

Esa brecha entre lo que contiene un perfil y lo que el protocolo hace realmente es todo el tema, y explica otras varias ediciones que la gente hace al mismo tiempo. También explica por qué esas ediciones suelen llegar en bloque.

El síntoma es un error de análisis, no un fallo del apretón de manos

Las opciones se leen antes de enviar ningún paquete. Un perfil con una directiva desconocida falla en esa etapa, así que el proceso nunca llega a la red y nunca produce un error de apretón de manos. La redacción suele identificar la opción y el archivo, lo que hace de este uno de los fallos más fáciles de atribuir. No intervienen paquetes, rutas ni cortafuegos.

openvpn --config /etc/openvpn/client/office.ovpn --verb 3 --log /tmp/parse.log
grep -n 'Options error' /tmp/parse.log

Si el mensaje nombra la directiva, el diagnóstico ha terminado: el archivo contiene algo que esta compilación no acepta. Si el mensaje nombra una ruta de archivo, el problema es una inclusión o una clave que falta, que es otra sección de la misma etapa de arranque.

Lo que no deberías concluir es que el cliente o el servidor necesiten un modo de protocolo más antiguo. Un fallo de análisis es un problema de vocabulario entre tu archivo y el binario, y el binario en este caso simplemente ha descartado una palabra de su vocabulario.

Directiva y formato de transmisión son dos cosas distintas

La antigua opción key-method elegía cómo se enmarcaba el intercambio de claves TLS, y el intercambio moderno es el método de varios paquetes que esa opción solicitaba. La opción desapareció porque ya no elegía nada; el formato que nombraba se convirtió en el único. Por tanto, quitar la línea deja la sesión con el mismo enmarcado que antes. Una edición de texto no puede cambiarlo en ninguna dirección.

Por eso reintroducir un binario antiguo para “restaurar” el método 2 es la reparación equivocada. No restaura nada salvo un analizador más antiguo con valores predeterminados más antiguos, y te cuesta las correcciones que vinieron después. El mismo razonamiento se aplica a debilitar una comprobación de certificado o una lista de cifrados con la esperanza de que la conexión vuelva.

Una comprobación útil es la versión y la configuración analizada, no la presencia de la palabra en el archivo:

openvpn --version | head -n 1
grep -rn 'key-method' /etc/openvpn/ 2>/dev/null

Qué quitar, y de qué archivo

Edita el archivo que el proceso en ejecución lee realmente, y solo ese archivo. En sistemas empaquetados suele ser el perfil del directorio del cliente o del servidor que indica la unidad, no una copia en tu directorio personal que guardas como referencia. Un perfil generado también puede reconstruirse a partir de una plantilla, así que un cambio hecho solo en la copia desplegada volverá tras la siguiente ejecución de aprovisionamiento.

Borra la línea obsoleta y deja en paz el punto final, los certificados, la política de cifrado y los ajustes del canal de control. Son opciones admitidas que el proceso necesita y no están implicadas en el error de análisis. Si el mismo perfil contiene otras directivas que no reconoces, comprueba cada una contra la versión que ejecutas en lugar de borrar un grupo de ellas hasta que el proceso arranque.

Después arranca la instancia prevista y lee su salida de arranque. Un arranque limpio con el oyente presente es la confirmación de que esta etapa ha terminado; una prueba de cliente después responde a otra pregunta.

Un perfil rechazado y un cliente rechazado se parecen

Dos fallos producen hilos de soporte parecidos y necesitan pruebas distintas. Un servidor que rechaza su propia configuración nunca arranca, así que ningún cliente puede conectarse a él. Un servidor que arranca bien y rechaza a un cliente está en marcha, y su registro contiene el motivo: un problema de certificado, una opción empujada que el cliente no acepta, una discrepancia de cifrado.

La opción eliminada no es un diagnóstico para el segundo caso, y recurrir a ella desperdicia la misma hora dos veces. Si el registro del cliente muestra el rechazo del servidor, lee ese rechazo; si muestra un error local, el archivo que hay que inspeccionar es el perfil del cliente. Recurrir a una directiva que ya no existe retrasa ambas investigaciones en la misma medida.

Preguntas de compatibilidad que la línea nunca respondió

Los perfiles que circulan con esta directiva suelen llevar una historia sobre una plataforma concreta, y la historia sobrevive al motivo técnico. Un cliente móvil o de escritorio sigue necesitando un perfil completo compatible: una cadena de certificados de confianza, un cifrado de datos que ambos extremos acepten, un modo de canal de control que ambos extremos implementen y ninguna directiva que rechace la compilación del cliente. Nada de eso lo decide la presencia o la ausencia de la antigua línea key-method.

La compresión es una cuestión de política aparte con la misma forma. Quitar una línea key-method no dice nada sobre si una directiva de compresión está admitida o es aceptable en tu despliegue, y las dos decisiones deben tomarse de forma independiente. Borrar varios ajustes relevantes para la seguridad a la vez hasta que algo conecte es la manera en que un perfil que funciona se convierte en uno sin explicación.

Mantén un registro breve de lo que quitaste y por qué: la opción, la versión que la rechazó y el comando que mostró el error. La siguiente persona que herede el perfil necesitará exactamente esos tres hechos, y es más barato escribirlos ahora que reconstruirlos después.

Artículos relacionados