Pokrećete OpenVPN iz ljuske s konfiguracijskom datotekom, a terminal stoji bez ikakvog izlaza. Nema bannera, nema greške, nema znaka za unos. Instinkt kaže da je pokretanje neuspješno, pa pokrećete još jednu kopiju, zatim još jednu, i mašina završi s nekoliko napola konfiguriranih instanci. Prije svega toga provjerite profil za direktivu koja je već preusmjerila dnevnik negdje drugdje. Tišina je svojstvo konzole, ne procesa.

Tišina ima dva vrlo različita objašnjenja

Prvo je da proces radi dobro i piše u datoteku koju ne gledate. Drugo je da je odmah izašao s greškom zapisanom u istoj datoteci.

Oba ostavljaju prazan terminal, a jedno pitanje ih razdvaja: postoji li sada proces i što je u datoteci u koju mu je naređeno da piše. Odgovorite na to prije nego ponovno dirnete konfiguraciju. Ponovno pokretanje radi izlaza je način na koji dvije instance završe u sukobu oko jednog tunelskog uređaja i istog porta, što stvara greške koje nemaju veze s izvornim problemom.

Nađite direktivu, zatim nađite proces.

ps -o pid,args= -C openvpn
grep -nE '^\s*(log|log-append|cd|daemon|verb)\b' /etc/openvpn/server/server.conf

Nađite odredište koje koristi pokrenuti proces

Čitajte profil s kojim je proces stvarno pokrenut, ne onaj koji ste uređivali. Instanca kojom upravlja servis obično učitava drugu putanju i radi u drugom radnom direktoriju, pa se relativno ime datoteke razrješava negdje gdje niste očekivali.

Eksplicitna direktiva cd čini tu razliku oštrijom, jer se relativna putanja pomiče sa promjenom direktorija. Ako ste naslijedili ovu konfiguraciju, datoteka može biti na mjestu gdje je sada nitko ne bi tražio.

Usporedite vrijeme izmjene datoteke s trenutkom pokretanja. Dnevnik od prošlog tjedna dokaz je o prošlom tjednu. Zatim pročitajte zadnje retke datoteke koja se promijenila i uzmite ono što je tamo kao poruku o pokretanju koju ste propustili.

log nasuprot log-append: dokaz i brisanje

log-append dodaje onome što je već u datoteci. log otvara datoteku za pisanje i skraćuje je, pa prebacivanje između njih može izbrisati pokretanje koje ste htjeli pročitati.

Ako je netko promijenio direktivu tijekom otklanjanja greške, prethodni dokaz je već nestao i veličina datoteke izgledat će sumnjivo mala. To je vrijedno znati prije nego usporedite dva pokretanja i zaključite da se nešto promijenilo. Obrišite dnevnik namjerno ili ga zadržite, ali znajte što ste učinili. Dokaz koji ste namjerno uklonili lakše je objasniti od dokaza koji ste slučajno izgubili.

Nijedna opcija ne stvara nedostajuće roditeljske direktorije i nijedna ne daje pristup kroz dozvole datotečnog sustava ili servisni sandbox. Putanja koja u konfiguraciji izgleda ispravno može ipak biti nezapisiva za račun pod kojim se daemon izvršava, a tada daemon može pasti prije nego što uspije bilo što prijaviti. Provjerite postoji li direktorij i tko je njegov vlasnik prije nego pretpostavite da je problem u imenu datoteke.

Kada servisni omotač uhvati izlaz

Pod systemd-om standardni izlaz i greška idu u dnevnik osim ako eksplicitna datotečna direktiva nema prednost, a vendor omotač ih može uhvatiti posve drugdje.

Zato se isti profil ponaša drugačije iz ljuske i iz unit-a. Okruženje unit-a, njegov radni direktorij i njegovi standardni tokovi razlikuju se od vaše interaktivne ljuske. Relativna putanja može se razriješiti u jednom kontekstu i ne stići nikamo u drugom. Čitajte definiciju unit-a kada se njih dvoje ne slažu, ne profil.

Usporedite dva načina pokretanja umjesto da zaključite da je jedan od njih pokvaren. Pročitajte naredbeni redak unit-a i njegovo okruženje, zatim pročitajte dnevnik za isti vremenski raspon. Ako omotač preusmjerava izlaz u vlastitu datoteku, ta je datoteka sada vaš dnevnik i OpenVPN direktive nemaju veze s tim kamo su poruke otišle.

Pojačajte opširnost tek nakon što je možete čitati

Povećanje opširnosti prije pronalaska odredišta samo proizvodi više teksta na mjestu koje ne gledate.

Kad znate gdje izlaz završava, umjerena razina pokazuje da se profil raščlanjuje i da se pokušava uspostaviti veza. Dvije ili tri dovoljne su za problem s pokretanjem. Više razine zaslužuju svoje mjesto kad je kvar detalj pregovaranja, a i brzo povećavaju datoteku.

Zatim pročitajte stvarnu grešku. Tihi terminal ništa ne dokazuje o tome je li tunel podignut, a kvar zabilježen u datoteci je onaj koji vrijedi popraviti.

Povezani članci