SSH ServerAliveInterval преку VPN: која страна ја праќа сондата?
ServerAliveInterval е тајмер од страната на клиентот што брои неодговорени сонди, а не секунди. Видете која страна го праќа, зошто редоследот на Host блоковите победува и како да го проверите.
Повеќето совети за одржување на 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 сондата никогаш не добива шанса да пријави нешто.