Unitë kënne richteg ausgesinn, systemctl start kann Erfolleg mellen, an zéng Sekonnen duerno steet de Service inaktiv. Oder en restarte sech all hallef Minutt, bis d'Startlimit en stoppt. Keent vun deenen zwee Verhalen ass e Netzwierkfehler: d'Unite beschreift eng Prozessliewensdauer, déi net zum dot passt, wat de Client tatsächlech mécht. De Client kann forken an ophalen, oder d'Sessioun konfiguréieren an direkt ophalen.

Firwat d'Unite Sekonnen no engem erfollegräiche Start inaktiv gëtt

systemd leet den Zoustand aus dem Prozess of, deen en gestart huet, also ass Type= eng Behauptung iwwer dee Prozess, net Dokumentatioun. Mat Type=simple gëllt d'Unite als aktiv, soulaang de Befehl leeft, a gëtt inaktiv, wann en zeréckkënnt. E Client, deen d'Verbindung un en Hëllefsprogramm iwwergëtt an ophält, gesäit duerfir aus wéi en Absturz, och wann den Tunnel steet. Den Journal weist dann e Start-Stopp-Muster, dat sech wéi eng defekt Binär liest.

Liest den Typ vun der Unite niewent dem Verhale vum Client, ier Dir d'Netzwierkkonfiguratioun uropackt.

Wielt den Typ, deen zum Client passt

Zwee Muster decken déi meescht Vendor-CLIen of: e Befehl, deen eng Sessioun konfiguréiert an ophält, an e Befehl, deen virum Zréckkommen en Hëllefsprogramm forkt. Jiddweree brauch eng aner Uniteform.

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnect

oneshot mat RemainAfterExit=true hält d'Unite aktiv, nodeem de Befehl zeréckkënnt, wat zum Muster konfiguréieren an ophalen passt, an de Stoppbefehl gëtt dem Service en propper Ofschloss. E Client, deen forkt, behält déi selwecht Form, brauch awer Type=forking, sou datt systemd dem Kand nolauschtert. Setzt Restart=on-failure, RestartSec=30 an eng endlech StartLimitBurst, sou datt en Ausfall vum Provider net an eng Restartschleef gëtt, déi de Feeler begrueft.

Loosst ni eng iwwerwaacht Client démoniséieren

Iwwerwaacher baussent systemd stoussen op déi selwecht Mauer. En runit-Runskript, deen en démoniséierte Client start, kënnt direkt zréck bei den Iwwerwaacher, deen d'Zeréckkommen als Absturz liest an eng aner Kopie start. All Iwwerwaacher erwaart de Prozess am Virgrond ze besëtzen, sou wéi sshd -D vir bleift. Huelt de Dämon-Flag bei iwwerwaachten Befehler ewech a loosst den Iwwerwaacher d'Hannergrondsaarbecht maachen. Wrapper-Skripten, déi zeréckkommen, ier den Tunnel existéiert, verursaache déi selwecht Konfusioun.

E Prozess, deen sech selwer ofléist, ass onsiichtbar fir alles, wat hie sollt iwwerwaachen.

D'Sessioun ass eriwwer an hëlt den Tunnel mat sech

Eng Desktop-Sessioun besëtzt de Client, deen se start. Beend d'Anmeldung, an de Sessiounsbus verschwënnt an hëlt den Tunnel mat, wat erkläert, firwat d'Verbindung vun engem grafesche Client dacks fällt, wann dat lescht Fënster zougeet. Serveren sollte eng Systemunite oder e NetworkManager-Profil benotzen, dee vun eleng eropkënnt. Eng Benotzerunite gëtt just Sënn, wann den Tunnel mat der Anmeldung soll ophalen, also bind se un d'Zil vun der grafescher Sessioun a schreift dat an hir Beschreiwung.

De Servicebenotzer ass déi aner Hallschent vum selwechte Problem. E Schlëssel am Besëtz vum root mat Modus 0600 ass onliesbar fir eng Unite, déi ënner engem anere Kont leeft, egal wat sudo an Ärer Shell erreecht huet.

systemctl cat openvpn-server@work
sudo chown -R openvpn:network /etc/openvpn/server
sudo find /etc/openvpn -type f -perm /077 -ls

Setzt d'Ofhängeg no, wann d'Adress existéiert

Wann en Dämon sech un eng Tunneladress bind, déi nach net erstallt ass, geet en mat Cannot assign requested address eraus. D'Reparatur ass eng explizit Reiefolleg, keng Widderhuelungsschleef.

[Unit]
After=network.target [email protected]
Requires=sys-devices-virtual-net-wg0.device

After= setzt d'Aarbechten an d'Reiefolleg, wärend Requires= op der Gerätsunite den Ofhängegen un d'Existenz vum Interface bindet, wat méi staark ass wéi just op den Netzwierkziel ze waarden. Luet de Manager no der Ännerung nei an start de ofhängege Service nei, a liest dann säin Journal, amplaz unzehuelen, d'Reiefolleg hätt gegraff. Schéckt dem Client seng Ausgab mam StandardOutput=journal oder enger Logoptioun an den Journal, well eng iwwerwaacht Client, déi an eng Fichier schreift, déi keen opmécht, gesäit genee sou aus wéi eng, déi ni gestart gouf.

Start dann eng Kéier nei a bestätegt, datt d'Unite aktiv ass, nodeem d'Tunnelgerät erschéngt. Eng Reparatur, déi just mat systemctl start gepréift gouf, huet d'Startreiefolleg net getest, déi se sollt reparéieren.

Ähnlech Artikelen