Mit élnek túl valójában a persist-tun és a persist-key az OpenVPN-ben
Mindkét opció egy futó folyamaton belüli lágy újraindítást fed le. Nem tartják meg az interfészt leállítás után, és nem forgalomblokkolási szabályok.
A szolgáltatás leállítása eltávolítja az interfészt akkor is, ha persist-tun be van állítva. Ez az opció a dokumentált módon működik, nem hiba. Az opció egyetlen újraindítási útvonalat ír le egy futó folyamaton belül, és systemctl stop nem ez az útvonal.
Olvassa össze a két nevet, és a terv világossá válik. Az egyik leírót tart, a másik kulcsanyagot tart, és mindkettő azért létezik, ami a jogosultságok eldobása után történik.
A két erőforrás és az újraindítás, amelyhez tartoznak
OpenVPN két szokásos helyzetben jelzi a saját újraindítását. Egy kifejezett SIGUSR1 megteszi, és egy halott partner által kiváltott ping-restart ugyanezt teszi. Mindkettő életben hagyja a folyamatot, és újra lefuttatja a kapcsolat beállítását, és itt érdemlik ki az opciók a helyüket.
| Event | TUN/TAP device | Key and auth files | Addresses and routes | up/down hooks |
|---|---|---|---|---|
Soft reset, from SIGUSR1 or from a ping-restart the daemon sends itself | survives only with persist-tun | survive only with persist-key | survive with the device, otherwise rebuilt | run again only when restart hooks are enabled |
Configuration reload, SIGHUP | recreated | re-read from disk | rebuilt once the device returns | run again |
| Service stop | lost | re-read at the next start | removed | run at the next start |
Csak a lágy újraindítás sora az, amit ez a két opció megváltoztat, és a munka, amelyet kihagynak, a drága rész egy forgalmas kapcsolaton. Egy eszköz újranyitása leszakítja a hozzá kapcsolódó címeket és útvonalakat, és ezek újjáépítése kiejtheti azokat a csomagokat, amelyek az újraindítás kezdetekor úton voltak. A leállítás ugyanezeket az objektumokat semmisíti meg, anélkül hogy bármilyen opció megőrizné őket.
Miért léteznek egyáltalán ezek az opciók
Egy megerősített OpenVPN-kiszolgáló általában rootként indul, kinyitja a kulcsait és az eszközét, majd egy jogosultság nélküli felhasználóra vált. A váltás után néhány művelet egyszerűen eltűnik. A 0600 módú kulcsfájl olvasása, egy hálózati interfész létrehozása vagy az útvonalak módosítása mind elutasítható.
A persist opciók nélkül egy partner, amely elég sokáig hallgat ahhoz, hogy kiváltsa a ping-restart-et, pontosan ezeket a műveleteket kényszerítené ki. Az újracsatlakozás meghiúsulna, pedig semmi sem változott a konfigurációban. A folyamat ok nélkül meghalni látszana, és a napló hálózati hiba helyett engedélyhibát mutatna.
Velük a lágy újraindítás újrahasznosítja azt, amit a kiváltságos szakasz már megszerzett. Nincs itt semmi varázslat, és a folyamat semmit sem él túl. Az erőforrások beszerzése egyszerűen elhalasztódik.
Az első hibát olvassa, ne az utolsót
Ha egy újraindítás meghiúsul, az első hibát olvassa az utolsó helyett. Egy védett kulcs, egy auth fájl, egy interfész-ioctl és egy külső horog négy különböző erőforrás. Egy megtartása semmit sem mond a többihez való hozzáférésről. Egy horog, amely tűzfaleszközt hív, továbbra is igényli a szerszám által megkövetelt jogosultságokat.
A horgoknak saját kapcsolójuk van. Az OpenVPN kézikönyve a persist opciókat a up-restart-hez párosítja, amely eldönti, hogy az up és down szkriptek újraindítás után újra lefutnak-e. A fent maradt interfész tehát semmit sem mond arról, hogy frissült-e a resolver-integrációja.
# which restart path just happened?
journalctl -u openvpn-client@office --since '10 min ago' | grep -E 'SIGUSR1|ping-restart|Restart pause|NOTE:'
# did the interface survive, and do its routes still exist?
ip -brief link show tun0
ip route show dev tun0
Ez a két parancs másodpercek alatt választja szét a két hibaüzemmódot. Egy létező interfész hiányzó útvonalakkal horog- vagy útvonalprobléma. Egy eltűnt interfész azt jelenti, hogy a folyamat valóban befejeződött.
A megtartott interfész nem kill switch
Ha az a követelmény, hogy a forgalom soha ne hagyja el az alagutat, a megtartott eszköz ezt nem nyújtja. A másik címcsalád útvonalai, egy második alapértelmezett útvonal és az az eset, amikor a folyamat teljesen kilép, mind az opció hatókörén kívül maradnak.
Kezelje a két követelményt külön. Az alagútobjektum megtartása az újracsatlakozások között kényelmi szolgáltatás a démonnak. A kimenet blokkolása, amikor az alagút áll, saját szabályokkal és saját teszttel rendelkező tűzfal-szabályzat. Ezek összekeverése olyan konfigurációt ad, amely védekezőnek látszik, és legjobb erőfeszítésű újracsatlakozásként viselkedik.
Nevezze meg az eseményt, mielőtt diagnosztizálja. A lágy újraindítás, egy sikertelen kapcsolódási kísérlet és a szolgáltatás leállítása három esemény három viselkedéssel, és csak az első az, amit ezek az opciók leírnak.