Git без VPN вісіць? OpenSSH пазначае пакеты праз IPQoS
OpenSSH па змаўчанні пазначае свае пакеты значэннем QoS. Там, дзе шлях адкідае гэтую пазнаку, push вісіць, пакуль тунэль не зменіць маршрут пакетаў.
Клон з офіса працуе, той самы клон праз кропку доступу тэлефона працуе, а той самы клон з гатэльнай сеткі вісіць, пакуль не ўключаць 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-кліент, які выкарыстоўваецца, і які кірунак нёс пазнаку. Гэтых чатырох дастаткова ўладальніку сеткі, каб прайграць абыходжанне і вырашыць, ці яно наўмыснае.
Калі выключэнне не лячыць завісанне, выдаліце яго. Абыход, які перажыў няўдалы эксперымент, становіцца фальклорам, і наступны чалавек марнуе гадзіну, даказваючы, што ён нічога не робіць. Калі ж яно лячыць завісанне, шлях усё яшчэ няправільны для ўсіх іншых інструментаў, якія ім карыстаюцца, і рамонт — справа таго, хто кіруе прамежкавай прыладай.
Змена ў кліенце — гэта часовы абыход з датай заканчэння. Запішыце гэтую дату ў каментарый.