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.

EventTUN/TAP deviceKey and auth filesAddresses and routesup/down hooks
Soft reset, from SIGUSR1 or from a ping-restart the daemon sends itselfsurvives only with persist-tunsurvive only with persist-keysurvive with the device, otherwise rebuiltrun again only when restart hooks are enabled
Configuration reload, SIGHUPrecreatedre-read from diskrebuilt once the device returnsrun again
Service stoplostre-read at the next startremovedrun 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.

Seotud artiklid