Zaustavljanje servisa uklanja sučelje čak i sa postavljenim persist-tun. To je opcija koja radi kako je dokumentirano, a ne kvar. Opcija opisuje jedan put restarta unutar pokrenutog procesa, a systemctl stop nije taj put.

Pročitajte dva imena zajedno i dizajn postaje jasan. Jedno drži deskriptor, drugo drži materijal ključa, i oba postoje zbog onoga što se događa nakon odbacivanja privilegija.

Dva resursa i reset kojem pripadaju

OpenVPN signalizira vlastiti restart u dvije uobičajene situacije. Eksplicitni SIGUSR1 to čini, a ping-restart koji pokrene mrtav peer čini isto. Oba ostavljaju proces živim i ponovno pokreću postavljanje veze, i tu opcije zaslužuju svoje mjesto.

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

Samo red mekog reseta je ono što ove dvije opcije mijenjaju, a posao koji preskaču je skupi dio na zauzetoj vezi. Ponovno otvaranje uređaja ruši adrese i rute vezane za njega, a njihovo ponovno izgrađivanje može ispustiti pakete koji su bili u pokretu kada je reset počeo. Zaustavljanje uništava iste objekte bez ikakve opcije da ih sačuva.

Zašto opcije uopće postoje

Očvrsli OpenVPN poslužitelj obično počinje kao root, otvara svoje ključeve i svoj uređaj, a zatim prelazi na neprivilegiranog korisnika. Nakon tog prijelaza neke operacije jednostavno nestaju. Čitanje ključne datoteke s načinom 0600, stvaranje mrežnog sučelja ili mijenjanje ruta mogu sve biti odbijeni.

Bez persist opcija, peer koji ušuti dovoljno dugo da pokrene ping-restart prisilio bi upravo te operacije. Ponovno povezivanje bi propalo iako se ništa u konfiguraciji nije promijenilo. Proces bi izgledao kao da umire bez razloga, a dnevnik bi pokazao grešku dopuštenja umjesto mrežne greške.

S njima, meki reset ponovno koristi ono što je privilegirana faza već dobila. Nema magije i proces ništa ne preživljava. Nabava resursa jednostavno je odgođena.

Čitajte prvu grešku, ne posljednju

Kada reset ne uspije, čitajte prvu grešku umjesto posljednje. Zaštićeni ključ, auth datoteka, ioctl sučelja i vanjska kuka četiri su različita resursa. Zadržavanje jednog ne govori ništa o pristupu ostalima. Kuka koja poziva alat za firewall još uvijek treba privilegije koje taj alat zahtijeva.

Kuke imaju svoj prekidač. OpenVPN priručnik uparuje persist opcije sa up-restart, koji odlučuje hoće li se up i down skripte ponovno pokrenuti nakon restarta. Sučelje koje je ostalo podignuto zato vam ne govori ništa o tome je li se vaša resolver integracija osvježila.

# 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

Taj par naredbi razdvaja dva načina kvara u sekundama. Sučelje koje postoji uz rute koje nedostaju problem je kuke ili rute. Sučelje koje je nestalo znači da je proces zaista završio.

Zadržano sučelje nije kill switch

Ako je zahtjev da promet nikada ne izađe izvan tunela, zadržani uređaj to ne isporučuje. Rute za drugu obitelj adresa, druga zadana ruta i slučaj kada proces potpuno izađe ostaju izvan dosega opcije.

Tretirajte dva zahtjeva odvojeno. Zadržavanje objekta tunela kroz ponovna povezivanja pogodnost je za daemon. Blokiranje izlaza kada je tunel pao je firewall politika sa svojim pravilima i svojim testom. Miješanje toga daje konfiguraciju koja izgleda obrambeno, a ponaša se kao ponovno povezivanje po najboljoj mogućnosti.

Imenujte događaj prije nego ga dijagnosticirate. Meki reset, neuspjeli pokušaj povezivanja i zaustavljanje servisa tri su događaja sa tri ponašanja, a samo je prvi ono što ove opcije opisuju.

Povezani članci