SSH се свързва, показва се подканата и сесията умира, щом команда върне нещо обемно. Ехото работи още малко, после връзката изтича, докато клиентът все още показва тунела като вдигнат. Сесия, която е здрава до пристигането на данни, обикновено се удря в ограничение на размера, а не в дефект на SSH. Проверките по-долу са подредени така, че най-евтиното обяснение да отпадне първо.

Прочетете формата на отказа, преди да пипате профила

Малките пакети минават, пълните — не. Подкана, банер или едно натискане на клавиш се побират лесно; списък на директория, изтегляне или поставен блок — не. Размерът, при който поведението се променя, е уликата, а не фактът, че SSH е програмата.

Механизмът е откриване на MTU на пътя, което зависи от обратна връзка. TCP избира размер на сегмент и когато рутер по пътя не може да препрати получения пакет, той би трябвало да го каже с ICMP съобщение. Инкапсулацията прави външния пакет по-голям от вътрешния, затова използваемият размер в тунела винаги е под физическата връзка. Филтрирайте тези ICMP съобщения някъде и подателят никога не получава корекцията, продължава да праща пълни сегменти, а външният пакет се изхвърля без уведомление.

Измерете тавана от двете страни

Сравнете MTU на тунела с физическата връзка, преди да промените което и да е от двете. Тунел, който е копирал физическата стойност, вече ви е казал къде живее несъответствието.

Проверете отвътре в тунела със заявка без фрагментиране, като сваляте полезния товар, докато отговорите се върнат. Аргументът за размер брои само товара, затова работещото число винаги е под MTU на интерфейса. Добавете размерите на заглавките обратно, ако ви трябва числото за интерфейса.

ip link show tun0
ping -M do -s 1380 10.9.0.1

Повторете проверката срещу публичния адрес на сървъра отвън тунела. Ако големите проверки се провалят и там, границата стои на пътя към сървъра и никаква опция на тунела няма да я помръдне. Това сравнение ви спестява настройка на клиент, който никога не е бил проблемът. Запишете и двата резултата, преди да отворите конфигурационен файл.

mssfix и fragment вършат различна работа

mssfix ограничава размера на сегмента, който TCP връзките в тунела обявяват по време на ръкостискането. Това е правилният лост за SSH, HTTPS и копиране на файлове, затова блокирането често изчезва, щом се зададе. Той изобщо не пипа UDP товарите.

Тунел, който носи и UDP услуга, може да продължи да се проваля след поправката на SSH, а този изход обърква всеки, който предполага, че една опция покрива всичко.

fragment е другият механизъм и различен инструмент. Той разделя прекалено големите пакети преди инкапсулация, важи само за UDP транспорт, добавя разходи за всяка дейтаграма и е документиран като последна мярка при счупено откриване. И двете настройки трябва да съвпадат при партньорите, които завършват тунела. Единият край ограничава, докато другият фрагментира, и това дава предупреждения в журнала и поведение, което никой не може да предвиди от файловете.

Свалянето на MTU на интерфейса е грубият вариант

Намаляването на MTU на интерфейса от двата края е грубият инструмент. То казва на всеки вътрешен подател по-малко число, което работи, и начислява тази цена на целия трафик, вместо на TCP потоците, които се нуждаят от нея.

Изберете го, когато тунелът носи трафик, който не можете да ограничите, или когато клиентът е устройство, чийто профил не контролирате. Приложете го симетрично и запишете стойността до профила. Наполовина приложена промяна е по-лоша от никаква, защото изглежда като поправка.

Тествайте отново с трансфера, който блокира

Свържете се отново, за да се заредят настройките, отворете нова връзка и повторете командата, която замръзна. Размерът на сегмента се договаря при ръкостискането, затова сесия, оцеляла след пресвързването, все още носи старата стойност. Ping е слаб тест тук, защото целият отказ е, че малките пакети минават. Използвайте списъка, изтеглянето или поставеното, което се счупи.

Ако блокирането остане при по-малък размер, търсете другаде: защитна стена със състояние, която изтича потока, дублиран адрес или маршрут, който се измества при пресвързване. Запишете размера на проверката, която се провали, и настройката, която сменихте, защото точно тази двойка прави следващия доклад полезен.

Подобни статии