Да ли се 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 клијент у употреби и који је смер носио ознаку. Ова четири довољна су власнику мреже да понови третман и одлучи да ли је намеран.
Ако изузетак не излечи застој, уклоните га. Обилажење које преживи неуспели експеримент постаје фолклор, и следећа особа потроши сат доказујући да оно ништа не чини. Ако га излечи, стаза је и даље погрешна за сваки други алат који је прелази, а поправка припада ономе ко управља посредничким уређајем.
Промена на клијенту је привремено решење са роком трајања. Упишите тај рок у коментар.