Ienheden kinne der goed útsjen, systemctl start kin súkses melde, en tsien sekonden letter stiet de tsjinst ynaktyf. Of hy start elke heale minút opnij oant de startlimyt him stoppet. Gjin fan beide gedragingen is in netwurkflater: de ienheid beskriuwt in proseslibben dat net past by wat de klient eins docht. De klient kin forkje en ôfslute, of de sesje konfigurearje en fuortendaliks ôfslute.

Wêrom't de ienheid sekonden nei in slagge start ynaktyf wurdt

systemd liedt de tastân ôf fan it proses dat er start hat, dat Type= is in bewearing oer dat proses, gjin dokumintaasje. Mei Type=simple jildt de ienheid as aktyf wylst it kommando rint en wurdt ynaktyf as it weromkomt. In klient dy't de ferbining oerdraacht oan in helper en ôfslút liket dêrom op in crash, sels as de tunnel oerein is. It sjoernaal lit dan in start-stop-patroan sjen dat lêst as in defekt binêre bestân.

Lês it type fan de ienheid njonken it gedrach fan de klient foardat jo de netwurkkonfiguraasje oanreitsje.

Kies it type dat by de klient past

Twa patronen dekke de measte CLI's fan leveransiers: in kommando dat in sesje konfigurearret en ôfslút, en in kommando dat foar it weromkommen in helper forket. Elk hat in oare foarm fan ienheid nedich.

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

oneshot mei RemainAfterExit=true hâldt de ienheid aktyf neidat it kommando weromkomt, wat past by it patroan konfigurearje-en-ôfslute, en it stopkommando jout de tsjinst in skjinne ôfsluting. In forkjende klient hâldt deselde foarm mar hat Type=forking nedich sadat systemd it bern folget. Set Restart=on-failure, RestartSec=30 en in einige StartLimitBurst, sadat in steuring by de provider net in werstartlus wurdt dy't de flater bedobbet.

Lit in begeliede klient nea daemonisearje

Tafersjochhâlders bûten systemd rinne tsjin deselde muorre oan. In runit-runskript dat in daemonisearre klient start, komt fuortendaliks werom by de tafersjochhâlder, dy't de weromkomst as in crash lêst en noch in kopy start. Eltse tafersjochhâlder ferwachtet it proses op de foargrûn te besitten, sa't sshd -D foarop bliuwt. Helje de daemonflagge fuort by begeliede kommando's en lit de tafersjochhâlder it eftergrûnwurk dwaan. Wrapper-skripts dy't weromkomme foardat de tunnel bestiet, soargje foar deselde betizing.

In proses dat himsels loskeppelt is ûnsichtber foar alles dat him bewakje moast.

De sesje einiget en nimt de tunnel mei

In buroblêdsesje besit de klient dy't er start. Einigje de oanmelding en de sesjebus ferdwynt, en nimt de tunnel mei, wat ferklearret wêrom't de ferbining fan in grafyske klient faak útfalt as it lêste finster slút. Tsjinners moatte in systeemienheid of in NetworkManager-profil brûke dat fansels omheech komt. In brûkerienheid hat allinne sin as de tunnel mei de oanmelding einigje moat, dus byn it oan it doel fan de grafyske sesje en neam dat yn syn beskriuwing.

De tsjinstbrûker is de oare helte fan itselde probleem. In kaai yn eigendom fan root mei modus 0600 is ûnlêsber foar in ienheid dy't ûnder in oar akkount rint, wat sudo yn jo shell ek berikt hat.

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

Oarderje ôfhinkliken neidat it adres bestiet

As in daemon him bynt oan in tunneladres dat noch net makke is, giet er fuort mei Cannot assign requested address. De reparaasje is in eksplisite oardering, gjin werbesykjende lus.

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

After= oarderet de taken, wylst Requires= op de apparaatienheid de ôfhinklike bynt oan it bestean fan 'e ynterface, wat sterker is as allinne op it netwurkdoel wachtsje. Laad de behearder opnij nei it bewurkjen en start de ôfhinklike tsjinst opnij, en lês dan syn sjoernaal ynstee fan oan te nimmen dat de oarder wurke hat. Stjoer de útfier fan de klient nei it sjoernaal mei StandardOutput=journal of in logopsje, want in begeliede klient dy't skriuwt yn in bestân dat nimmen iepenet liket krekt as ien dy't nea start is.

Start dan ien kear opnij en befêstigje dat de ienheid aktyf is neidat it tunnelapparaat ferskynt. In reparaasje dy't allinne mei systemctl start ferifiearre is, hat de opstartoarder net test dy't er reparearje moast.

Relatearre artikelen