Mida persist-tun ja persist-key OpenVPN-is tegelikult üle elavad
Mõlemad valikud katavad pehme taaskäivituse elava protsessi sees. Need ei säilita liidest pärast peatamist ja ei ole liikluse blokeerimise poliitika.
Teenuse peatamine eemaldab liidese ka siis, kui persist-tun on seatud. See on valik, mis töötab nii, nagu dokumenteeritud, mitte tõrge. Valik kirjeldab üht taaskäivitusteed jooksva protsessi sees ja systemctl stop ei ole see tee.
Lugege kahte nime koos ja disain saab selgeks. Üks hoiab kirjeldajat, teine hoiab võtmematerjali, ja mõlemad on olemas selle tõttu, mis juhtub pärast privileegide mahapanekut.
Kaks ressurssi ja taaskäivitus, kuhu need kuuluvad
OpenVPN annab oma taaskäivituse märku kahes tavapärases olukorras. Selgesõnaline SIGUSR1 teeb seda, ja surnud partneri poolt käivitatud ping-restart teeb sama. Mõlemad jätavad protsessi ellu ja käivitavad ühenduse seadistamise uuesti, ja just seal teenivad valikud oma koha.
| 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 |
Ainult pehme taaskäivituse rida on see, mida need kaks valikut muudavad, ja töö, mille nad vahele jätavad, on hõivatud lingil kallis osa. Seadme uuesti avamine rebib maha selle külge kinnitatud aadressid ja marsruudid, ja nende uuesti ehitamine võib kaotada pakette, mis olid teel, kui taaskäivitus algas. Peatamine hävitab samad objektid ilma igasuguse valikuga neid säilitada.
Miks need valikud üldse olemas on
Kõvitatud OpenVPN-server algab tavaliselt rootina, avab oma võtmed ja seadme ning laskub seejärel mitteprivilegeeritud kasutajaks. Pärast seda langust on mõned toimingud lihtsalt kadunud. Režiimiga 0600 võtmefaili lugemine, võrguliidese loomine või marsruutide muutmine võidakse kõik tagasi lükata.
Ilma persist-valikuteta sunniks partner, kes vaikib piisavalt kaua, et käivitada ping-restart, täpselt need toimingud. Ühenduse taastamine ebaõnnestuks, kuigi konfiguratsioonis ei olnud midagi muutunud. Protsess näeks välja nii, nagu sureks ilma põhjuseta, ja logi näitaks õiguste viga, mitte võrguviga.
Nendega kasutab pehme taaskäivitus uuesti seda, mille privilegeeritud faas on juba saanud. Mingit maagiat ei ole ja protsess ei ela midagi üle. Ressursside hankimine on lihtsalt edasi lükatud.
Lugege esimest viga, mitte viimast
Kui taaskäivitus ebaõnnestub, lugege esimest viga, mitte viimast. Kaitstud võti, auth-fail, liidese ioctl ja väline konks on neli erinevat ressurssi. Ühe hoidmine ei ütle midagi teistele juurdepääsu kohta. Konks, mis kutsub tulemüüritööriista, vajab endiselt privileege, mida see tööriist nõuab.
Konksudel on oma lüliti. OpenVPNi käsiraamat seob persist-valikud up-restart-ga, mis otsustab, kas up- ja down-skriptid jooksevad pärast taaskäivitust uuesti. Seega ei ütle üleval püsinud liides teile midagi selle kohta, kas teie resolveri integratsioon värskendati.
# 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
See käskude paar eristab kahte tõrkeviisi sekunditega. Olemasolev liides, millel marsruudid puuduvad, on konksu või marsruudi probleem. Kadunud liides tähendab, et protsess tõesti lõppes.
Säilitatud liides ei ole kill switch
Kui nõue on, et liiklus ei tohi kunagi tunnelist välja minna, siis säilitatud seade ei taga seda. Teise aadressiperekonna marsruudid, teine vaikimisi marsruut ja juhtum, kus protsess täielikult väljub, jäävad kõik valiku ulatusest välja.
Käsitlege kahte nõuet eraldi. Tunnelobjekti hoidmine üle ühenduse taastamiste on deemonile mugavus. Väljapääsu blokeerimine, kui tunnel on maas, on tulemüüri poliitika oma reeglite ja oma testiga. Nende segamine annab konfiguratsiooni, mis näeb kaitsev välja ja käitub nagu parima pingutusega ühenduse taastamine.
Nimetage sündmus enne selle diagnoosimist. Pehme taaskäivitus, ebaõnnestunud ühenduskatse ja teenuse peatamine on kolm sündmust kolme käitumisega, ja ainult esimene on see, mida need valikud kirjeldavad.