Svakosatni prekid OpenVPN-a: ponovno pregovaranje ili pravo ponovno povezivanje?
Prekid u sumnjivo okruglom intervalu obično je osvježavanje ključa, a ne mrtva veza. Pročitajte stvarni tajmer i liniju zapisa prije nego što bilo što isključite.
Šezdeset minuta, ili trideset, ili sto dvadeset: prekid koji padne na okrugao interval gotovo nikada nije mreža. OpenVPN osvježava po tajmeru ključni materijal koji štiti podatkovni kanal, a tajmer kraći od onoga koji ste pretpostavili izgleda točno kao veza koja stalno pada. Korisnici prijavljuju prekinutu vezu dok zapis prijavljuje uspješnu razmjenu ključeva. Uputa ispod odvaja to osvježavanje od pravog ponovnog pokretanja, čita vrijednost koja stvarno vrijedi i mijenja je tek nakon što je cijena na stolu.
Radite korake redom, jer prvi odlučuje odnosi li se ostatak stranice uopće na vas. Preskočite naprijed i potrošit ćete večer na podešavanje tajmera zbog kvara koji nema nikakve veze s njim.
Razlikujte meki reset od ponovnog pokretanja
Linija zapisa je cijela dijagnoza. Ponovno pregovaranje upisuje meki reset, a zatim novu razmjenu ključeva unutar istog tunela: sučelje zadržava svoju adresu, rute se ne dodaju ponovno, a uspostavljene TCP sesije obično prežive s pauzom. Pravo ponovno pokretanje kida sesiju, ponovno gradi sučelje, može dodijeliti drugu adresu klijenta i ubija svaku dugotrajnu vezu. Oba događaja su uobičajena; samo jedan od njih objašnjava prekinut poziv.
journalctl -u openvpn-client@office -b --no-pager | grep -nE 'soft reset|Connection reset|reneg|TLS Error'
openvpn --version | head -n 1
Linija verzije je važna jer se formulacije u zapisu mijenjaju između izdanja, a poruka koju pamtite iz 2.3 može u 2.6 biti drugačije sročena. Čitajte vlastiti zapis, a ne isječak s foruma nekog drugog. Citirajte točnu liniju kad tražite pomoć, jer prepričavanje gubi pojedinost koja prepoznaje događaj. Ako je adresa sučelja tijekom događaja nepromijenjena i popis sesija preživi, gledate osvježavanje i preostali se odjeljci primjenjuju.
Čitajte stvarni tajmer, ne svoju datoteku
reneg-sec je broj sekundi između ponovnih pregovaranja podatkovnog kanala, a zadana vrijednost je 3600. Svaka strana nosi svoju vrijednost, a manja od dviju pokreće osvježavanje. To jedno pravilo objašnjava većinu prijava: profil klijenta koji postavlja velik broj ipak se resetira svakih sat vremena dok poslužitelj zadržava zadanu vrijednost.
grep -Rn --include='*.conf' -E 'reneg-sec|reneg-bytes' /etc/openvpn
# server side, including included files
grep -Rn -E '^reneg-sec' /etc/openvpn/server/
Pročitajte i stvarnu konfiguraciju poslužitelja, uključujući sve što gura, prije nego što zaključite na temelju datoteke klijenta. Zatim povećajte razinu detalja i pratite jedan interval od početka do kraja: razina 3 već prikazuje linije ponovnog pregovaranja, a vremenske oznake kažu ponavlja li se događaj svakih 3600 sekundi ili slijedi aktivnost.
Mijenjajte to tamo gdje se stvarno gura
Prošireni lijek je jedan redak u profilu klijenta i otprilike pola vremena to je pogrešno mjesto. Budući da pobjeđuje manja vrijednost strane, klijent koji postavi tajmer na nulu ipak može biti ponovno pregovaran od poslužitelja koji se nije promijenio.
# on both ends, or on the side that owns the pushed configuration
reneg-sec 0
Gdje se profili generiraju središnje, uredite predložak, a ne objavljenu kopiju, inače će sljedeće pokretanje dodjele vratiti vrijednost koju ste upravo uklonili. Provjerite promatranjem dva intervala, a ne jednoga: jedan tihi sat u skladu je i s tajmerom postavljenim na 7200.
Odlučite i što se događa pri mješovitoj implementaciji. Ako promjenu prvo pustite klijentima, ostaje prozor u kojem poslužitelj još pokreće osvježavanje; to je bezopasno, ali zbunjuje ako pratite zapise za potvrdu. Prvo promijenite stranu s manjom vrijednošću i simptom nestaje na mjestu koje očekujete.
Čega se odričete isključivanjem ponovnog pregovaranja
Redovno ponovno pregovaranje ograničava koliko dugo jedan skup ključeva podatkovnog kanala štiti promet. Isključivanje tajmera ne kvari tunel, a na kućnom usmjerivaču ili pristupniku male pisarne praktična je izloženost skromna. To je ipak razmjena i vrijedi je imenovati prije nego što je napravite. Mijenja se koliko dugo jedan skup ključeva štiti sesiju, a ne radi li tunel uopće.
Razuman slučaj za isključivanje je reset koji kvari nešto što se ne može nastaviti: poziv koji pada, sesija udaljenog radnog stola koju treba ponovno uspostaviti, sigurnosna kopija koja počinje ispočetka. Ako je pauza nevidljiva korisnicima, zadržavanje zadane vrijednosti ništa ne košta i čuva vam rotaciju ključeva.
Radije popravite uzrok kad to obrazac dopušta. Osvježavanje koje zapne na pola dok je prvo rukovanje uspjelo upućuje na put, a ne na tajmer: tražite problem veličine paketa u većoj razmjeni kontrolnog kanala, vatrozid sa stanjem koji odbacuje tok ili prijedlog koji uspijeva samo iz prvog pokušaja. Svako od toga ostavlja trag u istom zapisu koji ste upravo pročitali. Isključivanje tajmera skriva taj dokaz.
Kad interval upućuje negdje drugdje
Dva susjeda u konfiguraciji daju slične simptome i različite popravke. ping-restart ponovno pokreće tunel kad ništa ne stigne u zadanom razdoblju, dok ping-exit potpuno isključuje klijenta. Prekid u mirovanju bez ikakvog ponovnog pregovaranja u zapisu pripada njima ili NAT uređaju kojem je mapiranje UDP-a isteklo po vlastitom rasporedu.
Potrošački usmjerivači, mobilne pristupne točke i NAT na razini operatera istječu mirojuće UDP sesije nikome ne govoreći. Taj kvar slijedi mirovanje, a ne sat, i to je znak: sesija koja padne nakon deset tihih minuta i preživi sat ravnomjernog prometa ne pregovara ponovno.
Zapišite tri stvari prije nego što promijenite četvrtu: interval koji ste izmjerili, stvarnu vrijednost koju ste našli i naredbu koja ju je pokazala. Ako se interval pomiče kad se tajmer pomakne, mehanizam je prepoznat i popravak je odluka o gornjoj razmjeni. Ako se ne pomiče, vratite postavku i nastavite gledati keepalive, stanje NAT-a i gubitak paketa.