En klon fra kontoret virker, den samme klon over et telefonhotspot virker, og den samme klon fra et hotelnetværk hænger, indtil en VPN slås til. SSH-håndtrykket afsluttes, og sessionen går i stå ved den første rigtige overførsel. Én linje tilføjet klientkonfigurationen kurerer git og ssh på samme tid. Når én klientindstilling reparerer flere værktøjer på én gang, ligger fejlen i det, klienten sender, ikke i det led, den sender over.

Læs symptomet som en routingforskel

En tunnel, der kurerer et problem, er sjældent en reparation. Den bytter ruten, operatøren og mellemboksene ud, mens bærbaren bliver ved med at producere præcis de samme pakker. Hvis én rute håndterer en header forkert, og en anden sender den uændret videre, ligger forskellen i mellemboksens politik, ikke i klienten. Tunnelen er her et vidne, ikke en løsning.

Det punkt, hvor sessionen dør, indsnævrer det yderligere. Intet, der fejler ved navneopslag eller ved nøgleudveksling, ser sådan ud. En session, der autentificerer, udskriver et banner og derefter fryser ved den første store skrivning, har allerede bevist, at routing, navngivning og legitimationsoplysninger alle virker.

Klienten stempler en QoS-byte på hver SSH-socket

Hver OpenSSH-forbindelse fra 7.8 og frem bærer en værdi i IP-headeren, som routere kan bruge til at prioritere trafik. Terminalsessioner får én værdi, og store kopier får en anden, ud fra teorien om, at et menneske, der taster, fortjener bedre behandling end en filoverførsel. De fleste netværk ignorerer hentydningen helt, og derfor går den ubemærket hen i årevis. Et mindretal af Wi-Fi-drivere, mobiloperatører og VPN-koncentratorer handler på den, og nogle af dem handler dårligt.

Når den værdi overskrives eller kasseres midt i strømmen, fejler forbindelsen ikke, den holder op med at komme videre. Gentransmissioner stiger, vinduet kollapser, og applikationen rapporterer intet, fordi intet gav en fejl. Den tavshed er grunden til, at folk beskriver symptomet som et hæng frem for en fejl.

Bekræft først klientversionen med ssh -V. Alt på 7.8 eller derover bærer adfærden som standard.

Tre kommandoer, der skiller dette fra MTU og DNS

To lignende årsager fortjener at blive udelukket, før du redigerer nogen konfigurationsfil. En MTU-fejl lukker små udvekslinger igennem og fryser ved den første store pakke, mens en navnefejl aldrig giver en session.

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

Den første kommando gentager den fejlende handling med markeringen slået fra, og en vellykket kørsel er det stærkeste enkeltbevis, der findes. Den anden udskriver den konfiguration, klienten faktisk vil anvende på den destination, hvilket fanger en forældet post i en fil, du havde glemt. Den tredje viser TOS-byten i begge retninger, mens overførslen sidder fast, og det interessante mønster er en værdi på den brudte rute og ingen på den fungerende.

Tag optagelsen på bærbaren i stedet for på serveren, fordi afsenderen sætter værdien, og begge retninger kan ændre den. Sammenlign en fungerende og en fejlende rute med samme optagelse, og forskellen viser sig uden gætteri.

Læg undtagelsen i én fil, én vært ad gangen

En undtagelse hører til ved siden af den vært, den gælder for, med en kommentar, der siger, hvorfor den findes.

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

Omfanget betyder mere end værdien selv. En jokerpost slår adfærden fra overalt, smider en hentydning væk, der hjælper på netværk, der opfører sig pænt, og efterlader ingen, der kan sige, hvornår den dukkede op. En post per vært er læsbar, reversibel og trivielt let at slette, når netværket er repareret. Brug brugerfilen til en personlig omvej og en administreret fil, når en hel flåde har brug for den samme undtagelse.

Vær tydelig om, hvad undtagelsen ikke dækker. Den gælder for SSH, så et HTTPS-fjerndepot, et pakkespejl og en browser ligger alle uden for den, og en fejl i enhver af dem kræver sit eget bevis. På en kæde gennem en bastion bruger hvert hop klientkonfigurationen, og det hop, der hænger, er det, der er værd at afgrænse.

Luk kredsen med netværksejeren

Overdrag fundet som fire fakta: klientversion, testet rute, VPN-klient i brug og hvilken retning der bar markeringen. De fire er nok for en netværksejer til at genskabe behandlingen og afgøre, om den er bevidst.

Hvis undtagelsen ikke kurerer hænget, fjern den. En omvej, der overlever et mislykket eksperiment, bliver folklore, og den næste person bruger en time på at bevise, at den intet gør. Hvis den kurerer hænget, er ruten stadig forkert for ethvert andet værktøj, der krydser den, og reparationen hører til den, der driver mellemboksen.

Ændringen på klienten er en nødløsning med en udløbsdato. Skriv den dato ind i kommentaren.

Relaterede artikler