Ĉu HTTPS en ujo malantaŭ firmaa VPN haltas? Testu la DTLS-kruron
Ensaluto funkcias en la ujo sed HTTPS haltas, do testu la UDP-datenkanalon. Malŝaltu DTLS, komparu ambaŭ fluojn, poste kontrolu MTU antaŭ ol konservi la flagon.
En ujo malantaŭ firmaa VPN, DNS solviĝas, la ensaluta paĝo ŝargiĝas, san-endpunkto respondas, kaj poste HTTPS-peto haltas ĝis ĝi tempolimas. Rekonstrui la bildon kaj ŝanĝi prokseajn variablojn ŝanĝas nenion, ĉar la difekta parto ne estas en la bildo. La kliento aŭtentikigas sin per unu transporto kaj movas amasajn datumojn per alia, kaj nur la dua estas difektita.
Du transportoj, unu konfuza simptomo
Firmaa kliento bazita sur TLS kutime aŭtentikigas sin per ordinara TLS-konekto, poste intertraktas duan UDP-bazitan datenkanalon por la sesio. Kiam tiu dua kruro funkcias, trafluo kaj latento pliboniĝas. Kiam ĝi estas filtrita aŭ ne povas trairi la vojon, ĉio antaŭ la amasa transigo sukcesas kaj la transigo mem haltas, kio estas ĝuste la supra ŝablono.
Ujo ne ŝanĝas tiun intertraktadon; ĝi ŝanĝas la vojon, kiun prenas la eksteraj pakoj. La gastiganto tradukas la fluon de la ujo, do la UDP-datagramoj eliras el alia fonta pordo ol la loka ingo de la kliento, kaj revenas tra tradukaĵo, kiu eksvalidiĝas per multe pli mallonga tempigilo ol establita TCP-fluo. Se la tunelo funkcias sur la gastiganto kaj malsukcesas en la ujo, komparu tiujn du fluojn antaŭ ol kulpigi la aplikaĵon. Tiu komparo decidas pli ol iu ajn rekonstruo de la bildo.
Decidu per eksperimento, ne per intuicio
La plej malmultekosta eksperimento malŝaltas la UDP-datenkanalon kaj ripetas la peton. Uzu la komandlinian klienton anstataŭ la labortabla ujo, por ke la flago efektive aplikiĝu: openconnect vpn.example.net --user=you --interface=tun0 --no-dtls. Se la peto, kiu haltis, nun finiĝas, la DTLS-kruro estis la problemo kaj la resto estis bruo.
Konfirmu la rezulton en ambaŭ direktoj el la sama ujo, unu amasa peto kun la flago kaj unu sen. Konduta ŝanĝo, kiu sekvas la flagon, estas pruvo; paĝo, kiu fine ŝargiĝas, ne estas.
Se la flago riparas ĝin, decidu kial
Tri kondiĉoj produktas la saman simptomon, kaj ili postulas malsamajn respondojn. La vojo povas tute filtri UDP, kio faras la flagon la ĝusta permanenta respondo por tiu reto. La vojo povas permesi UDP sed forĵeti grandajn datagramojn, kio montras al MTU anstataŭ al filtrado. Aŭ la vojo povas esti tiom perda, ke la UDP-kruro funkcias pli malbone ol TCP, kio estas kapacita decido anstataŭ atingebla decido.
Distingi ilin antaŭ ol dokumenti provizoran solvon. Filtrado postvivas ĉiun pakan grandecon, MTU-problemoj aperas nur super sojlo, kaj perdo montriĝas kiel retranssendado kaj varia prokrasto anstataŭ pura halto. Ĉiu testo mallarĝigas la kaŭzon sen ŝanĝi la klientan agordon.
Kontrolu pakan grandecon antaŭ ol konservi la provizoran solvon
Se grandeco estas la kaŭzo, la tunela interfaco akceptas pakojn, kiujn la vojo ne povas porti, kaj la problemo revenas sur iu ajn transporto tuj kiam la utilŝarĝoj kreskas. Komparu la interfacojn: ip link show tun0 sur la gastiganto, poste docker network inspect bridge por legi la MTU registritan en la retaj opcioj. Uja ponto ankoraŭ ĉe 1500 bajtoj sub tunelo, kiu portas malpli, estas la kutima konkludo.
Sondi supren de konata bona grandeco per testo de ne-fragmentado ene de la tunelo, poste malaltigu la MTU de la uja reto aŭ kunpremu TCP MSS sur la tunelo. Ĉiu el la du korektoj ofte igas la UDP-vojn denove uzebla kaj forigas la bezonon de la flago, kio estas la pli bona rezulto kiam filtrado ne estas la kaŭzo.
Decidu, kion vi pretas interŝanĝi
Kun la datenkanalo malŝaltita, la tunelo portas sian utilŝarĝon ene de TCP-konekto. Sur pura vojo tio estas nur pli malrapida; sur perda vojo, unu perdita segmento prokrastas ĉion malantaŭ ĝi kaj la ekstera retranssendado konkurascas kun la interna. Tiu interŝanĝo taŭgas por interaga evoluigado kaj malgrandaj API-vokoj, kaj taŭgas malbone por amasaj transigoj aŭ longaj sesioj tra mobilaj ligoj.
Kiun ajn opcion vi elektas, registru, kiun transporton la tunelo finfine uzis kaj kial. Ujo, kiu silente dependas de flago aldonita de iu antaŭ monatoj, estas la sekva paneo, kaj la persono, kiu sencimigas ĝin, ne scios, ĉu la flago estis provizora solvo por filtrado aŭ restaĵo de MTU-eksperimento.