L'SSH es penja amb OpenVPN? Mesureu primer la MTU del camí
L'eco funciona i, després, un llistat bloqueja la sessió per sempre. Sondegeu el sostre des dels dos costats abans de tocar mssfix, fragment o la MTU de la interfície.
L'SSH connecta, apareix el prompt i la sessió mor tan bon punt una ordre retorna alguna cosa substancial. L'eco segueix funcionant una estona i després la connexió expira mentre el client encara mostra el túnel aixecat. Una sessió que està sana fins que arriben dades normalment topa amb un límit de mida, no amb un defecte de l'SSH. Les comprovacions següents estan ordenades perquè l'explicació més barata s'elimini primer.
Llegiu la forma del fracàs abans de tocar el perfil
Els paquets petits passen i els plens no. Un prompt, un bàner o una pulsació de tecla hi caben fàcilment; un llistat de directori, una baixada o un bloc enganxat no. La mida en què el comportament canvia és la pista, no el fet que l'SSH sigui el programa implicat.
El mecanisme és el descobriment de la MTU del camí, que depèn de la retroalimentació. El TCP tria una mida de segment i, quan un encaminador del camí no pot reenviar el paquet resultant, hauria de dir-ho amb un missatge ICMP. L'encapsulament fa el paquet exterior més gran que l'interior, així que la mida útil dins d'un túnel sempre queda per sota de l'enllaç físic. Filtreu aquests missatges ICMP en qualsevol punt i l'emissor no rebrà mai la correcció, continuarà enviant segments plens i el paquet exterior es descartarà sense avís.
Mesureu el sostre des dels dos costats
Compareu la MTU del túnel amb l'enllaç físic abans de canviar-ne cap dels dos. Un túnel que ha copiat el valor físic ja us ha dit on viu la discrepància.
Sondegeu des de dins del túnel amb una petició que prohibeixi fragmentar, baixant la càrrega útil fins que tornin respostes. L'argument de mida només compta la càrrega útil, així que el número que funciona sempre queda per sota de la MTU de la interfície. Torneu a sumar les mides de les capçaleres si necessiteu la xifra de la interfície.
ip link show tun0
ping -M do -s 1380 10.9.0.1Repetiu la prova contra l'adreça pública del servidor des de fora del túnel. Si les proves grans també fallen allà, el límit és al camí cap al servidor i cap opció del túnel el mourà. Aquesta comparació us estalvia d'ajustar un client que mai no era el problema. Apunteu els dos resultats abans d'obrir un fitxer de configuració.
mssfix i fragment fan feines diferents
mssfix limita la mida de segment que les connexions TCP dins del túnel anuncien durant l'encaixada. És la palanca correcta per a SSH, HTTPS i còpies de fitxers, i per això el bloqueig sovint desapareix quan es defineix. No toca gens les càrregues útils UDP.
Un túnel que també transporta un servei UDP pot continuar fallant després d'arreglar l'SSH, i aquest resultat confon qui suposa que una opció ho cobreix tot.
fragment és l'altre mecanisme i una eina diferent. Parteix els paquets massa grans abans de l'encapsulament, només s'aplica al transport UDP, afegeix sobrecost per datagrama i està documentat com a últim recurs per a un descobriment trencat. Els dos paràmetres han de coincidir en els extrems que tanquen el túnel. Un costat que limita mentre l'altre fragmenta produeix avisos al registre i un comportament que ningú no pot predir a partir dels fitxers.
Baixar la MTU de la interfície és l'opció grollera
Reduir la MTU de la interfície als dos extrems és l'instrument groller. Diu a cada emissor intern un número més petit, cosa que funciona, i carrega aquest cost a tot el trànsit en lloc dels fluxos TCP que el necessiten.
Trieu-lo quan el túnel transporta trànsit que no podeu limitar, o quan el client és un aparell el perfil del qual no controleu. Apliqueu-lo de manera simètrica i anoteu el valor al costat del perfil. Un canvi mig aplicat és pitjor que cap, perquè sembla una solució.
Torneu a provar amb la transferència que es va penjar
Reconnecteu perquè es carreguin els paràmetres, obriu una connexió nova i repetiu l'ordre que es va congelar. La mida de segment es negocia en l'encaixada, així que una sessió que ha sobreviscut a la reconnexió encara porta el valor vell. Un ping és una mala prova aquí, perquè tot el fracàs és que els paquets petits passen. Feu servir el llistat, la baixada o l'enganxada que es va trencar.
Si el bloqueig continua amb una mida més petita, mireu en un altre lloc: un tallafoc amb estat que faci expirar el flux, una adreça duplicada o una ruta que es desplaci en reconnectar. Apunteu la mida de la prova que va fallar i el paràmetre que vau canviar, perquè aquesta parella és el que fa útil l'informe següent.