Šesťdesiat minút, alebo tridsať, alebo sto dvadsať: výpadok, ktorý padne na okrúhly interval, takmer nikdy nie je sieť. OpenVPN obnovuje podľa časovača kľúčový materiál, ktorý chráni dátový kanál, a časovač kratší než ten, ktorý ste predpokladali, vyzerá presne ako spojenie, ktoré stále zlyháva. Používatelia hlásia prerušené pripojenie, zatiaľ čo log hlási úspešnú výmenu kľúčov. Návod nižšie oddeľuje túto obnovu od skutočného reštartu, číta hodnotu, ktorá skutočne platí, a mení ju až po tom, čo je cena na stole.

Postupujte podľa krokov v poradí, pretože prvý rozhoduje, či sa vás zvyšok stránky vôbec týka. Ak preskočíte dopredu, strávite večer ladením časovača pre poruchu, ktorá s ním nemá nič spoločné.

Rozlíšte mäkký reset od reštartu

Riadok v logu je celá diagnóza. Renegociácia zapíše mäkký reset a potom novú výmenu kľúčov v tom istom tuneli: rozhranie si zachová adresu, trasy sa znova nepridávajú a nadviazané TCP relácie zvyčajne prežijú s pauzou. Skutočný reštart pretrhne reláciu, znova zostaví rozhranie, môže prideliť inú adresu klienta a zabije každé dlhodobé spojenie. Obe udalosti sú bežné; len jedna z nich vysvetľuje prerušený hovor.

journalctl -u openvpn-client@office -b --no-pager | grep -nE 'soft reset|Connection reset|reneg|TLS Error'
openvpn --version | head -n 1

Riadok s verziou je dôležitý, pretože formulácie v logu sa medzi vydaniami posúvajú a správa, ktorú si pamätáte z 2.3, môže byť v 2.6 formulovaná inak. Čítajte vlastný log, nie výňatok z fóra od niekoho iného. Keď žiadate o pomoc, citujte presný riadok, pretože parafráza stráca detail, ktorý udalosť identifikuje. Ak sa adresa rozhrania počas udalosti nezmení a zoznam relácií prežije, vidíte obnovu a zostávajúce časti platia.

Čítajte platný časovač, nie svoj súbor

reneg-sec je počet sekúnd medzi renegociáciami dátového kanála a jeho predvolená hodnota je 3600. Každá strana nesie svoju hodnotu a práve menšia z dvoch obnovu spúšťa. To jediné pravidlo vysvetľuje väčšinu hlásení: profil klienta, ktorý nastaví veľké číslo, sa napriek tomu resetuje každú hodinu, kým server drží predvolenú hodnotu.

grep -Rn --include='*.conf' -E 'reneg-sec|reneg-bytes' /etc/openvpn
# server side, including included files
grep -Rn -E '^reneg-sec' /etc/openvpn/server/

Prečítajte si aj platnú konfiguráciu servera, vrátane všetkého, čo posiela, skôr než z klientského súboru vyvodíte záver. Potom zvýšte podrobnosť a sledujte jeden interval od začiatku do konca: úroveň 3 už zobrazuje riadky renegociácie a časové značky povedia, či sa udalosť opakuje každých 3600 sekúnd alebo namiesto toho nasleduje aktivitu.

Meňte to tam, kde sa to skutočne posiela

Rozšírený liek je jediný riadok v klientskom profile a približne v polovici prípadov je to nesprávne miesto. Pretože vyhráva nižšia hodnota strany, klient, ktorý nastaví časovač na nulu, môže byť stále znovu vyjednaný serverom, ktorý sa nezmenil.

# on both ends, or on the side that owns the pushed configuration
reneg-sec 0

Kde sa profily generujú centrálne, upravte šablónu, nie nasadenú kópiu, inak nasledujúce spustenie provisioningu obnoví hodnotu, ktorú ste práve odstránili. Overte sledovaním dvoch intervalov, nie jedného: jediná tichá hodina je v súlade aj s časovačom nastaveným na 7200.

Rozhodnite aj o tom, čo sa stane pri zmiešanom nasadení. Ak zmenu najprv rozšírite na klientov, zostane okno, v ktorom server stále spúšťa obnovu; je to neškodné, ale mätúce, ak sledujete logy kvôli potvrdeniu. Najprv zmeňte stranu s nižšou hodnotou a symptóm zmizne v bode, ktorý očakávate.

Čoho sa vzdáte vypnutím renegociácie

Pravidelná renegociácia obmedzuje, ako dlho jedna sada kľúčov dátového kanála chráni prevádzku. Vypnutie časovača tunel nerozbije a na domácom routeri alebo bráne malej kancelárie je praktická expozícia skromná. Je to stále výmena a výmenu sa oplatí pomenovať, kým ju urobíte. Mení sa to, ako dlho jedna sada kľúčov chráni reláciu, nie to, či tunel vôbec funguje.

Rozumný prípad na vypnutie je reset, ktorý rozbije niečo, čo sa nedá obnoviť: hovor, ktorý padne, relácia vzdialenej plochy, ktorú treba znovu nadviazať, záloha, ktorá začína od začiatku. Ak je pauza pre používateľov neviditeľná, ponechanie predvolenej hodnoty nič nestojí a zachová vám rotáciu kľúčov.

Uprednostnite opravu príčiny, keď to vzor dovoľuje. Obnova, ktorá zlyhá v polovici, kým prvý handshake uspel, ukazuje na cestu, nie na časovač: hľadajte problém s veľkosťou paketu vo väčšej výmene riadiaceho kanála, stavovú bránu firewall, ktorá zahadzuje tok, alebo návrh, ktorý uspeje iba na prvý pokus. Každý z nich zanechá stopu v tom istom logu, ktorý ste práve čítali. Vypnutie časovača ten dôkaz skryje.

Keď interval ukazuje inam

Dvaja susedia v konfigurácii dávajú podobné symptómy a rôzne opravy. ping-restart reštartuje tunel, keď po nastavený čas nič neprichádza, zatiaľ čo ping-exit klienta úplne vypne. Výpadok v nečinnosti bez akejkoľvek renegociácie v logu patrí týmto alebo zariadeniu NAT, ktoré nechalo mapovanie UDP vypršať podľa vlastného rozvrhu.

Spotrebiteľské routery, mobilné hotspoty a NAT na úrovni operátora nechávajú nečinné UDP relácie vypršať bez toho, aby to niekomu povedali. Tá porucha nasleduje nečinnosť, nie hodiny, a to je tá známka: relácia, ktorá padne po desiatich tichých minútach a prežije hodinu stabilnej prevádzky, nevyjednáva znova.

Zapíšte si tri veci, kým zmeníte štvrtú: interval, ktorý ste zmerali, platnú hodnotu, ktorú ste našli, a príkaz, ktorý ju ukázal. Ak sa interval pohne, keď sa pohne časovač, mechanizmus je určený a oprava je rozhodnutie o výmene vyššie. Ak sa nepohne, vráťte nastavenie a ďalej sledujte keepalive, stav NAT a stratu paketov.

Súvisiace články