Клониране от офиса работи, същото клониране през мобилна точка работи, а същото клониране от хотелска мрежа увисва, докато не се включи VPN. SSH ръкостискането завършва и сесията замлъква при първия реален трансфер. Един ред, добавен в конфигурацията на клиента, излекува git и ssh едновременно. Когато една настройка на клиента поправя няколко инструмента наведнъж, дефектът е в това, което клиентът изпраща, а не в канала, по който го изпраща.

Прочетете симптома като разлика в маршрута

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

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

Клиентът слага байт за QoS на всеки SSH сокет

Всяка OpenSSH връзка от 7.8 нататък носи в IP заглавката стойност, която рутерите могат да използват за приоритизиране на трафика. Терминалните сесии получават една стойност, а масовите копия — друга, на теорията, че човекът, който пише, заслужава по-добро отношение от трансфера на файл. Повечето мрежи напълно пренебрегват подсказката и затова тя остава незабелязана с години. Малцинство от Wi-Fi драйвери, мобилни оператори и VPN концентратори реагират на нея, а някои от тях реагират лошо.

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

Първо потвърдете версията на клиента с ssh -V. Всичко на 7.8 или по-високо носи това поведение по подразбиране.

Три команди, които отделят това от MTU и DNS

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

ssh -o IPQoS=none -v [email protected]
ssh -G [email protected] | grep -i ipqos
sudo tcpdump -ni any -vv "tcp port 22"

Първата команда повтаря неуспешната операция с изключена маркировка и успешното ѝ изпълнение е най-силното единично доказателство, с което разполагате. Втората отпечатва конфигурацията, която клиентът действително ще приложи към тази дестинация, което хваща остарял запис във файл, който сте забравили. Третата показва байта TOS в двете посоки, докато трансферът е зациклил, а интересният модел е стойност по счупения маршрут и липса на такава по работещия.

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

Сложете изключението в един файл, по един хост наведнъж

Изключението принадлежи до хоста, за който се отнася, с коментар, който казва защо съществува.

Host gitlab.example.internal
    IPQoS none
    # direct route rewrites the marking; the tunnel route passes it

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

Бъдете изрични какво не покрива изключението. То важи за SSH, така че HTTPS отдалечено хранилище, огледало на пакети и браузър остават извън него и отказ във всяко от тях изисква собствени доказателства. По верига през бастион всяка стъпка използва конфигурацията на клиента и стъпката, която забива, е тази, която си струва да се ограничи.

Затворете цикъла със собственика на мрежата

Предайте находката като четири факта: версия на клиента, тестван маршрут, използван VPN клиент и коя посока е носила маркировката. Тези четири са достатъчни на собственика на мрежата, за да възпроизведе отношението и да реши дали е умишлено.

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

Промяната в клиента е временно решение със срок на годност. Запишете този срок в коментара.

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