HTTPS në kontejner ngec në një VPN korporative? Testoni krahun DTLS
Hyrja funksionon brenda kontejnerit por HTTPS ngec, ndaj testoni kanalin e të dhënave UDP. Çaktivizoni DTLS, krahasoni dy rrjedhat, pastaj kontrolloni MTU para se ta mbani flamurin.
Brenda një kontejneri pas një VPN korporative, DNS zgjidhet, faqja e hyrjes ngarkohet, pika e shëndetit përgjigjet, dhe pastaj një kërkesë HTTPS ngec derisa të skadojë koha. Rindërtimi i imazhit dhe ndryshimi i variablave të ndërmjetësit nuk ndryshojnë asgjë, sepse pjesa që dështon nuk është në imazh. Klienti vërtetohet përmes një transporti dhe lëviz të dhëna masive përmes një tjetri, dhe vetëm i dyti është i prishur.
Dy transporta, një simptomë konfuze
Një klient korporativ i bazuar në TLS zakonisht vërtetohet përmes një lidhjeje TLS të zakonshme, pastaj negocion një kanal të dytë të dhënash të bazuar në UDP për sesionin. Kur funksionon ai krah i dytë, xhiroja dhe vonesa përmirësohen. Kur filtrohet ose nuk futet në rrugë, gjithçka para transferimit masiv ka sukses dhe vetë transferimi ndalon, që është pikërisht modeli më sipër.
Një kontejner nuk e ndryshon atë negocim; ndryshon rrugën që ndjekin paketat e jashtme. Pritësi përkthen rrjedhën e kontejnerit, kështu që datagramet UDP dalin nga një portë burimi e ndryshme nga soketa lokale e klientit dhe kthehen përmes një zëri përkthimi që skadon me një kohëmatës shumë më të shkurtër se një rrjedhë TCP e vendosur. Nëse tuneli funksionon në pritës dhe dështon në kontejner, krahasoni ato dy rrjedha para se të fajësoni aplikacionin. Ai krahasim zgjidh më shumë se çdo rindërtim imazhi.
Vendosni me eksperiment, jo me intuitë
Eksperimenti më i lirë çaktivizon kanalin e të dhënave UDP dhe përsërit kërkesën. Përdorni klientin e rreshtit të komandës në vend të mbështjellësit të desktopit, që flamuri të zbatohet vërtet: openconnect vpn.example.net --user=you --interface=tun0 --no-dtls. Nëse kërkesa që ngeci tani përfundon, krahu DTLS ishte problemi dhe pjesa tjetër zhurmë.
Konfirmoni rezultatin në të dy drejtimet nga i njëjti kontejner, një kërkesë masive me flamur dhe një pa të. Një ndryshim sjelljeje që ndjek flamurin është provë; një faqe që në fund ngarkohet nuk është.
Nëse flamuri e rregullon, vendosni pse
Tre kushte prodhojnë të njëjtën simptomë dhe kërkojnë përgjigje të ndryshme. Rruga mund të filtrojë plotësisht UDP, që e bën flamurin përgjigjen e përhershme të saktë për atë rrjet. Rruga mund të lejojë UDP por të hedhë datagramet e mëdha, që tregon MTU dhe jo filtrim. Ose rruga mund të jetë aq e humbur sa krahu UDP të performojë më keq se TCP, që është vendim kapaciteti dhe jo arritshmërie.
Dallojini para se të dokumentoni një zgjidhje anashkaluese. Filtrimi i mbijeton çdo madhësie pakete, problemet e MTU shfaqen vetëm mbi një prag, dhe humbja shfaqet si ritransmetim dhe vonesë e ndryshueshme, jo si ngecje e pastër. Çdo test e ngushton shkakun pa ndryshuar konfigurimin e klientit.
Kontrolloni madhësinë e paketës para se ta mbani zgjidhjen anashkaluese
Nëse shkaku është madhësia, ndërfaqja e tunelit pranon paketa që rruga nuk mund t'i mbajë, dhe problemi kthehet në çdo transport sapo rritet ngarkesa. Krahasoni ndërfaqet: ip link show tun0 në pritës, pastaj docker network inspect bridge për të lexuar MTU-në e regjistruar në opsionet e rrjetit. Një urë kontejneri ende në 1500 bajt nën një tunel që mbart më pak është gjetja e zakonshme.
Sondoni lart nga një madhësi e njohur e mirë me një test ndalimi fragmentimi brenda tunelit, pastaj ulni MTU-në e rrjetit të kontejnerit ose shtrëngoni TCP MSS në tunel. Secili prej dy korrigjimeve shpesh e bën përsëri të përdorshëm rrugën UDP dhe heq nevojën për flamur, që është rezultati më i mirë kur filtrimi nuk është shkaku.
Vendosni çfarë jeni gati të shkëmbeni
Me kanalin e të dhënave të çaktivizuar, tuneli e mbart ngarkesën brenda një lidhjeje TCP. Në një rrugë të pastër kjo është thjesht më e ngadaltë; në një me humbje, një segment i vetëm i humbur vonon gjithçka pas tij dhe ritransmetimi i jashtëm konkurron me atë të brendshëm. Ai shkëmbim i shkon zhvillimit interaktiv dhe thirrjeve të vogla API, dhe nuk i shkon transferimeve masive ose sesioneve të gjata përmes lidhjeve mobile.
Cilindo opsion që zgjidhni, shënoni cilin transport përfundoi duke përdorur tuneli dhe pse. Një kontejner që varet në heshtje nga një flamur që dikush shtoi muaj më parë është ndërprerja tjetër, dhe ai që do ta diagnostikojë nuk do ta dijë nëse flamuri ishte zgjidhje anashkaluese për filtrimin apo mbetje e një eksperimenti MTU.