Jedinica -.mount je maskirana: OpenVPN klijent se neće pokrenuti
Zaostala datoteka -.mount u /run/systemd/system maskira jedinicu korijenskog montiranja, pa svaka jedinica kojoj treba datotečni sistem padne prije nego što se OpenVPN pokrene.
Vaša usluga padne prije nego što se OpenVPN uopće pokrene, a greška govori o jedinici montiranja koju nikada niste podesili. To je znak: systemd odbija cijelu transakciju jer je jedinica korijenskog montiranja maskirana, a vaš VPN profil još nije pročitan. Uobičajeni uzrok je zaostala datoteka u runtime direktoriju jedinica, a ne pokvaren fstab i ne certifikat koji nedostaje. Prvo pratite datoteku, jer je to najjeftinije objašnjenje koje treba isključiti.
Greška imenuje korijensko montiranje, ne vaš profil
systemd sam generira jedinicu korijenskog montiranja iz podataka o montiranju iz kernela i naziva je -.mount jer crtica predstavlja korijensku putanju. Ta jedinica obično postoji samo u memoriji i nema datoteku iza sebe. Kada greška kaže da je maskirana, neko je stavio datoteku jedinice tamo gdje će je systemd učitati i usmjerio tu datoteku na /dev/null. Maska je stvarno stanje, a ne greška u kucanju u poruci.
Jedinica instance pada jer njen graf poslova doseže korijensko montiranje kroz redoslijed i kroz vlastite zahtjeve za montiranje. Transakcija se odbija prije nego što se izvrši OpenVPN binarna datoteka, pa ništa u konfiguraciji klijenta ne može biti uzrok. Zato promjena profila, certifikata ili akreditiva nema nikakvog efekta na ovaj konkretni kvar.
Provjerite runtime direktorij prije nego što tražite grešku u OpenVPN-u
Potražite datoteku s tim točnim imenom u runtime direktoriju jedinica, a zatim pitajte systemd šta misli da jedinica jest. Oba odgovora su brza i zajedno razdvajaju zaostalu datoteku od pravog problema s montiranjem.
ls -l /run/systemd/system/-.mount
systemctl status -.mount
systemctl list-unit-files --state=masked | grep mount
Normalno računalo nema takvu datoteku, a maskirana lista ne sadrži korijensko montiranje. Ako prva naredba ispiše simbolički link na /dev/null, dijagnoza je gotova. Isti direktorij može sadržavati masku tmp.mount koju su stvorili isti alati, a to proizvodi istu vrstu kvara pod drugim imenom. Gledajte cijeli direktorij, a ne samo ime iz greške.
ls -la /run/systemd/system/*.mount
Ako je direktorij čist, a jedinica je i dalje maskirana, maska je negdje drugdje u putanji pretrage, a systemctl cat -.mount će pokazati koja se datoteka učitava.
Obrišite datoteku, ponovo učitajte i pokrenite ispočetka
Uklanjanje runtime datoteke i ponovno učitavanje upravitelja je dovoljno i ne dira ništa što dolazi iz paketa. Učitajte ponovo prije pokretanja, jer systemd zadržava stanje učitane jedinice dok ponovo ne pročita direktorij.
sudo rm -f /run/systemd/system/-.mount /run/systemd/system/tmp.mount
sudo systemctl daemon-reload
systemctl status -.mount
sudo systemctl start [email protected]
Zatim pročitajte dnevnik same usluge umjesto da pretpostavite da je popravka uspjela. Čisto pokretanje dokazuje samo da je systemd prihvatio jedinicu; klijent i dalje može pasti na profilu koji nedostaje, nedostupnom peeru ili certifikatu koji se ne validira. To su obični OpenVPN problemi koji su bili skriveni iza maskirane jedinice. Dnevnik bilježi koji se profil učitao i da li je tunel zaista uspostavljen. Ako se jedinica pokrene, a tunel ne, prešli ste na drugi problem, što je napredak.
journalctl -u [email protected] -b --no-pager
Budući da je /run privremeni datotečni sistem, restart također briše datoteku. Zato je restart koristan test: ako usluga radi nakon restarta i ponovo padne nakon sljedećeg postavljanja, datoteka se ugrađuje u image.
Spriječite da se vrati iz imagea
Predložak kontejnera ili virtualne mašine koji maskira jedinice montiranja tokom izgradnje prenijet će tu masku u svaki klon. Sljedeće što treba datotečni sistem se kvari, a poruka okrivljuje montiranje umjesto imagea iz kojeg dolazi. Popravljanje unutar jedne pokrenute instance skriva problem do stvaranja sljedeće instance.
Pretražite build kontekst za imenom datoteke i za naredbom koja je stvara, zatim uklonite masku iz predloška i ponovo izgradite. Ako je maska zaista potrebna tokom izgradnje, uklonite je u istom sloju koji završava izgradnju, da isporučeni image počne čist. Provjerite na svježem klonu, a ne na mašini koju ste ručno popravili. To je jedini test koji dokazuje da se image promijenio.
Simptom koji treba zapamtiti je nesklad između greške i stvari koju ste konfigurisali. Kada se systemd žali na montiranje dok pokrećete VPN klijent, pročitajte ime jedinice u poruci prije nego što pročitate ime usluge.