Heng Git utan VPN? OpenSSH merkar pakkane med IPQoS
OpenSSH merkar pakkane sine med ein QoS-verdi som standard. Der ei rute kastar den merkinga, heng push til ein tunnel endrar ruta pakkane tek.
Ein klone frå kontoret verkar, den same klonen over eit telefonhotspot verkar, og den same klonen frå eit hotellnettverk heng til ein VPN blir slått på. SSH-handtrykket blir fullført, og økta blir stille ved den første verkelege overføringa. Éi linje lagd til klientkonfigurasjonen kurerer git og ssh saman. Når éin klientinnstilling reparerer fleire verktøy på éin gong, ligg feilen i det klienten sender, ikkje i sambandet han sender over.
Les symptomet som ein ruteforskjell
Ein tunnel som kurerer eit problem, er sjeldan ein reparasjon. Han byter rute, operatør og mellomledd, medan den berbare maskina held fram med å produsere nøyaktig dei same pakkane. Viss éi rute handsamar ein header feil og ei anna slepp han gjennom uendra, ligg forskjellen i politikken til mellomleddet, ikkje i klienten. Tunnelen er her eit vitne, ikkje ei løysing.
Punktet der økta døyr, snevrar det ytterlegare inn. Ingenting som feilar ved namneoppslag eller ved nøkkelutveksling ser slik ut. Ei økt som autentiserer, skriv ut eit banner og deretter frys ved den første store skrivinga, har allereie prova at ruting, namn og påloggingsinformasjon alle verkar.
Klienten stemplar ein QoS-byte på kvar SSH-sokkel
Kvar OpenSSH-tilkopling frå 7.8 og oppover ber ein verdi i IP-headeren som rutarar kan bruke til å prioritere trafikk. Terminaløkter får éin verdi og massekoppiar ein annan, ut frå teorien om at eit menneske som skriv fortener betre handsaming enn ei filoverføring. Dei fleste nettverk ignorerer hintet heilt, og difor går det ubemerka hen i årevis. Eit mindretal av Wi-Fi-drivarar, mobiloperatørar og VPN-konsentratorar handlar på det, og nokre av dei handlar dårleg.
Når den verdien blir skriven om eller kasta midt i straumen, feilar ikkje tilkoplinga, ho sluttar å kome vidare. Retransmisjonar aukar, vindauget kollapsar, og applikasjonen rapporterer ingenting fordi ingenting gav ein feil. Den stilla er grunnen til at folk skildrar symptomet som ein henging og ikkje som ein feil.
Stadfest først klientversjonen med ssh -V. Alt på 7.8 eller høgare ber denne åtferda som standard.
Tre kommandoar som skil dette frå MTU og DNS
To liknande årsaker fortener å bli utelukka før du redigerer noka konfigurasjonsfil. Ein MTU-feil slepp små utvekslingar gjennom og frys på den første store pakken, medan ein namnefeil aldri gir ei økt.
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 kommandoen gjer den feilande operasjonen om att med merkinga slått av, og ein vellukka køyring er det sterkaste einskildbeviset som finst. Den andre skriv ut konfigurasjonen klienten faktisk vil bruke på den destinasjonen, noko som fangar ein utdatert oppføring i ei fil du hadde gløymt. Den tredje viser TOS-byten i båe retningar medan overføringa står fast, og det interessante mønsteret er ein verdi på den øydelagde ruta og ingen på den som verkar.
Ta opptaket på den berbare maskina og ikkje på serveren, fordi avsendaren set verdien og båe retningar kan endre han. Samanlikn ei rute som verkar og ei som feilar med same opptak, og forskjellen viser seg utan gissing.
Legg unntaket i éi fil, éin vert om gongen
Eit unntak høyrer heime ved sida av verten det gjeld, med ein kommentar som seier kvifor det finst.
Host gitlab.example.internal
IPQoS none
# direct route rewrites the marking; the tunnel route passes it
Omfanget betyr meir enn sjølve verdien. Ein jokerteikn-oppføring slår av åtferda overalt, kastar bort eit hint som hjelper på veloppdragne nettverk, og let ingen kunne seie når han dukka opp. Ein oppføring per vert er lesbar, reverserbar og trivielt enkel å slette når nettverket er reparert. Bruk brukarfila til ein personleg omveg og ei styrt fil når ein heil flåte treng det same unntaket.
Ver tydeleg på kva unntaket ikkje dekkjer. Det gjeld SSH, så eit HTTPS-fjernlager, eit pakkespegel og ein nettlesar ligg alle utanfor, og ein feil i nokon av dei treng sitt eige bevis. På ei kjede gjennom ein bastion brukar kvart hopp klientkonfigurasjonen, og hoppet som heng, er det som er verdt å avgrense.
Lukk sirkelen med nettverkseigaren
Overlever funnet som fire fakta: klientversjon, testa rute, VPN-klient i bruk og kva retning som bar merkinga. Desse fire er nok for ein nettverkseigar til å gjenskape handsaminga og avgjere om ho er medviten.
Viss unntaket ikkje kurerer henginga, fjern det. Ein omveg som overlever eit mislukka eksperiment, blir folklore, og neste person brukar ein time på å prove at han ikkje gjer noko. Viss han kurerer henginga, er ruta framleis feil for eitkvart anna verktøy som kryssar ho, og reparasjonen høyrer til den som driv mellomleddet.
Endringa på klienten er ei naudløysing med ein utløpsdato. Skriv den datoen inn i kommentaren.