Pakalpojuma apturēšana noņem saskarni pat ar iestatītu persist-tun. Tas ir opcija, kas darbojas kā dokumentēts, nevis kļūda. Opcija apraksta vienu restarta ceļu darbojā procesā, un systemctl stop nav tas ceļš.

Lasiet abus nosaukumus kopā, un dizains kļūst skaidrs. Viens patur deskriptoru, otrs patur atslēgas materiālu, un abi pastāv tā dēļ, kas notiek pēc privilēģiju atdošanas.

Divi resursi un restarts, kam tie pieder

OpenVPN signalizē savu restartu divās parastās situācijās. Skaidrs SIGUSR1 to dara, un miruša partnera izraisīts ping-restart dara to pašu. Abi atstāj procesu dzīvu un atkārtoti izpilda savienojuma iestatīšanu, un tieši tur opcijas nopelna savu vietu.

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

Tikai maigā restarta rinda ir tas, ko šīs divas opcijas maina, un darbs, ko tās izlaiž, ir dārgā daļa noslogotā savienojumā. Ierīces atkārtota atvēršana norauj tai piesaistītās adreses un maršrutus, un to atjaunošana var nomest paketes, kas bija ceļā restarta sākumā. Apturēšana iznīcina tos pašus objektus bez jebkādas opcijas tos saglabāt.

Kāpēc šīs opcijas vispār pastāv

Nocietināts OpenVPN serveris parasti sākas kā root, atver savas atslēgas un ierīci, pēc tam pāriet uz lietotāju bez privilēģijām. Pēc šīs pārejas dažas darbības vienkārši pazūd. Atslēgas faila ar režīmu 0600 lasīšana, tīkla saskarnes izveide vai maršrutu maiņa var tikt atteikta.

Bez persist opcijām partneris, kas klusē pietiekami ilgi, lai izraisītu ping-restart, piespiestu tieši šīs darbības. Atkārtotais savienojums neizdotos, lai gan konfigurācijā nekas nebija mainījies. Process izskatītos tā, it kā mirst bez iemesla, un žurnālā būtu redzama atļauju kļūda, nevis tīkla kļūda.

Ar tām maigais restarts atkārtoti izmanto to, ko privileģētā fāze jau ir ieguvusi. Nekādas maģijas nav, un process neko nepārdzīvo. Resursu iegūšana vienkārši tiek atlikta.

Lasiet pirmo kļūdu, nevis pēdējo

Kad restarts neizdodas, lasiet pirmo kļūdu, nevis pēdējo. Aizsargāta atslēga, auth fails, saskarnes ioctl un ārējais āķis ir četri dažādi resursi. Viena paturēšana neko nepasaka par piekļuvi pārējiem. Āķis, kas izsauc ugunsmūra rīku, joprojām prasa privilēģijas, ko šis rīks pieprasa.

Āķiem ir savs slēdzis. OpenVPN rokasgrāmata savieno persist opcijas ar up-restart, kas izlemj, vai up un down skripti tiks izpildīti vēlreiz pēc restarta. Tāpēc saskarne, kas palika augšā, neko nepasaka par to, vai jūsu resolver integrācija tika atjaunināta.

# 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

Šis komandu pāris atdala divus atteices režīmus sekundēs. Saskarne, kas pastāv, bet kurai trūkst maršrutu, ir āķa vai maršruta problēma. Pazudusi saskarne nozīmē, ka process patiešām beidzās.

Saglabāta saskarne nav kill switch

Ja prasība ir, lai trafiks nekad neizietu ārpus tuneļa, saglabāta ierīce to nenodrošina. Maršruti otrai adrešu saimei, otrs noklusējuma maršruts un gadījums, kad process pilnībā iziet, visi paliek ārpus opcijas darbības jomas.

Izskatiet abas prasības atsevišķi. Tuneļa objekta saglabāšana starp atkārtotiem savienojumiem ir ērtība dēmonam. Izejas bloķēšana, kad tunelis ir izslēgts, ir ugunsmūra politika ar saviem noteikumiem un savu testu. To sajaukšana rada konfigurāciju, kas izskatās aizsardzības ziņā un uzvedas kā labākā centiena atkārtots savienojums.

Nosauciet notikumu pirms tā diagnostikas. Maigs restarts, neizdevies savienojuma mēģinājums un pakalpojuma apturēšana ir trīs notikumi ar trim uzvedībām, un tikai pirmais ir tas, ko apraksta šīs opcijas.

Saistītie raksti