Jednotka -.mount je maskovaná: klient OpenVPN sa nespustí
Zvyšný súbor -.mount v /run/systemd/system maskuje jednotku koreňového pripojenia, takže každá jednotka, ktorá potrebuje súborový systém, zlyhá skôr, než sa OpenVPN spustí.
Vaša služba zlyhá skôr, než sa OpenVPN vôbec spustí, a chyba hovorí o jednotke pripojenia, ktorú ste nikdy nenastavili. To je ten príznak: systemd odmieta celú transakciu, pretože jednotka koreňového pripojenia je maskovaná, a váš profil VPN ešte nebol prečítaný. Zvyčajnou príčinou je zvyšný súbor v adresári runtime jednotiek, nie pokazený fstab a nie chýbajúci certifikát. Najprv sledujte súbor, pretože je to najlacnejšie vysvetlenie, ktoré treba vylúčiť.
Chyba pomenúva koreňové pripojenie, nie váš profil
systemd generuje jednotku koreňového pripojenia sám z informácií o pripojení z jadra a jednotku pomenúva -.mount, pretože pomlčka zastupuje koreňovú cestu. Táto jednotka zvyčajne existuje len v pamäti a nemá za sebou žiadny súbor. Keď chyba hovorí, že je maskovaná, niekto umiestnil súbor jednotky tam, kde ho systemd načíta, a nasmeroval ho na /dev/null. Maska je skutočný stav, nie preklep v správe.
Jednotka inštancie zlyhá, pretože jej graf úloh dosiahne koreňové pripojenie cez zoraďovanie a cez vlastné požiadavky na pripojenie. Transakcia je odmietnutá skôr, než sa spustí binárka OpenVPN, takže nič v konfigurácii klienta nemôže byť príčinou. Preto zmena profilov, certifikátov alebo prihlasovacích údajov nemá vplyv na túto konkrétnu poruchu.
Pred ladením OpenVPN sa pozrite do adresára runtime
Hľadajte súbor s presne týmto názvom v adresári runtime jednotiek a potom sa systemd opýtajte, čo si o jednotke myslí. Obe odpovede sú rýchle a spolu oddeľujú zvyšný súbor od skutočného problému s pripojením.
ls -l /run/systemd/system/-.mount
systemctl status -.mount
systemctl list-unit-files --state=masked | grep mount
Normálny stroj takýto súbor nemá a zoznam maskovaných jednotiek koreňové pripojenie neobsahuje. Ak prvý príkaz vypíše symbolický odkaz na /dev/null, diagnóza je jasná. V tom istom adresári môže byť aj maska tmp.mount vytvorená tými istými nástrojmi, a tá spôsobuje rovnakú triedu poruchy pod iným názvom. Pozrite sa na celý adresár, nie len na názov z chyby.
ls -la /run/systemd/system/*.mount
Ak je adresár čistý a jednotka je stále maskovaná, maska je inde v prehľadávanej ceste a systemctl cat -.mount ukáže, ktorý súbor sa načítava.
Súbor zmažte, znova načítajte a spustite znova
Odstrániť súbor z runtime a znova načítať správcu stačí a ničoho z balíka sa to nedotkne. Načítajte znova pred spustením, pretože systemd drží stav načítanej jednotky, kým adresár znova neprečíta.
sudo rm -f /run/systemd/system/-.mount /run/systemd/system/tmp.mount
sudo systemctl daemon-reload
systemctl status -.mount
sudo systemctl start [email protected]
Potom si prečítajte vlastný log služby, namiesto toho, aby ste predpokladali, že oprava zabrala. Čisté spustenie dokazuje len to, že systemd jednotku prijal; klient môže stále padnúť na chýbajúcom profile, nedostupnom partnerovi alebo certifikáte, ktorý sa neoverí. To sú bežné problémy OpenVPN, ktoré boli skryté za maskovanou jednotkou. Log zaznamená, ktorý profil sa načítal a či sa tunel skutočne nadviazal. Ak jednotka štartuje a tunel nie, presunuli ste sa k inému problému, čo je pokrok.
journalctl -u [email protected] -b --no-pager
Pretože /run je dočasný súborový systém, reštart súbor tiež zmaže. To robí z reštartu užitočný test: ak služba po reštarte funguje a po ďalšom nasadení znova zlyhá, súbor sa pečie do image.
Zabráňte, aby sa vrátil z image
Šablóna kontajnera alebo virtuálneho stroja, ktorá pri zostavovaní maskuje jednotky pripojenia, prenesie túto masku do každého klonu. Čo bude nabudúce potrebovať súborový systém, sa pokazí, a správa viní pripojenie namiesto image, z ktorého prišlo. Oprava vnútri jednej bežiacej inštancie problém skryje až do vytvorenia ďalšej inštancie.
Prehľadajte kontext zostavenia kvôli názvu súboru a príkazu, ktorý ho vytvára, potom masku zo šablóny odstráňte a zostavte znova. Ak je maska počas zostavovania naozaj potrebná, odstráňte ju v tej istej vrstve, ktorá zostavenie dokončuje, aby dodávaný image štartoval čistý. Overte to na čerstvom klone, nie na stroji, ktorý ste opravili ručne. To je jediný test, ktorý dokazuje, že sa image zmenil.
Príznak, ktorý si zapamätajte, je nesúlad medzi chybou a vecou, ktorú ste nastavovali. Keď sa systemd sťažuje na pripojenie, kým spúšťate klienta VPN, prečítajte si najprv názov jednotky v správe a až potom názov služby.