ServerAliveInterval v SSH prek VPN: kateri konec pošlje sondo?
ServerAliveInterval je odjemalčev časovnik, ki šteje neodgovorjene sonde, ne sekunde. Poglejte, kateri konec jih pošilja, zakaj zmaga vrstni red blokov Host in kako to preveriti.
Večina nasvetov za ohranjanje žive seje SSH se ustavi pri «dodajte ServerAliveInterval 30» in izpusti koristne dele. Ključna beseda je časovnik na strani odjemalca, ki se sproži le, ko kanal molči, šteje neodgovorjene sonde namesto sekund in živi v datoteki, kjer zmaga prva ujemajoča vrednost. Zmotite se pri teh treh lastnostih in zdrava seja VPN bo vseeno padla, medtem ko bo mrtva visela.
Smeri pripadata različnima demonoma
ServerAliveInterval bere vaš odjemalec ssh. ClientAliveInterval bere sshd na oddaljeni strani in sondira v nasprotno smer, od strežnika k odjemalcu. Nista vzdevka in ne sodelujeta, zato nastavitev enega ne vpliva na vedenje drugega konca. Njuna zamenjava je običajen razlog, da popravek deluje na enem gostitelju in na naslednjem ne.
Oba sprejmeta ničlo. Pri ničli odjemalec ne pošlje prav ničesar, na strani strežnika pa ClientAliveCountMax z ničlo izklopi prekinitev, ki bi sicer sledila neodgovorjenim preverjanjem.
Kaj sonda dokaže in česa ne
Ko poteče nastavljeni interval, ne da bi s strežnika prispeli podatki, odjemalec pošlje majhno zahtevo po obstoječem šifriranem kanalu in čaka na odgovor. ServerAliveCountMax določi, koliko jih lahko ostane brez odgovora, preden se seja prekine. Pri intervalu 60 in številu 3 odjemalec obupa približno po treh minutah tišine, in ta številka je lastnost vaše konfiguracije, ne omrežni standard. Pustite interval na privzeti vrednosti 0 in nobena sonda ne bo nikoli poslana, zato lahko običajen odjemalec neomejeno sedi na mrtvi povezavi.
Ker izmenjava poteka znotraj prenosa SSH, odgovor dokazuje, da proces SSH na drugi strani še bere in piše. O programu, ki ste ga zagnali v tej seji, ne pove ničesar: odjemalec zbirke podatkov, posredovana vrata ali dolgo delujoča skripta so lahko zataknjeni, medtem ko prenos veselo odgovarja na sonde.
TCPKeepAlive je ločen mehanizem eno plast nižje. Zanj skrbi jedro, ni šifriran in nasprotna stran, katere demon SSH je zataknjen, ga lahko še vedno izpolni. Zato je sonda na ravni SSH smiselnejši signal, ko vam je pomembna seja in ne vtičnica.
O preživetju vrednosti odloča vrstni red
OpenSSH uporabi prvo vrednost, ki jo dobi za vsak parameter, zato mora biti določen blok Host pred vsakim širšim blokom, ki bi se prav tako ujemal. Privzete vrednosti z nadomestnimi znaki postavite na dno datoteke, ne na vrh, in ne pozabite, da blok Match nižje ne more razveljaviti že nastavljene vrednosti. Referenca za konfiguracijo odjemalca OpenSSH neposredno navaja pravilo prve vrednosti, in vredno jo je prebrati enkrat, preden preuredite skupno konfiguracijo.
Možnosti ukazne vrstice premagajo datoteko, kar naredi začasen poskus poceni:
ssh -o ServerAliveInterval=15 -o ServerAliveCountMax=4 office-shellČe želite videti, kaj je odjemalec resnično razrešil, in ne tistega, kar mislite, da ste napisali, ga prosite, naj izpiše dejansko konfiguracijo. Izpis vsebuje združene vrednosti za to ime gostitelja in je najhitrejši način, da ujamete zablodeli prejšnji blok:
ssh -G office-shell | grep -i aliveKaj keepalivi naredijo skozi tunel
Občasni promet prepreči, da bi poteklo preslikavanje pri NAT ali požarnem zidu, ki si zapomni stanje, kar je resnična korist na VPN, katerega prehod po nekaj minutah zavrže nedejavne tokove. Sonde, ki prispejo vsakih 60 sekund, to preslikavanje osvežijo, ne da bi prenašale kakršne koli podatke aplikacije.
Poti, ki je izginila, ne morejo znova zgraditi. Ko vmesnik tunela izgine, sonde odpovejo kot vse drugo, seja pa se konča, ko se število izčrpa. Zaznavanje življenja in obnova poti sta različna problema, in v ssh_config je mogoče nastaviti le prvega. Kar vam interval in število v resnici kupita, je hitrost, s katero odjemalec to opazi, in prav to uporabnik doživlja kot zataknitev.
Multipleksirane povezave dodajo gubo. Ko je v igri ControlMaster, sonde pripadajo glavni povezavi, nova seja prek obstoječe glavne pa podeduje, kar je ta glavna povezava izpogajala. Če je glavni proces muxa zataknjen, odpiranje drugega okna poti ne bo znova preizkusilo.
Potrditev nastavitve od začetka do konca
Na strežniku izpišite dejansko konfiguracijo demona, namesto da bi brali datoteko in ugibali, kateri include je zmagal:
sshd -T | grep -i clientaliveNato opazujte resnično sejo z vklopljenim izpisom za razhroščevanje. Ko se število izčrpa, odjemalec izpiše vrstico o časovni omejitvi, časovni žigi okoli nje pa pokažejo, ali je bila tišina neprekinjena ali sonde sploh niso bile poslane. Seja, ki umre brez prometa sond, ima običajno ključno besedo v bloku, ki se ni nikoli ujemal.
Za vsakega gostitelja, do katerega pridete le skozi tunel, se splača dodati dve preverjanji: potrdite, da je razrešeni interval tisti, ki ste ga nameravali, in da je ta interval pomnožen s številom krajši od časa nedejavnosti na prehodu VPN. Ko je drugo število večje, prehod najprej tiho zavrže tok in sonda SSH sploh ne dobi priložnosti, da bi kaj sporočila.