Klon z kancelárie funguje, ten istý klon cez mobilný hotspot funguje a ten istý klon z hotelovej siete visí, kým sa nezapne VPN. SSH handshake sa skončí a relácia stíchne pri prvom skutočnom prenose. Jeden riadok pridaný do konfigurácie klienta vylieči git aj ssh zároveň. Keď jedna voľba klienta opraví niekoľko nástrojov naraz, chyba je v tom, čo klient posiela, nie v spojení, ktorým to posiela.

Čítajte symptóm ako rozdiel v trasovaní

Tunel, ktorý problém vylieči, je málokedy oprava. Mení trasu, operátora aj medziľahlé zariadenia, zatiaľ čo laptop ďalej vyrába presne tie isté pakety. Ak jedna trasa zaobchádza s hlavičkou zle a iná ju prepustí nedotknutú, rozdiel je v politike medziľahlého zariadenia, nie v klientovi. Tunel je tu svedok, nie riešenie.

Miesto, kde relácia umiera, to ďalej zužuje. Nič, čo zlyhá pri preklade mien alebo pri výmene kľúčov, nevyzerá takto. Relácia, ktorá sa autentizuje, vypíše banner a potom zamrzne pri prvom veľkom zápise, už dokázala, že smerovanie, mená aj prihlasovacie údaje fungujú.

Klient orazítkuje každý SSH socket bajtom QoS

Každé spojenie OpenSSH od 7.8 vyššie nesie v IP hlavičke hodnotu, ktorú môžu smerovače použiť na prioritizáciu prevádzky. Terminálové relácie dostávajú jednu hodnotu a hromadné kópie inú, podľa teórie, že človek, ktorý píše, si zaslúži lepšie zaobchádzanie než prenos súboru. Väčšina sietí nápovedu úplne ignoruje, a preto si jej roky nikto nevšimne. Menšina ovládačov Wi-Fi, mobilných operátorov a VPN koncentrátorov na ňu reaguje a niektoré z nich reagujú zle.

Keď sa táto hodnota prepíše alebo zahodí uprostred toku, spojenie nezlyhá, len prestane postupovať. Opakované prenosy rastú, okno sa rúca a aplikácia nič nehlási, pretože nič nevrátilo chybu. Práve to ticho vedie ľudí k tomu, že symptóm opisujú ako zaseknutie, nie ako zlyhanie.

Najprv overte verziu klienta pomocou ssh -V. Čokoľvek od 7.8 vyššie nesie toto správanie predvolene.

Tri príkazy, ktoré to oddelia od MTU a DNS

Dva podobné prípady treba vylúčiť skôr, než upravíte akýkoľvek konfiguračný súbor. Porucha MTU prepúšťa malé výmeny a zamrzne na prvom veľkom pakete, kým porucha mien nikdy nevytvorí reláciu.

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

Prvý príkaz zopakuje neúspešnú operáciu s vypnutým označením a jeho úspešné vykonanie je najsilnejší jednotlivý dôkaz, ktorý máte. Druhý vypíše konfiguráciu, ktorú klient na dané miesto skutočne použije, čo odhalí zastaranú položku v súbore, na ktorý ste zabudli. Tretí ukazuje bajt TOS v oboch smeroch, kým prenos visí, a zaujímavý vzor je hodnota na pokazenej trase a žiadna na fungujúcej.

Zachytávajte na laptope, nie na serveri, pretože hodnotu nastavuje odosielateľ a oba smery ju môžu zmeniť. Porovnajte funkčnú a neúspešnú trasu tým istým záznamom a rozdiel sa objaví bez hádania.

Dajte výnimku do jedného súboru, po jednom hostiteľovi

Výnimka patrí vedľa hostiteľa, na ktorý sa vzťahuje, s komentárom, ktorý hovorí, prečo existuje.

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

Rozsah je dôležitejší než samotná hodnota. Zástupná položka vypne správanie všade, zahodí nápovedu, ktorá pomáha v dobre nastavených sieťach, a nikomu nenechá možnosť povedať, kedy sa objavila. Položka pre jedného hostiteľa je čitateľná, vratná a po oprave siete sa triviálne maže. Použite používateľský súbor na osobné obídenie a spravovaný súbor, keď celá flotila potrebuje rovnakú výnimku.

Buďte výslovní v tom, čo výnimka nepokrýva. Platí pre SSH, takže HTTPS remote, zrkadlo balíčkov aj prehliadač stoja mimo nej a zlyhanie v ktoromkoľvek z nich potrebuje vlastný dôkaz. Na reťazi cez bastion používa každý skok konfiguráciu klienta a skok, ktorý sa zasekne, je ten, ktorý stojí za to obmedziť.

Uzavrite slučku so správcom siete

Odovzdajte nález ako štyri fakty: verzia klienta, testovaná trasa, používaný VPN klient a ktorý smer niesol označenie. Tieto štyri stačia správcovi siete na to, aby zaobchádzanie zopakoval a rozhodol, či je zámerné.

Ak výnimka zasekávanie nevylieči, odstráňte ju. Obídenie, ktoré prežije neúspešný experiment, sa stane folklórom a ďalší človek strávi hodinu dokazovaním, že nič nerobí. Ak zasekávanie vylieči, cesta je stále zlá pre každý ďalší nástroj, ktorý ju prechádza, a oprava patrí tomu, kto spravuje medziľahlé zariadenie.

Zmena na klientovi je provizórne riešenie s dátumom vypršania. Napíšte ten dátum do komentára.

Súvisiace články