El servicio OpenVPN falla en un perfil que la GUI abre: cinco comprobaciones
El mismo perfil, otro lanzador. Compruebe el directorio de trabajo, la cuenta del servicio, el atributo del archivo cifrado, el propietario y luego el contenedor.
Dos lanzadores abren el mismo perfil en una máquina, y solo la GUI se conecta. El archivo está intacto y el instalador probablemente esté bien; lo que difiere es el contexto que cada lanzador da a openvpn.exe. El directorio de trabajo, la identidad de la cuenta y los atributos del archivo viajan todos con ese contexto. Compruébelos en ese orden y deténgase en el primero que explique el error.
Confirme qué lanzador falla
Empiece probando la división. Si la GUI se conecta y el servicio no con la misma ruta de perfil, el archivo es legible por alguien y la pregunta pasa a ser quién lo lee y desde dónde. Si ambos fallan, el perfil está roto y nada de esto se aplica. Anote el nombre del servicio y el perfil exacto que se le indicó cargar.
Un servicio apuntado a su propio directorio de inicio automático puede que no cargue el archivo que tiene abierto en un editor. Compare la ruta de la configuración del servicio con la ruta de la GUI, carácter por carácter, porque un nombre de carpeta final o una letra de unidad distinta basta para llevarle a la rama equivocada.
Dónde se resuelven las rutas relativas
Un perfil que hace referencia a ca.crt o a un script auxiliar solo por su nombre pide una búsqueda relativa a donde quiera que esté el proceso. La GUI empieza en la carpeta de configuración, así que esos nombres se resuelven. Un servicio iniciado por el administrador de servicios no tiene ese punto de partida, y la búsqueda falla antes de que se lea ningún certificado. Por eso el mismo perfil funciona en un lanzador y no en el otro.
Dé al contenedor un directorio donde empezar, o haga absoluta cada referencia. Reproducir el contexto de la GUI en una línea de comandos se ve así:
openvpn --cd "C:\VPN\profiles\office" --config "C:\VPN\profiles\office\office.ovpn"
Subir la verbosidad de ese comando muestra la ruta exacta que se intentó. Hágalo antes de cambiar permisos, porque un archivo que falta y una lectura denegada necesitan correcciones distintas. El registro predeterminado no los distingue. Un indicador extra ahorra una hora de conjeturas.
Cuando la identidad del servicio no puede leer
Un servicio se ejecuta como identidad del sistema, no como usted. Una ACL que concede control total a su usuario y a nadie más falla allí mientras funciona perfectamente en su sesión. Un perfil guardado en una unidad asignada o en un recurso compartido autenticado falla por la misma razón. Confirme los permisos del archivo antes de mirar cualquier otra cosa.
La comprobación es una lectura de los permisos efectivos más una lectura intentada como la identidad del servicio. Ejecute la primera parte desde un símbolo del sistema elevado:
icacls "C:\VPN\profiles\office\office.ovpn"
Luego intente la misma lectura como la identidad del servicio, por ejemplo con psexec -s -i de Sysinternals, y observe si el archivo se abre. Si no se abre, ninguna corrección de ruta ayudará. Corrija la ACL o mueva el perfil a una ubicación que la identidad del servicio pueda leer.
El cifrado a nivel de archivo es el segundo caso, más raro. Un perfil marcado con el atributo Encrypting File System se descifra de forma transparente para el usuario que lo cifró y sigue siendo ilegible para una cuenta de servicio. Por eso el mismo archivo se abre en su editor y no bajo el servicio.
El atributo es visible desde un símbolo del sistema elevado, y comprobarlo no abre el perfil. Ejecute ambos comandos y lea la salida:
cipher /s:"C:\VPN\profiles\office"
attrib "C:\VPN\profiles\office\office.ovpn"
Borrar el atributo hace que el archivo sea legible, y también elimina la protección que llevaba. Si el perfil tiene que seguir protegido, ponga el material secreto donde la identidad del servicio tenga una concesión explícita en lugar de confiar en el cifrado por usuario. Esa disposición sobrevive a un cambio de contraseña, y hace que el acceso sea revisable por alguien distinto de la persona que cifró el archivo.
Decidir quién es dueño del túnel
La GUI puede pedir una contraseña y puede leer un certificado de su almacén de usuario. El servicio no puede hacer ninguna de las dos cosas, así que un perfil que depende de un secreto interactivo nunca arrancará sin supervisión, por mucho que se corrijan las rutas. Ese límite es una decisión de diseño, no un defecto que haya que sortear. Elija un solo propietario antes de cambiar cualquier otra cosa.
Si el túnel tiene que estar levantado antes del inicio de sesión, dé al servicio una fuente de credenciales sin supervisión y su propia copia del perfil. Si solo necesita existir mientras usted está en el escritorio, manténgalo en la GUI y quite la copia del servicio. Ambos a la vez es la configuración que produce conflictos de adaptador y rutas duplicadas.
Ese conflicto suele diagnosticarse como un error de configuración en lugar de como dos propietarios peleando por un adaptador. El registro de eventos mostrará un proceso que no logra abrir el dispositivo TAP, lo que parece un problema de permisos y no lo es. Cuente primero los propietarios.
Qué lanza realmente el contenedor del servicio
El punto de entrada del servicio es un pequeño contenedor que lee sus propios parámetros guardados y luego inicia openvpn.exe. Cuando la línea de comandos del registro de eventos no coincide con su expectativa, esos valores son lo que hay que inspeccionar. Reinstalar los devuelve a los valores predeterminados y destruye la evidencia. Léalos primero.
Los valores viven en el registro bajo la clave propia del servicio, y sc qc muestra la ruta del binario que lanzará el administrador de servicios. Compare esa ruta con la configuración guardada del contenedor antes de editar cualquiera de las dos.
Sustituir el contenedor por un script que usted controle es más invasivo, pero pliega la línea de comandos efectiva en un solo archivo legible. Termine con un reinicio y luego lea el registro por perfil hasta que aparezca la primera línea de inicio correcta. Un estado de servicio en ejecución solo significa que el contenedor no ha salido, lo que también es cierto cuando su hijo murió de inmediato.