SSH сессиясын тірі ұстау туралы кеңестердің көбі «ServerAliveInterval 30 қос» деп тоқтап, пайдалы бөліктерін тыс қалдырады. Кілт сөз — арна үнсіз болғанда ғана іске қосылатын клиент жақтағы таймер, ол секундтарды емес, жауапсыз зондтарды санайды және бірінші сәйкес келген мән жеңетін файлда тұрады. Осы үш қасиетте қателессеңіз, сау VPN сессиясы сонда да үзіледі, ал өлі сессия ілулі қалады.

Екі бағыт түрлі демондарға тиесілі

ServerAliveInterval-ды сіздің ssh клиентіңіз оқиды. ClientAliveInterval-ды алыс жақтағы sshd оқиды және қарсы бағытта, серверден клиентке қарай зондтайды. Олар бір нәрсенің екі атауы емес және бірлесіп жұмыс істемейді, сондықтан біреуін орнату екінші жақтың мінез-құлқына әсер етпейді. Оларды шатастыру — түзетудің бір хостта жұмыс істеп, келесісінде істемеуінің кәдімгі себебі.

Екеуі де нөлді қабылдайды. Нөлде клиент мүлде ештеңе жібермейді, ал сервер жағында нөлдік ClientAliveCountMax жауапсыз тексерулерден кейін болатын ажыратуды өшіреді.

Зонд нені дәлелдейді, нені дәлелдемейді

Белгіленген аралық серверден дерек келмей өткен соң, клиент қолданыстағы шифрланған арна арқылы шағын сұраныс жіберіп, жауап күтеді. ServerAliveCountMax сессия үзілгенге дейін олардың қаншасы жауапсыз қала алатынын анықтайды. 60 аралық және 3 санымен клиент шамамен үш минут үнсіздіктен кейін бас тартады, және бұл сан желі стандарты емес, сіздің конфигурацияңыздың қасиеті. Аралықты әдепкі 0 мәнінде қалдырсаңыз, зонд мүлде жіберілмейді, сондықтан кәдімгі клиент өлі қосылымда шексіз отыра алады.

Алмасу SSH көлігінің ішінде жүретіндіктен, жауап қарсы жақтың SSH процесі әлі де оқып, жазып жатқанын дәлелдейді. Ол сол сессия ішінде іске қосқан бағдарлама туралы ештеңе айтпайды: дерекқор клиенті, бағытталған порт немесе ұзақ жұмыс істейтін скрипт көлік зондтарға көңілді жауап беріп жатқанда кептеліп қалуы мүмкін.

TCPKeepAlive — бір қабат төмендегі бөлек механизм. Оны ядро басқарады, ол шифрланбаған, және SSH демоны кептелген қарсы жақ оны әлі де қанағаттандыра алады. Сондықтан сокетті емес, сессияны маңызды санасаңыз, SSH деңгейіндегі зонд мәндірек сигнал болып табылады.

Қай мәннің қалатынын рет анықтайды

OpenSSH әр параметр үшін алған бірінші мәнді қолданады, сондықтан нақты Host блогы да сәйкес келетін кез келген кеңірек блоктан бұрын тұруы керек. Қатынас белгілері бар әдепкі мәндерді файлдың төменгі жағына қойыңыз, жоғарысына емес, және төмендегі Match блогы бұрын орнатылған мәнді жоя алмайтынын есте сақтаңыз. OpenSSH клиент конфигурациясының анықтамалығы бірінші мән ережесін тікелей айтады, және ортақ конфигурацияны қайта ұйымдастырмас бұрын оны бір рет оқыған жөн.

Пәрмен жолының опциялары файлдан басым, бұл уақытша тәжірибені арзан етеді:

ssh -o ServerAliveInterval=15 -o ServerAliveCountMax=4 office-shell

Клиенттің шын мәнінде нені шешкенін, өзіңіз жаздым деп ойлағаннан гөрі көру үшін одан тиімді конфигурацияны шығаруды сұраңыз. Шығыста сол хост атауы үшін біріктірілген мәндер бар және бұл адасқан бұрынғы блокты ұстап алудың ең жылдам жолы:

ssh -G office-shell | grep -i alive

Туннель арқылы keepalive не істейді

Мерзімді трафик күйі бар NAT немесе брандмауэр картасының мерзімі бітуіне жол бермейді, бұл қосылымсыз ағындарды бірнеше минуттан кейін тастайтын VPN үшін нақты пайда. Әр 60 секунд сайын келетін зондтар ешқандай қолданба деректерін тасымалдамай сол картаны жаңартады.

Олар жоғалған жолды қайта сала алмайды. Туннель интерфейсі жоғалғанда зондтар қалғанның бәрі сияқты сәтсіз аяқталады, ал сан таусылғанда сессия бітеді. Тіршілікті анықтау және жолды қалпына келтіру түрлі мәселелер, және тек біріншісін ssh_config ішінде конфигурациялауға болады. Аралық пен сан шын мәнінде сізге клиенттің қаншалықты жылдам байқайтынын сатып алады, ал пайдаланушы мұны қатып қалу ретінде сезінеді.

Мультиплексті қосылымдар бір қатпар қосады. ControlMaster ойында болғанда зондтар негізгі қосылымға тиесілі, ал қолданыстағы негізгі үстіндегі жаңа сессия сол негізгі келіскен нәрсені мұраға алады. Егер mux негізгісі кептелсе, басқа терезені ашу жолды қайта сынамайды.

Параметрді бастан аяқ растау

Серверде файлды оқып, қай include жеңгенін болжаудың орнына демонның тиімді конфигурациясын шығарыңыз:

sshd -T | grep -i clientalive

Содан кейін жөндеу шығысы қосулы нақты сессияны бақылаңыз. Сан таусылғанда клиент күту уақытының жолын басып шығарады, ал оның айналасындағы уақыт белгілері үнсіздіктің үздіксіз болғанын немесе зондтардың мүлде жіберілмегенін көрсетеді. Зонд трафигі жоқ өлетін сессия әдетте кілт сөзді ешқашан сәйкес келмеген блокта ұстайды.

Тек туннель арқылы жететін кез келген хост үшін екі тексеру қосқан жөн: шешілген аралықтың өзіңіз көздеген мән екеніне және сол аралықтың санға көбейтіндісі VPN қақпасындағы бос тұру мерзімінен қысқа екеніне көз жеткізіңіз. Екінші сан үлкен болса, қақпа ағынды бірінші болып үнсіз тастайды да, SSH зонды ештеңе хабарлауға мүмкіндік таппайды.

Қатысты мақалалар