Yn in container efter in bedriuws-VPN lost DNS op, de oanmeldside laden, in health-endpoint antwirdet, en dan hinget in HTTPS-fersyk oant it tiid út rint. It image opnij bouwe en proxy-fariabelen feroarje feroaret neat, want it stik dat misgiet sit net yn it image. De klant autentisearret oer ien transport en ferpleatst bulkedata oer in oare, en allinnich de twadde is stikken.

Twa transporten, ien betiizjend symptoom

In bedriuwsclient op basis fan TLS autentisearret meastentiids oer in gewoane TLS-ferbining en ûnderhannelet dan in twadde UDP-basearre datakanaal foar de sesje. As dat twadde skank wurket, wurde trochset en latency better. As it filtrearre wurdt of net troch it paad past, slagget alles foar de bulkferpleatsing en stopt de ferpleatsing sels, wat krekt it patroan hjirboppe is.

In container feroaret dy ûnderhanneling net; hy feroaret it paad dat de bûtenste pakketten nimme. De host fertaalt de containerstream, dus de UDP-datagrammen geane fan in oare boarneport út as de lokale socket fan de klant, en komme werom troch in fertalingsynskriuwing dy't folle flugger ferrint as in festige TCP-stream. As de tunnel op de host wurket en yn 'e container misgiet, fergelykje dan dy twa streamen foardat jo de applikaasje de skuld jouwe. Dy fergeliking beslút mear as hokker image-opnijbou dan ek.

Beslút troch eksperimint, net troch yntuysje

It goedkeapste eksperimint skeakelet it UDP-datakanaal út en werhellet it fersyk. Brûk de kommandorigelklant yn plak fan it buroblêd-omhulsel, sadat de flagge echt tapast wurdt: openconnect vpn.example.net --user=you --interface=tun0 --no-dtls. As it fersyk dat hong no foltôget, wie it DTLS-skank it probleem en wie de rest rûs.

Befêstigje it resultaat yn beide rjochtingen fan deselde container, ien buldfersyk mei de flagge en ien sûnder. In gedrachsferoaring dy't de flagge folget is bewiis; in side dy't úteinlik laden is net.

As de flagge it reparearret, beslút dan wêrom

Trije betingsten jouwe itselde symptoom, en se freegje om ferskillende antwirden. It paad kin UDP folslein filterje, wat de flagge it krekte permaninte antwird foar dat netwurk makket. It paad kin UDP tastean mar grutte datagrammen falle litte, wat op MTU wiist yn plak fan filtering. Of it paad kin sa ferlieze wêze dat it UDP-skank minner prestearret as TCP, wat in kapasiteitsbeslút is yn plak fan in berikberensbeslút.

Underskied se foardat jo in omgong dokumintearje. Filtering oerlibbet elke pakketgrutte, MTU-problemen ferskine allinnich boppe in drompel, en ferlies docht bliken as weromstjoering en wikseljende fertraging yn plak fan in skjin hingjen. Eltse test fernearet de oarsaak sûnder de klantkonfiguraasje te feroarjen.

Kontrolearje pakketgrutte foardat jo de omgong hâlde

As grutte de oarsaak is, akseptearret de tunnelinterface pakketten dy't it paad net drage kin, en it probleem komt werom op elk transport sa gau as de lading groeit. Fergelykje de interfaces: ip link show tun0 op de host, dan docker network inspect bridge om de MTU te lêzen dy't yn 'e netwurkopsjes fêstlein is. In containerbrêge dy't noch op 1500 byte stiet ûnder in tunnel dy't minder draacht, is de gewoane befinning.

Sykje opwaarts fan in bekende goede grutte mei in do-not-fragment-test yn 'e tunnel, ferleegje dan de MTU fan it containernetwurk of klampe TCP MSS op 'e tunnel. Ien fan beide korreksjes makket it UDP-paad faak wer brûkber en hellet de needsaak foar de flagge fuort, wat it bettere resultaat is as filtering net de oarsaak is.

Beslút wat jo bereid binne te ruiljen

Mei it datakanaal útskeakele draacht de tunnel syn lading yn in TCP-ferbining. Op in skjin paad is dat inkeld stadiger; op in ferlieze paad fertraget ien ferlern segmint alles dêrefter en konkurrearret de bûtenste weromstjoering mei de binnenste. Dy ruil past by ynteraktive ûntwikkeling en lytse API-opropen, en past min by bulkferpleatsings of lange sesjes oer mobile linken.

Hokker opsje jo ek kieze, skriuw op hokker transport de tunnel úteinlik brûkte en wêrom. In container dy't stilwei ôfhinklik is fan in flagge dy't immen moannen lyn tafoege, is de folgjende steuring, en wa't dy debugt sil net witte oft de flagge in omgong foar filtering wie of in oerbliuwsel fan in MTU-eksperimint.

Relatearre artikelen