Ar Git stringa be VPN? OpenSSH žymi paketus IPQoS
OpenSSH pagal nutylėjimą žymi savo paketus QoS reikšme. Ten, kur maršrutas tą žymę išmeta, push stringa tol, kol tunelis nepakeičia maršruto, kuriuo eina paketai.
Klonas iš biuro veikia, tas pats klonas per telefono hotspotą veikia, o tas pats klonas iš viešbučio tinklo stringa tol, kol įjungiamas VPN. SSH rankos paspaudimas baigiasi, ir sesija nutyla per pirmą tikrą perdavimą. Viena eilutė, pridėta prie kliento konfigūracijos, išgydo git ir ssh kartu. Kai vienas kliento nustatymas iš karto sutaiso kelis įrankius, klaida yra tame, ką klientas siunčia, o ne toje jungtyje, kuria siunčia.
Skaitykite simptomą kaip maršruto skirtumą
Tunelis, kuris išgydo problemą, retai būna taisymas. Jis pakeičia maršrutą, operatorių ir tarpinius įrenginius, o nešiojamasis kompiuteris toliau gamina lygiai tuos pačius paketus. Jei vienas maršrutas netinkamai apdoroja antraštę, o kitas ją praleidžia nepakeistą, skirtumas yra tarpinio įrenginio politikoje, o ne kliente. Čia tunelis yra liudytojas, o ne sprendimas.
Taškas, kuriame sesija miršta, dar labiau susiaurina. Niekas, kas nepavyksta ieškant vardo ar keičiantis raktams, taip neatrodė. Sesija, kuri autentifikuojasi, atspausdina banerį ir tada sustingsta per pirmą didelį įrašymą, jau įrodė, kad maršrutizavimas, vardai ir prisijungimo duomenys visi veikia.
Klientas užspaudžia QoS baitą ant kiekvieno SSH lizdo
Kiekviena OpenSSH jungtis nuo 7.8 versijos IP antraštėje neša reikšmę, kurią maršrutizatoriai gali naudoti srauto prioritetizavimui. Terminalo sesijos gauna vieną reikšmę, o masinės kopijos kitą, remiantis teorija, kad spausdinantis žmogus nusipelno geresnio traktavimo nei failo perdavimas. Dauguma tinklų šios užuominos visiškai nepaiso, todėl ji metų metus lieka nepastebėta. Mažuma Wi-Fi tvarkyklių, mobiliojo ryšio operatorių ir VPN koncentratorių ja vadovaujasi, o kai kurie iš jų elgiasi blogai.
Kai ši reikšmė perrašoma arba išmetama srauto viduryje, ryšys nesutrūksta, jis nustoja judėti į priekį. Pakartotiniai siuntimai auga, langas sugriūva, o programa nieko nepraneša, nes niekas nesugrąžino klaidos. Būtent ta tyla verčia žmones simptomą apibūdinti kaip sustingimą, o ne kaip gedimą.
Pirmiausia patvirtinkite kliento versiją su ssh -V. Bet kuri 7.8 ar naujesnė versija pagal nutylėjimą turi šį elgesį.
Trys komandos, atskiriančios tai nuo MTU ir DNS
Prieš redaguojant bet kurį konfigūracijos failą, reikia atmesti dvi panašias priežastis. MTU gedimas praleidžia mažus mainus ir sustingsta per pirmą didelį paketą, o vardų gedimas niekada nesukuria sesijos.
ssh -o IPQoS=none -v [email protected]
ssh -G [email protected] | grep -i ipqos
sudo tcpdump -ni any -vv "tcp port 22"
Pirmoji komanda pakartoja nepavykusią operaciją išjungus žymę, ir jos sėkmingas įvykdymas yra stipriausias vienintelis turimas įrodymas. Antroji atspausdina konfigūraciją, kurią klientas iš tikrųjų pritaikys tam tikslui, ir taip pagauna pasenusį įrašą pamirštame faile. Trečioji rodo TOS baitą abiem kryptimis, kol perdavimas stringa, o įdomus modelis yra reikšmė sugedusiame maršrute ir jos nebuvimas veikiančiame.
Fiksuokite nešiojamajame kompiuteryje, o ne serveryje, nes reikšmę nustato siuntėjas ir bet kuri kryptis gali ją pakeisti. Palyginkite veikiantį ir nepavykstantį maršrutą ta pačia fiksacija, ir skirtumas pasirodys be spėliojimų.
Įdėkite išimtį į vieną failą, po vieną hostą
Išimtis priklauso šalia hosto, kuriam ji taikoma, su komentaru, kuris pasako, kodėl ji egzistuoja.
Host gitlab.example.internal
IPQoS none
# direct route rewrites the marking; the tunnel route passes it
Apimtis svarbesnė už pačią reikšmę. Šabloninis įrašas išjungia elgesį visur, išmeta užuominą, kuri padeda gerai besielgiančiuose tinkluose, ir neleidžia niekam pasakyti, kada ji atsirado. Įrašas vienam hostui yra įskaitomas, grįžtamas ir po tinklo sutaisymo lengvai ištrinamas. Asmeniniam apejimui naudokite vartotojo failą, o kai visam parkui reikia tos pačios išimties – valdomą failą.
Aiškiai pasakykite, ko išimtis neapima. Ji taikoma SSH, todėl HTTPS nuotolinė saugykla, paketų veidrodis ir naršyklė lieka už jos ribų, ir bet kurio iš jų gedimas reikalauja savo įrodymo. Grandinėje per bastioną kiekvienas šuolis naudoja kliento konfigūraciją, o stringantis šuolis yra tas, kurį verta apriboti.
Uždarykite ratą su tinklo savininku
Perduokite radinį kaip keturis faktus: kliento versija, išbandytas maršrutas, naudojamas VPN klientas ir kuri kryptis nešė žymę. Šių keturių pakanka tinklo savininkui atkurti traktavimą ir nuspręsti, ar jis tyčinis.
Jei išimtis neišgydo sustingimo, pašalinkite ją. Apejimas, kuris išgyvena nepavykusį eksperimentą, tampa folklore, ir kitas žmogus praleidžia valandą įrodinėdamas, kad jis nieko nedaro. Jei jis išgydo sustingimą, kelias vis tiek yra neteisingas kiekvienam kitam įrankiui, kuris jį kerta, o taisymas priklauso tam, kas valdo tarpinį įrenginį.
Kliento pakeitimas yra laikina priemonė su galiojimo data. Įrašykite tą datą į komentarą.