Egy terminálablak bezárása nem ugyanaz, mint egy tunnel bezárása, és egy folyamat megölése nem ugyanaz, mint egy szolgáltatás leállítása. Linuxon a ténylegesen bontó parancs attól függ, melyik komponens indította a kapcsolatot, és ezért birtokolja annak életciklusát. Az alábbi összehasonlítás a legvalószínűbben előforduló négy elrendezést és az egyesekhez szükséges azonosítót tárgyalja.

Előtérbeli és démonizált kliensek

A terminálban kézzel indított kliens ahhoz a terminálhoz tartozik. A Ctrl+C megszakítást küld, a kliens lebontja a felületét, és a tunnel véget ér. Semmi mást nem kell értesíteni.

A shell-burkolón keresztül indított és háttérben hagyott kliens senkihez sem tartozik különösebben, és ebben az esetben nyúlnak az emberek a killallhoz. Először keresse meg a folyamatot, erősítse meg, hogy a parancssora említi a szándékolt profilt, majd küldje el a szokásos leállítási jelet. A felügyelője alatt megölt felügyelt folyamat egyszerűen újraindul, ezért a tulajdonos azonosítása fontosabb, mint a jel kiválasztása. Csak akkor küldjön jelet a folyamatcsoportnak, ha megerősítette, hogy más tunnel nem osztozik rajta.

A SIGUSR1 nem bontás; arra kéri a klienst, hogy indítsa újra a tunnelt.

systemd-példányok

Amikor egy unit birtokolja a kapcsolatot, a unit a leállítandó objektum. Az olyan sablonpéldányok, mint az openvpn-client@office, a profil nevét hordozzák, és a sabloncél leállítása a példány helyett minden kliensre hatással lehet a gazdagépen.

systemctl list-units 'openvpn-client@*'
systemctl stop [email protected]

Olvassa el az unit ExecStart sorát, ha nem biztos benne, melyik profilt töltötte be a példány.

Az engedélyezett unit a következő indításkor visszatér, ami külön döntés a mostani leállításától. Csak azután tiltsa le, hogy eldöntötte, a kapcsolatnak nem szabad visszatérnie, és rögzítse ezt a döntést ott, ahol a következő rendszergazda megtalálja.

NetworkManager-profilok

A NetworkManager által kezelt profil nem olyan folyamat, amelynek jelet küldhet. A kezelő birtokolja az életciklust, és a kezelendő objektum az aktív kapcsolat, amelyet UUID azonosít, nem pedig megjelenített név. Az aktív lista előzetes beolvasása azt is megmutatja, fut-e egy második tunnel olyan néven, amelyre nem számított.

nmcli connection show --active
nmcli connection down uuid actual-uuid

A megjelenített nevek ismétlődnek, és egy profilfájl neve nem azonosítója, ezért másolja ki az UUID-t a listából. Ha a kapcsolat azonnal visszatér, valami aktiválja: egy secondaries bejegyzés egy alapkapcsolaton, egy dispatcher-szkript vagy egy automatikus csatlakozási jelző. A kezelő kapcsolatának leállítása a helyes első lépés, és az újraaktiválás a következő kérdés. Ne törölje a profilt az újraaktiválás megállításához, mert az eltávolítja a holnap esetleg szükséges hitelesítő adatokat is.

A kezelő parancsreferenciája dokumentálja, hogyan választódik ki a down cél.

OpenVPN 3 munkamenetek

Az OpenVPN 3 Linux munkamenet-modellt használ tunnelkénti folyamat helyett. Megvizsgálja a szolgáltatás által ismert munkameneteket, majd egy munkamenet-útvonalon cselekszik. Az útvonal az azonosító, és nem cserélhető fel egy konfigurációs névvel.

openvpn3 sessions-list
openvpn3 session-manage --path /net/openvpn/v3/sessions/... --disconnect

Minden munkamenet bontása más művelet, és szándékosnak kell lennie.

Ugyanaz a gazdagép több felhasználó munkamenetét is tarthatja, ezért cselekvés előtt listázzon, és erősítse meg a befejezni kívánt munkamenet tulajdonosát.

Mit kell utána ellenőrizni

Ellenőrizzen három dolgot bármelyik leállítás után: az aktív kapcsolatok listája már nem tartalmazza a tunnelt, a felület eltűnt, és egy belső címhez tartozó útvonalkeresés már nem választ tunnel-eszközt. Ezután döntse el, mi történik a következő indításkor.

ip -brief address
ip route get 10.8.0.1

A felület kézi eltávolítása nem állítja le a tulajdonost, és félkész tisztítást hagy maga után.

A mostani bontás, a következő automatikus indítás megakadályozása és a nem VPN-forgalom utólagos engedélyezése három külön döntés. Tegye mindegyiket kifejezetté.

Kapcsolódó cikkek