OpenVPN diu active (exited)? Trobeu la instància que heu iniciat
active (exited) no és un túnel, sinó una tasca /bin/true d'una sola vegada que RemainAfterExit manté activa. Trobeu la instància, llegiu el fitxer al qual apunta i després el seu registre.
Comproveu el túnel, executeu systemctl status openvpn i obteniu active (exited) sense Main PID i amb una llista de processos buida. La lectura natural és que el servei s'ha iniciat i ha mort, així que obriu la unitat, trobeu /bin/true i concloeu que el paquet està trencat. A l'empaquetat de Debian aquest estat és l'embolcall treballant tal com es va dissenyar, i el túnel viu en una de les unitats d'instància que inicia. La unitat agregada mai no us dirà quina instància l'ha construïda.
Què significa realment active (exited) en aquesta unitat
La unitat empaquetada és d'una sola vegada: el seu ExecStart és /bin/true i RemainAfterExit=yes és el que manté una unitat acabada reportada com a active (exited). Traieu aquesta directiva i la mateixa tasca /bin/true reeixida acaba en inactive (dead), que és exactament l'estat que la gent espera i llegeix malament en la direcció contrària. L'ordre és un marcador de posició i la unitat informa sobre feina que fan altres unitats. Res d'aquest arranjament no està trencat, i substituir /bin/true canvia el contracte d'empaquetat, no el túnel.
L'embolcall delega. Inicia les unitats d'instància que forneix la configuració del paquet o el seu generador de systemd, i per això una llista de processos buida no demostra res sobre el túnel. Quan no se selecciona cap instància, l'embolcall igualment té èxit i igualment no inicia res. L'estat respon si l'embolcall s'ha executat, no si existeix un túnel.
Llegiu les tres línies de la sortida de status en lloc de la paraula entre parèntesis. Loaded anomena el fitxer d'unitat que systemd ha llegit, Active porta la marca de temps de l'última execució reeixida i l'absència de Main PID encaixa amb una tasca d'una sola vegada ja acabada. Aquestes tres línies també són com distingir aquest embolcall d'un servei que va caure un segon després d'iniciar-se.
Llisteu les unitats abans de tornar a llegir l'estat
Pregunteu a systemd què existeix abans de preguntar què s'executa. Una plantilla pot estar instal·lada mentre no s'instancia cap unitat, i només una unitat instanciada porta un túnel. Comenceu pel conjunt carregat:
systemctl list-units 'openvpn*'
Aquesta llista és el que systemd ha carregat en aquest moment, i és el més semblant a un inventari de túnels. Els fitxers d'unitat instal·lats responen una altra pregunta, i aquella llista encara mostra una plantilla quan no s'ha instanciat res:
systemctl list-unit-files 'openvpn*'
Llegiu les dues llistes juntes, perquè una plantilla a la segona i una instància a la primera són respostes diferents. Una plantilla que existeix i una instància que s'executa no són el mateix fet, i només la segona significa un túnel. Els dissenys de paquet també difereixen entre distribucions i versions d'OpenVPN. Una plantilla openvpn@ més antiga, una parella separada de client i servidor i un embolcall de distribució poden ser tots legítims en el seu propi empaquetat.
Adapteu-vos a la vostra màquina i no al tutorial que heu trobat. El nom d'instància a la sortida d'algú altre pot ser office mentre el vostre és home o work. El que es transfereix és el mètode, no la cadena.
Seguiu el nom d'instància fins al fitxer que llegeix
A la plantilla de client upstream el directori de treball de la unitat és /etc/openvpn/client i la seva ordre hi pren %i.conf, així que openvpn-client@office llegeix /etc/openvpn/client/office.conf. Confirmeu aquesta correspondència a la unitat instal·lada en lloc de confiar en l'exemple, perquè la plantilla que teniu pot ser més antiga o una reescriptura de la distribució:
systemctl cat [email protected]
Llegiu els drop-in que apareixen al peu d'aquella sortida, perquè un fitxer sota .d/ pot canviar ExecStart, el directori de treball o el camí de configuració. Un perfil que heu baixat com a office.ovpn no és el fitxer que obre la instància. Aquest buit és la raó habitual que un error anomeni un camí que mai no heu editat.
Els camins relatius dins del perfil són la trampa següent. Moure el fitxer principal deixant les referències ca, cert i key relatives intercanvia un error de fitxer absent per un altre error de fitxer absent. El segon apunta a un fitxer que estàveu segur que existia, i per això el directori del perfil importa més que el nom del fitxer.
Inicieu-la i després llegiu el registre d'aquesta instància
Inicieu la instància que acabeu d'inspeccionar, perquè el registre de la unitat agregada no contindrà els errors del túnel. Després llegiu el registre d'aquesta arrencada i busqueu en aquest ordre un error de configuració, un error d'accés a fitxer i un error de connexió, perquè cadascun falla en una etapa diferent de l'inici.
sudo systemctl start [email protected]
journalctl -u [email protected] -b
Iniciar i habilitar són decisions separades: start executa la unitat ara, enable prepara la propera arrencada i enable --now fa les dues coses en un pas. daemon-reload rellegeix les definicions d'unitat i no reinicia un procés en marxa ni aplica un perfil editat. Després de canviar el perfil, reinicieu la instància, perquè això és el que rellegeix el fitxer.
No poseu un segon gestor al mateix túnel
NetworkManager i els gestors de sessió d'OpenVPN 3 tenen el seu propi estat de connexió, i una instància de systemd al costat d'un d'ells posa dos propietaris al mateix túnel. El símptoma és un túnel que puja i se substitueix segons després, o un que es nega a quedar-se aturat. Trieu el gestor que la vostra distribució documenta per a l'escriptori i useu systemd deliberadament en un servidor.
Comproveu si ja hi ha un propietari abans d'iniciar una instància. Quan un applet d'escriptori mostra la connexió, la instància que inicieu hi competeix en lloc de completar-la. Desactiveu el gestor que no feu servir en lloc d'executar tots dos i esperar que l'ordre es mantingui. Aquest conflicte també explica registres on un túnel s'estableix i després es desmunta per un procés que mai no heu iniciat.
Responeu la pregunta original amb el nom de la instància, el fitxer que ha llegit i la línia de registre que ha fallat. Les notes d'integració amb systemd d'OpenVPN descriuen el disseny de la plantilla i la correspondència de fitxer per la qual es resol el nom d'instància.