Tjenesten din feiler før OpenVPN i det hele tatt kjører, og feilen snakker om en monteringsenhet du aldri har konfigurert. Det er tegnet: systemd avviser hele transaksjonen fordi rotmonteringsenheten er maskert, og VPN-profilen din er ikke lest ennå. Den vanlige årsaken er en etterlatt fil i runtime-katalogen for enheter, ikke en ødelagt fstab og ikke et manglende sertifikat. Følg filen først, for det er den billigste forklaringen å utelukke.

Feilen nevner rotmonteringen, ikke profilen din

systemd genererer rotmonteringsenheten selv fra kjernens monteringsinformasjon, og kaller enheten -.mount fordi en bindestrek står for rotstien. Den enheten finnes vanligvis bare i minnet og har ingen fil bak seg. Når feilen sier at den er maskert, har noen lagt en enhetsfil der systemd vil laste den, og pekt filen mot /dev/null. Maskeringen er en reell tilstand, ikke en skrivefeil i meldingen.

Instansenheten feiler fordi jobbgrafen når rotmonteringen gjennom rekkefølge og gjennom sine egne monteringskrav. Transaksjonen avvises før OpenVPN-binæren kjøres, så ingenting i klientens konfigurasjon kan være årsaken. Derfor har bytte av profiler, sertifikater eller påloggingsinformasjon ingen virkning på nettopp denne feilen.

Se i runtime-katalogen før du feilsøker OpenVPN

Let etter en fil med nøyaktig det navnet i runtime-katalogen for enheter, og spør deretter systemd hva den mener enheten er. Begge svarene er raske, og sammen skiller de en etterlatt fil fra et ekte monteringsproblem.

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

En normal maskin har ingen slik fil, og den maskerte listen inneholder ikke rotmonteringen. Hvis den første kommandoen skriver ut en symbolsk lenke til /dev/null, er diagnosen avgjort. Samme katalog kan inneholde en tmp.mount-maskering laget av de samme verktøyene, og det gir samme type feil under et annet navn. Se på hele katalogen og ikke bare navnet i feilen.

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

Hvis katalogen er ren og enheten fortsatt er maskert, ligger maskeringen et annet sted i søkestien, og systemctl cat -.mount viser hvilken fil som lastes.

Slett filen, last på nytt og start igjen

Det er nok å fjerne runtime-filen og laste inn administratoren på nytt, og det rører ingenting som kom fra en pakke. Last på nytt før du starter, fordi systemd beholder den innlastede enhetstilstanden til den leser katalogen på nytt.

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

Les deretter tjenestens egen journal i stedet for å anta at rettelsen virket. En ren start beviser bare at systemd godtok enheten; klienten kan fortsatt dø på en manglende profil, en utilgjengelig peer eller et sertifikat som ikke validerer. Det er vanlige OpenVPN-problemer som var skjult bak den maskerte enheten. Journalen registrerer hvilken profil som ble lastet, og om tunnelen faktisk ble etablert. Hvis enheten starter og tunnelen ikke, har du flyttet deg til et annet problem, og det er fremgang.

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

Fordi /run er et midlertidig filsystem, rydder en omstart også filen. Det gjør en omstart til en nyttig test: hvis tjenesten virker etter en omstart og feiler igjen etter neste utrulling, blir filen bakt inn i imaget.

Hindre at den kommer tilbake fra imaget

En container- eller virtuell maskin-mal som maskerer monteringsenheter under bygget, tar med seg den maskeringen til hver klone. Det neste som trenger filsystemet, ryker, og meldingen gir monteringen skylden i stedet for imaget den kom fra. Å reparere det inne i én kjørende instans skjuler problemet til neste instans opprettes.

Søk i byggekonteksten etter filnavnet og etter kommandoen som lager det, fjern deretter maskeringen fra malen og bygg på nytt. Hvis maskeringen virkelig trengs under bygget, fjern den i samme lag som fullfører bygget, slik at imaget som sendes ut starter rent. Bekreft på en fersk klone og ikke på maskinen du reparerte for hånd. Det er den eneste testen som beviser at imaget er endret.

Symptomet du bør huske, er avviket mellom feilen og det du konfigurerte. Når systemd klager over en montering mens du starter en VPN-klient, les enhetsnavnet i meldingen før du leser tjenestenavnet.

Relaterte artikler