Provjeravate tunel, pokrenete systemctl status openvpn i dobijete active (exited) bez Main PID-a i s praznim spiskom procesa. Prirodno čitanje je da je servis pokrenut i umro, pa otvorite unit, nađete /bin/true i zaključite da je paket pokvaren. U Debian pakovanju to stanje je wrapper koji radi kako je dizajniran, a tunel živi u jednoj od instance jedinica koje pokreće. Zbirna jedinica vam nikada neće reći koja instanca ju je izgradila.

Šta active (exited) zapravo znači na ovoj jedinici

Pakirana jedinica je jednokratni zadatak: njen ExecStart je /bin/true, a RemainAfterExit=yes je ono što završenu jedinicu drži prijavljenom kao active (exited). Uklonite tu direktivu i isti uspješni /bin/true zadatak završava u inactive (dead), što je tačno stanje koje ljudi očekuju i pogrešno čitaju u suprotnom smjeru. Komanda je samo zamjenski element, a jedinica izvještava o poslu koji obavljaju druge jedinice. Ništa u tom rasporedu nije pokvareno, a zamjena /bin/true mijenja ugovor pakovanja, a ne tunel.

Wrapper delegira. Pokreće instance jedinica koje daje konfiguracija paketa ili njen systemd generator, zato prazan spisak procesa ništa ne dokazuje o tunelu. Kada nije odabrana nijedna instanca, wrapper i dalje uspijeva i i dalje ne pokreće ništa. Stanje odgovara na pitanje da li je wrapper radio, a ne da li tunel postoji.

Čitajte tri reda izlaza status, a ne riječ u zagradama. Loaded navodi unit datoteku koju je systemd pročitao, Active nosi vremensku oznaku posljednjeg uspješnog pokretanja, a odsutni Main PID odgovara završenom jednokratnom zadatku. Ta tri reda su i način da ovaj wrapper razlikujete od servisa koji se srušio sekundu nakon pokretanja.

Izlistajte jedinice prije nego što ponovo pročitate status

Pitajte systemd šta postoji prije nego što pitate šta radi. Šablon može biti instaliran dok nijedna instanca nije stvorena, a samo stvorena jedinica nosi tunel. Počnite s učitanim skupom:

systemctl list-units 'openvpn*'

Taj spisak je ono što je systemd učitao u ovom trenutku i to je najbliže inventaru tunela. Instalirane unit datoteke odgovaraju na drugo pitanje, a taj spisak i dalje pokazuje šablon kada ništa nije stvoreno:

systemctl list-unit-files 'openvpn*'

Čitajte oba spiska zajedno, jer šablon u drugom i instanca u prvom su različiti odgovori. Šablon koji postoji i instanca koja radi nisu ista činjenica, a samo drugo znači tunel. Rasporedi paketa se razlikuju i po distribucijama i po verzijama OpenVPN-a. Stariji openvpn@ šablon, odvojeni par client i server i distribucijski wrapper mogu svi biti legitimni u vlastitom pakovanju.

Prilagodite se svom računaru, a ne tutorijalu koji ste našli. Ime instance u tuđem izlazu može biti office dok je vaše home ili work. Prenosi se metoda, a ne string.

Pratite ime instance do datoteke koju čita

U upstream client šablonu radni direktorij jedinice je /etc/openvpn/client i njena komanda odatle uzima %i.conf, pa openvpn-client@office čita /etc/openvpn/client/office.conf. Potvrdite to mapiranje na instaliranoj jedinici umjesto da vjerujete primjeru, jer šablon koji imate može biti stariji ili distribucijska prepravka:

systemctl cat [email protected]

Čitajte drop-in datoteke koje se pojavljuju na dnu tog izlaza, jer datoteka pod .d/ može promijeniti ExecStart, radni direktorij ili putanju konfiguracije. Profil koji ste preuzeli kao office.ovpn nije datoteka koju instanca otvara. Taj razmak je uobičajen razlog zašto greška navodi putanju koju nikada niste uređivali.

Relativne putanje unutar profila su sljedeća zamka. Premještanje glavne datoteke dok reference ca, cert i key ostaju relativne zamjenjuje grešku nestale datoteke drugom greškom nestale datoteke. Druga pokazuje na datoteku za koju ste bili sigurni da postoji, zato je direktorij profila važniji od imena datoteke.

Pokrenite je, pa pročitajte dnevnik te instance

Pokrenite instancu koju ste upravo pregledali, jer dnevnik zbirne jedinice neće sadržavati greške tunela. Zatim pročitajte dnevnik za ovo podizanje i tražite tim redom grešku konfiguracije, grešku pristupa datoteci i grešku veze, jer svaka pada u drugoj fazi pokretanja.

sudo systemctl start [email protected]
journalctl -u [email protected] -b

Pokretanje i omogućavanje su odvojene odluke: start izvršava jedinicu sada, enable uređuje sljedeće podizanje, a enable --now radi oboje u jednom koraku. daemon-reload ponovo čita definicije jedinica i ne restartuje pokrenuti proces niti primjenjuje uređeni profil. Nakon promjene profila restartujte instancu, jer to ponovo čita datoteku.

Ne stavljajte drugi menadžer na isti tunel

NetworkManager i menadžeri sesija OpenVPN 3 posjeduju vlastito stanje veze, a systemd instanca pored jednog od njih stavlja dva vlasnika na isti tunel. Simptom je tunel koji se digne i nekoliko sekundi kasnije bude zamijenjen, ili onaj koji odbija ostati zaustavljen. Odaberite menadžer koji vaša distribucija dokumentuje za radnu površinu i svjesno koristite systemd na serveru.

Provjerite postojećeg vlasnika prije pokretanja instance. Kada desktop applet prikazuje vezu, instanca koju pokrenete se s njim takmiči umjesto da ga dovrši. Onemogućite menadžer koji ne koristite umjesto da pokrećete oba i nadate se da će redoslijed ostati. Taj sukob objašnjava i dnevnike u kojima se tunel uspostavi i zatim razori procesom koji nikada niste pokrenuli.

Odgovorite na izvorno pitanje imenom instance, datotekom koju je pročitala i linijom dnevnika koja je pala. OpenVPN-ove bilješke o systemd integraciji opisuju raspored šablona i mapiranje datoteke kroz koje se ime instance razrješava.

Povezani članci