Un script de desconnexió sol fallar per un motiu: s’adreça al propietari equivocat. Un túnel gestionat per la GUI comunitària de OpenVPN pertany a la sessió d’aquesta GUI, un túnel iniciat per un servei de Windows pertany al servei, i OpenVPN Connect no pertany a cap dels dos. Recorreu aquestes comprovacions en ordre i atureu-vos quan el propietari no sigui clar. Enviar una ordre kill perquè el propietari era ambigu és com una desconnexió d’un sol perfil es converteix en una caiguda de tot el lloc.

Per a una connexió gestionada per la GUI, l’ordre útil és un missatge a la GUI, no un senyal a openvpn.exe.

Primer, identifiqueu el propietari

Mireu quin programa mostra realment l’estat connectat abans d’escriure res. Una icona a la safata significa que la sessió de la GUI en és la propietària. Una entrada de servei significa que ho és el servei. Una finestra d’aplicació separada amb la seva pròpia llista de perfils no significa cap de les dues coses, i s’hi aplica la seva pròpia interfície específica de versió.

Comproveu també el compte i la sessió d’escriptori. Una tasca programada que s’executa com un altre usuari, o en una sessió no interactiva, no s’ha de pressuposar que controli la GUI que veu una persona connectada. Aquesta discrepància produeix una ordre que acaba neta i no canvia res, que és el tipus de fallada més car de depurar a partir d’un registre.

Després envieu la desconnexió pròpia del propietari

Amb la GUI instal·lada a la ruta de l’exemple i un perfil anomenat office, l’ordre sencera és una línia:

"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command disconnect office

Substituïu-la per la vostra ruta d’instal·lació real i el nom exacte de la configuració, incloent-hi les majúscules tal com les mostra la GUI. La documentació d’ordres del projecte llista els controls de GUI admesos, i aquest exemple pertany només a l’OpenVPN GUI — no és una ordre per a qualsevol aplicació que porti OpenVPN al nom.

Per a un túnel propietat d’un servei, el control correcte és el servei, no el binari de la GUI. Inspeccioneu el servei instal·lat i els perfils que gestiona abans d’aturar res, perquè una aturada pot fer caure diversos túnels alhora i no obtindreu cap resultat per perfil.

Comproveu que no caigui res més

La GUI també documenta una ordre disconnect_all, i el seu abast és exactament el motiu pel qual és l’eina equivocada per a un script que només ha d’aturar office. Si us tenta utilitzar-la per simplicitat, pregunteu què més hi ha connectat en aquella màquina i com se n’adonarà l’usuari.

taskkill /F /IM openvpn.exe és pitjor per dues raons. Selecciona processos pel nom de l’executable i força la terminació, de manera que no expressa ni un nom de perfil ni la seqüència normal de desconnexió del propietari. Anomenar-ho apagada ordenada amaga tots dos problemes darrere d’un sol estat de sortida.

Prengueu el camí que prengueu, verifiqueu l’abast de l’impacte abans del canvi: llisteu els perfils connectats, anoteu quins han de sobreviure i torneu-los a comprovar després.

Confirmeu l’estat, no el codi de sortida

Després de sol·licitar la desconnexió, llegiu l’estat de la connexió anomenada a través del seu propietari en lloc de confiar en el valor de retorn de l’ordre. Si el pas següent necessita la xarxa després del desmuntatge, espereu aquest canvi d’estat amb un temps d’espera explícit en comptes de suposar que la neteja ha acabat quan el procés ha tornat. Un script que va a contrarellotge amb el desmuntatge fallarà de manera intermitent i se’n culparà la VPN.

Si l’estat no canvia mai, el propietari probablement no és el que heu adreçat. Torneu a comprovar la sessió i el compte abans d’escalar a una ordre més forta.

Què cal posar al registre

Registreu el nom del perfil, el propietari adreçat i el context d’inici, a més de l’estat resultant. No aboqueu la configuració completa ni les credencials al registre de la tasca, i no registreu la línia d’ordres si conté una ruta a un fitxer amb secrets.

Un missatge d’error que anomena el perfil i el context és prou perquè la persona següent reprodueixi el problema. Un registre que només anota un codi de sortida genèric els torna al començament, i és just allí on les conjectures tornen a començar.

Articles relacionats