Vaša storitev odpove, preden se OpenVPN sploh zažene, in napaka govori o enoti priklopitve, ki je niste nikoli nastavili. To je namig: systemd zavrne celotno transakcijo, ker je enota korenske priklopitve maskirana, vaš profil VPN pa še ni bil prebran. Običajni vzrok je preostala datoteka v imeniku izvajalnih enot, ne pokvarjen fstab in ne manjkajoče potrdilo. Najprej sledite datoteki, saj je to najcenejša razlaga, ki jo lahko izključite.

Napaka navaja korensko priklopitev, ne vašega profila

systemd sam ustvari enoto korenske priklopitve iz podatkov o priklopitvi iz jedra in enoto poimenuje -.mount, ker pomišljaj predstavlja korensko pot. Ta enota običajno obstaja le v pomnilniku in za seboj nima datoteke. Ko napaka pravi, da je maskirana, je nekdo postavil datoteko enote tja, kjer jo bo systemd naložil, in to datoteko usmeril na /dev/null. Maska je resnično stanje, ne tipkarska napaka v sporočilu.

Enota instance odpove, ker njen graf opravil doseže korensko priklopitev prek vrstnega reda in prek lastnih zahtev po priklopitvi. Transakcija je zavrnjena, preden se izvrši binarna datoteka OpenVPN, zato nič v konfiguraciji odjemalca ne more biti vzrok. Zato spreminjanje profilov, potrdil ali poverilnic ne vpliva na to konkretno napako.

Pred razhroščevanjem OpenVPN poglejte v imenik izvajanja

Poiščite datoteko s točno tem imenom v imeniku izvajalnih enot in nato vprašajte systemd, kaj misli, da enota je. Oba odgovora sta hitra in skupaj ločita preostalo datoteko od resnične težave s priklopitvijo.

ls -l /run/systemd/system/-.mount
systemctl status -.mount
systemctl list-unit-files --state=masked | grep mount

Običajen stroj nima takšne datoteke in seznam maskiranih ne vsebuje korenske priklopitve. Če prvi ukaz izpiše simbolno povezavo na /dev/null, je diagnoza jasna. V istem imeniku je lahko tudi maska tmp.mount, ki so jo ustvarila ista orodja, in to povzroči enako vrsto napake pod drugim imenom. Poglejte celoten imenik in ne le imena v napaki.

ls -la /run/systemd/system/*.mount

Če je imenik čist in je enota še vedno maskirana, je maska drugje na iskalni poti in systemctl cat -.mount bo pokazal, katera datoteka se nalaga.

Izbrišite datoteko, znova naložite in znova zaženite

Odstranitev izvajalne datoteke in ponovno nalaganje upravitelja zadostuje in se ne dotakne ničesar, kar prihaja iz paketa. Znova naložite pred zagonom, ker systemd ohrani stanje naložene enote, dokler imenika ne prebere znova.

sudo rm -f /run/systemd/system/-.mount /run/systemd/system/tmp.mount
sudo systemctl daemon-reload
systemctl status -.mount
sudo systemctl start [email protected]

Nato preberite dnevnik same storitve, namesto da bi domnevali, da je popravek deloval. Čist zagon dokaže le, da je systemd enoto sprejel; odjemalec lahko še vedno umre zaradi manjkajočega profila, nedosegljivega soda ali potrdila, ki se ne overi. To so običajne težave OpenVPN, ki so bile skrite za maskirano enoto. Dnevnik zabeleži, kateri profil se je naložil in ali je bil tunel res vzpostavljen. Če se enota zažene in tunel ne, ste prešli na drugo težavo, kar je napredek.

journalctl -u [email protected] -b --no-pager

Ker je /run začasni datotečni sistem, ponovni zagon izbriše tudi datoteko. Zato je ponovni zagon uporaben preizkus: če storitev po ponovnem zagonu deluje in po naslednji namestitvi spet odpove, je datoteka vgrajena v sliko.

Preprečite, da bi se vrnila iz slike

Predloga vsebnika ali navideznega stroja, ki med gradnjo maskira enote priklopitve, bo to masko prenesla v vsak klon. Naslednja stvar, ki potrebuje datotečni sistem, se pokvari, sporočilo pa krivi priklopitev namesto slike, iz katere prihaja. Popravljanje znotraj ene delujoče instance skrije težavo do ustvaritve naslednje instance.

V kontekstu gradnje poiščite ime datoteke in ukaz, ki jo ustvari, nato odstranite masko iz predloge in znova zgradite. Če je maska med gradnjo res potrebna, jo odstranite v istem sloju, ki gradnjo zaključi, da se dobavljena slika zažene čista. Preverite na svežem klonu in ne na stroju, ki ste ga popravili ročno. To je edini preizkus, ki dokaže, da se je slika spremenila.

Simptom, ki si ga velja zapomniti, je neskladje med napako in stvarjo, ki ste jo nastavljali. Ko se systemd pritožuje zaradi priklopitve, medtem ko zaganjate odjemalca VPN, najprej preberite ime enote v sporočilu in šele nato ime storitve.

Sorodni članki