Ha a systemctl start openvpn-client@office parancsot futtatja, és azt a választ kapja, hogy a rendszer nem systemd-vel indult, az szolgáltatáshibának tűnik. Ez egyáltalán nem szolgáltatáshiba: a systemctl, amelyet meghívott, nem talál futó kezelőt, amellyel beszélhetne, így semmit nem vizsgáltak az OpenVPN-nel kapcsolatban. sudo nem hoz létre kezelőt, és az unit fájl telepítése sem hoz létre egyet. A parancs és a gép két különböző világból származik, és a hiba az egyetlen hely, ahol ez kiderült.

Kezdje azzal a kérdéssel, melyik folyamat birtokolja a PID 1-et ott, ahol a parancs fut, mert ez a válasz dönti el, léteznek-e egyáltalán unit fájlok.

A hiba a környezetet nevezi meg, nem az OpenVPN-t

systemctl kliens, nem kezelő. Egy socketen keresztül kapcsolódik a rendszerkezelőhöz, és amikor a másik oldalon nincs kezelő, azt az üzenetet írja ki, amelyet az emberek fórumokra másolnak. ps -p 1 -o pid=,comm= megmutatja, mi fut valójában PID 1-ként, és a válasz gyakran egy shell, egy init-burkoló vagy maga a konténer belépési pontja. Ilyen helyzetben egy unit fájl teljesen érvényes lehet, és mégis soha nem olvassák be. A parancs rootként való megismétlése csak a kliens hitelesítő adatait változtatja meg.

Olvassa el a teljes üzenetet az első sor előtt. A kezelőtől magától érkező hiba, például egy hiányzó unit vagy egy meghiúsult feltétel, azt jelenti, hogy elérte a kezelőt; ez a hiba azt jelenti, hogy nem.

WSL: a systemd engedélyezése konfigurációmódosítás

A WSL a későbbi kiadásokban kapta meg a systemd támogatását, de a funkció disztribúciónként engedélyezhető, és csak ott, ahol a telepített WSL-verzió támogatja. wsl --version a Windows oldalán megmutatja, mi van Önnél, a disztribúció /etc/wsl.conf fájlja pedig [boot] szakaszt tartalmaz ezzel: systemd=true. Szerkessze ezt a fájlt anélkül, hogy eltávolítaná a már meglévő szakaszokat, majd indítsa újra a WSL-példányt, hogy a módosítás érvénybe lépjen. wsl --shutdown leállít minden futó disztribúciót, ezért először mentse el a munkáját.

Újranyitás után erősítse meg a kezelőt, mielőtt hozzányúlna az OpenVPN unitjához: ps -p 1 -o comm= ezt kellene mutatnia: systemd. A systemd engedélyezése nem ad profilt, hitelesítő adatot vagy példánynevet, ezért a következő hiba ezek egyikéről szól majd, nem a PID 1-ről.

A konténerek a belépési pontjukat futtatják, nem uniteket

Egy normál konténer azt indítja el, amit a belépési pontja vagy a parancsa meghatároz, és nem systemd-vel indított gép, függetlenül attól, milyen csomagokat telepít. Ha a systemctl hozzáadja az image-hez, olyan klienst kap, amelynek nincs mihez kapcsolódnia. A Community OpenVPN esetében a támogatott minta általában egy előtérben futó folyamat, openvpn --config /path/to/client.conf, amelyet a belépési pont indít, és kívülről felügyelnek. Ez a tulajdonos kezeli az indítást, a jeleket és a leállítást, és csak ez az egy dolog kezelheti az alagutat.

Soha ne indítson interaktív másolatot olyan belépési pont mellett, amely már kezeli azt az alagutat, mert két folyamat fog harcolni az eszközért és az útvonalakért. A konténeren belüli minimális init folyamat begyűjti a gyermekeket és továbbítja a jeleket; nem alakítja az image-et uniteket tartalmazó gazdagéppé.

Ha egy telepítés valóban igényel systemd-t egy konténeren belül, akkor ehhez szándékosan tervezett image kell, nem extra jogosultságok, amelyeket addig adnak hozzá, amíg a systemctl nem hagyja abba a panaszkodást.

Olvassa el a következő hibát, amikor a kezelő létezik

Amint egy valódi kezelő elindítja a szolgáltatást, megkezdődnek a hasznos hibák. Eszközengedély-hiba, konfigurációelemzési hiba, hiányzó hitelesítő adat és elérhetetlen partner — ez négy különböző probléma, amelyet a PID 1 üzenete soha nem tesztelt. Abban a sorrendben olvassa el őket, ahogy az unit létrehozta, ezt használva: journalctl -u openvpn-client@office -n 50 systemd-gazdagépen, vagy úgy, hogy a klienst előtérben futtatja ott, ahol nincs kezelő. Az előtérben való futtatás a leggyorsabb módja annak is, hogy megerősítse: maga a profil működik.

Tartsa külön a két környezetet a jegyzeteiben: az alagutat futtató gazdagépet, és a helyet, ahol a parancsokat begépeli.

Kapcsolódó cikkek