SSH se conectează, promptul apare, iar sesiunea moare de îndată ce o comandă returnează ceva voluminos. Echo mai funcționează o vreme, apoi conexiunea expiră în timp ce clientul arată în continuare tunelul ca fiind activ. O sesiune sănătoasă până la sosirea datelor lovește de obicei o limită de dimensiune, nu un defect al SSH. Verificările de mai jos sunt ordonate astfel încât cea mai ieftină explicație să fie eliminată prima.

Citiți forma defecțiunii înainte de a atinge profilul

Pachetele mici trec, cele pline nu. Un prompt, un banner sau o singură apăsare de tastă încap ușor; o listare de folder, o descărcare sau un bloc lipit nu. Dimensiunea la care comportamentul se schimbă este indiciul, nu faptul că SSH este programul implicat.

Mecanismul este descoperirea MTU-ului rutei, care depinde de feedback. TCP alege o dimensiune de segment, iar când un router de pe traseu nu poate trimite mai departe pachetul rezultat, ar trebui să anunțe asta printr-un mesaj ICMP. Încapsularea face pachetul exterior mai mare decât cel interior, așa că dimensiunea utilizabilă în interiorul unui tunel este mereu sub legătura fizică. Filtrați acele mesaje ICMP oriunde și expeditorul nu primește niciodată corecția, continuă să trimită segmente pline, iar pachetul exterior este aruncat fără notificare.

Măsurați plafonul din ambele părți

Comparați MTU-ul tunelului cu legătura fizică înainte de a modifica oricare dintre ele. Un tunel care a copiat valoarea fizică v-a spus deja unde se află discrepanța.

Verificați din interiorul tunelului cu o cerere care interzice fragmentarea, coborând încărcătura până când răspunsurile se întorc. Argumentul dimensiunii numără doar încărcătura, așa că numărul care funcționează este mereu sub MTU-ul interfeței. Adăugați la loc dimensiunile antetelor dacă aveți nevoie de numărul interfeței.

ip link show tun0
ping -M do -s 1380 10.9.0.1

Repetați testul împotriva adresei publice a serverului din afara tunelului. Dacă testele mari eșuează și acolo, limita se află pe drumul spre server și nicio opțiune a tunelului nu o va mișca. Acea comparație vă scutește de reglarea unui client care nu a fost niciodată problema. Notați ambele rezultate înainte de a deschide un fișier de configurare.

mssfix și fragment fac treburi diferite

mssfix limitează dimensiunea segmentului pe care conexiunile TCP din tunel o anunță în timpul strângerii de mână. Este pârghia corectă pentru SSH, HTTPS și copierea fișierelor, de aceea blocajul dispare adesea imediat ce este setat. Nu atinge deloc încărcăturile UDP.

Un tunel care transportă și un serviciu UDP poate continua să eșueze după ce SSH este reparat, iar acel rezultat încurcă pe oricine presupune că o singură opțiune acoperă tot.

fragment este celălalt mecanism și un instrument diferit. Împarte pachetele prea mari înainte de încapsulare, se aplică doar transportului UDP, adaugă costuri pe fiecare datagramă și este documentat ca ultimă soluție pentru descoperirea stricată. Ambele setări trebuie să coincidă la partenerii care încheie tunelul. Când un capăt limitează iar celălalt fragmentează, apar avertismente în jurnal și un comportament pe care nimeni nu îl poate prevedea din fișiere.

Coborârea MTU-ului interfeței este opțiunea grosolană

Reducerea MTU-ului interfeței la ambele capete este instrumentul grosolan. Spune fiecărui expeditor intern un număr mai mic, ceea ce funcționează, și pune acel cost pe tot traficul în loc de fluxurile TCP care au nevoie de el.

Alegeți-o când tunelul transportă trafic pe care nu îl puteți limita, sau când clientul este un aparat al cărui profil nu îl controlați. Aplicați-o simetric și notați valoarea lângă profil. O modificare aplicată pe jumătate este mai rea decât niciuna, pentru că arată ca o reparație.

Testați din nou cu transferul care s-a blocat

Reconectați-vă pentru ca setările să se încarce, deschideți o conexiune nouă și repetați comanda care a înghețat. Dimensiunea segmentului se negociază la strângerea de mână, așa că o sesiune care a supraviețuit reconectării poartă încă valoarea veche. Ping este un test slab aici, pentru că întreaga defecțiune este că pachetele mici trec. Folosiți listarea, descărcarea sau lipirea care s-a stricat.

Dacă blocajul persistă la o dimensiune mai mică, priviți în altă parte: un firewall cu stare care expiră fluxul, o adresă duplicată sau o rută care se deplasează la reconectare. Notați dimensiunea testului care a eșuat și setarea pe care ați schimbat-o, pentru că acea pereche face util următorul raport.

Articole similare