Git se blokira bez VPN-a? OpenSSH označava pakete IPQoS-om
OpenSSH prema zadanim postavkama označava svoje pakete QoS vrijednošću. Gdje put odbaci tu oznaku, push se blokira dok tunel ne promijeni rutu kojom paketi idu.
Kloniranje iz ureda radi, isto kloniranje preko mobilnog hotspota radi, a isto kloniranje s hotelske mreže visi dok se VPN ne uključi. SSH rukovanje završi i sesija utihne pri prvom stvarnom prijenosu. Jedan redak dodan u konfiguraciju klijenta liječi git i ssh zajedno. Kada jedna postavka klijenta popravi nekoliko alata odjednom, greška je u onome što klijent šalje, a ne u vezi kojom šalje.
Čitajte simptom kao razliku u rutiranju
Tunel koji liječi problem rijetko je popravak. On zamjenjuje rutu, operatera i posredničke uređaje, dok laptop i dalje proizvodi točno iste pakete. Ako jedna ruta pogrešno rukuje zaglavljem, a druga ga propušta netaknuto, razlika je u politici posredničkog uređaja, ne u klijentu. Tunel je ovdje svjedok, a ne rješenje.
Točka u kojoj sesija umire dodatno sužava stvar. Ništa što padne pri traženju imena ili pri razmjeni ključeva ne izgleda tako. Sesija koja se autentificira, ispiše banner i zatim se smrzne na prvom velikom upisu već je dokazala da rutiranje, imenovanje i vjerodajnice rade.
Klijent upisuje QoS bajt na svaki SSH socket
Svaka OpenSSH veza od 7.8 nadalje nosi u IP zaglavlju vrijednost koju usmjerivači mogu koristiti za prioritiziranje prometa. Terminalne sesije dobivaju jednu vrijednost, a veliko kopiranje drugu, prema teoriji da čovjek koji tipka zaslužuje bolji tretman od prijenosa datoteke. Većina mreža potpuno ignorira taj nagovještaj, zato on godinama prolazi nezapaženo. Manjina Wi-Fi upravljačkih programa, mobilnih operatera i VPN koncentratora reagira na njega, a neki od njih reagiraju loše.
Kada se ta vrijednost prepiše ili odbaci usred toka, veza ne pada, ona prestaje napredovati. Ponovna slanja rastu, prozor se ruši, a aplikacija ne javlja ništa jer ništa nije vratilo grešku. Ta tišina je razlog zašto ljudi simptom opisuju kao blokadu, a ne kao kvar.
Prvo potvrdite verziju klijenta s ssh -V. Sve na 7.8 ili više nosi to ponašanje prema zadanim postavkama.
Tri naredbe koje ovo odvajaju od MTU-a i DNS-a
Dva slična uzroka treba isključiti prije nego uredite bilo koju konfiguracijsku datoteku. Kvar MTU-a propušta male razmjene i smrzava se na prvom velikom paketu, dok kvar imenovanja nikad ne stvori sesiju.
ssh -o IPQoS=none -v [email protected]
ssh -G [email protected] | grep -i ipqos
sudo tcpdump -ni any -vv "tcp port 22"
Prva naredba ponavlja neuspjelu radnju s isključenom oznakom, a njezino uspješno izvršavanje najjači je pojedinačni dokaz koji imate. Druga ispisuje konfiguraciju koju će klijent stvarno primijeniti na to odredište, što hvata zastario unos u datoteci koju ste zaboravili. Treća pokazuje TOS bajt u oba smjera dok je prijenos zaglavljen, a zanimljiv je uzorak vrijednost na pokvarenoj ruti bez nje na ispravnoj.
Snimajte na laptopu, a ne na poslužitelju, jer pošiljatelj postavlja vrijednost i svaki smjer je može promijeniti. Usporedite ispravnu i neuspjelu rutu istom snimkom i razlika se pojavljuje bez nagađanja.
Stavite iznimku u jednu datoteku, jedan host odjednom
Iznimka pripada uz host na koji se odnosi, s komentarom koji kaže zašto postoji.
Host gitlab.example.internal
IPQoS none
# direct route rewrites the marking; the tunnel route passes it
Opseg je važniji od same vrijednosti. Unos s džokerom isključuje ponašanje svugdje, odbacuje nagovještaj koji pomaže na dobro podešenim mrežama i ne ostavlja nikoga da kaže kada se pojavio. Unos po hostu je čitljiv, povrativ i trivijalno ga je izbrisati nakon popravka mreže. Koristite korisničku datoteku za osobni zaobilazni postupak, a upravljanu datoteku kada cijela flota treba istu iznimku.
Budite izričiti o tome što iznimka ne pokriva. Ona vrijedi za SSH, pa HTTPS udaljeni repozitorij, zrcalo paketa i preglednik ostaju izvan nje, a kvar u bilo kojem od njih traži vlastiti dokaz. Na lancu kroz bastion svaki skok koristi konfiguraciju klijenta, a skok koji se blokira je onaj koji vrijedi ograničiti.
Zatvorite krug s vlasnikom mreže
Predajte nalaz kao četiri činjenice: verzija klijenta, testirana ruta, VPN klijent u uporabi i koji je smjer nosio oznaku. Te četiri dovoljne su vlasniku mreže da reproducira tretman i odluči je li namjeran.
Ako iznimka ne izliječi blokadu, uklonite je. Zaobilazni postupak koji preživi neuspjeli eksperiment postaje predaja, a sljedeća osoba potroši sat dokazujući da ne radi ništa. Ako pak izliječi blokadu, put je i dalje pogrešan za svaki drugi alat koji ga prelazi, a popravak pripada onome tko upravlja posredničkim uređajem.
Promjena na klijentu je privremeno rješenje s rokom valjanosti. Upišite taj rok u komentar.