Paĝo ŝargiĝas, ping sukcesas, kaj dosiera kopio haltas ĉiufoje ĉe la sama punkto. Tiu ŝablono montras al paka grandeco, ne al bendolarĝo aŭ akreditiloj. Enkapsuligo aldonas bajtojn al ĉiu pako, do utila ŝarĝo, kiu taŭgis sur la origina vojo, povas superi la limon post kiam ĝi pasas tra tunelo. En ĉi tiuj interparoloj tri malsamaj nombroj nomiĝas MTU, kaj konfuzi ilin kondukas al agordo, kiu riparas unu aplikaĵon kaj rompas alian.

Tri nombroj, kiujn homoj nomas MTU

La interfaca MTU estas la agordita limo por pako sur tiu ligilo. La voja MTU estas la plej malgranda limo laŭ la itinero, kaj ĝi estas malkovrita anstataŭ agordita. TCP MSS estas la utilŝarĝa grando, kiun samtavolano anoncas ke ĝi povas ricevi, kaj ĝi deriviĝas de la aliaj du anstataŭ esti aparta fizika limo.

Tunelo havas internan kaj eksteran vidon. La ekstera pako portas la enkapsuligitan plus la kapliniojn, kiujn la protokolo bezonas, do la uzebla interna grando estas pli malgranda ol tio, kion permesas la ekstera vojo. La vojo al la VPN-servilo ankaŭ diferencas de la vojo de la servilo al la celo.

Malkovro de voja MTU ebligas al sendanto lerni la funkciantan grandon, sed ĝi dependas de tio, ke la retrosciigo alvenu. Kiam intera aparato filtradas la koncernajn ICMP-mesaĝojn, la sendanto daŭre transsendas pakojn, kiuj neniam kompletiĝas, kaj tio estas la klasika nigra truo. La simptomo estas distingebla, kiam oni konas ĝin: la manpremo sukcesas, la unua plengranda ŝarĝo malaperas, kaj la konekto finfine restartas aŭ haltas. Nenio en la protokolo de la aplikaĵo aspektas kiel reta problemo.

Sondi la vojon per ŝarĝo, kiun vi regas

Sondo estas pruvo pri unu itinero kaj unu grando, ne rekomendita agordo. Uzu gastiganton, kiu respondas, kaj variigu nur la grandon de la ŝarĝo.

ping -M do -s 1372 -c 2 203.0.113.20
ping -4 -f -l 1372 vpn.example

La unua komando sendas Linuksan sondon kun malŝaltita fragmentado kaj ŝarĝo de 1372 bajtoj, kaj la dua faras la samon en Vindozo, kie la ŝarĝo estas agordata per -l. Respondo signifas, ke tiu grando travivis la vojon. Mesaĝo pri necesa fragmentado estas informa, dum tempolimo estas duba, ĉar la gastiganto aŭ intera aparato povas simple forĵeti ICMP.

Malaltigu la grandon en kelkaj paŝoj anstataŭ duuma serĉado ĝis la bajto. Vi provas konstati, ĉu ekzistas plafono de grando, ne publikigi nombron por ĉiu reto. La nombro, kiun vi trovos, validas por ĉi tiu vojo, ĉi tiu protokolo kaj ĉi tiu adresfamilio.

IPv4 kaj IPv6 fragmentiĝas malsame, do sondorezulto de unu familio diras nenion pri la alia. Testu la familion, kiun la aplikaĵo efektive uzas.

MSS-premado helpas nur TCP

En TCP la efektiva ŝarĝo intertraktiĝas dum la manpremo, kaj enkursigilo sur la vojo povas reskribi tiun valoron malsupren, por ke ambaŭ finpunktoj sendu pli malgrandajn segmentojn. Tion faras MSS-premado, kaj ĝi funkcias tute sen tuŝi la klienton.

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ip link show tun0

La unua regulo premas la anoncitan MSS al la voja MTU por plusendataj TCP-manpremoj, kaj la dua montras la propran MTU de la tunela interfaco, por ke vi komparu ĝin kun tio, kion la vojo permesas. Premado estas la malplej invada riparo por TCP-a aplikaĵo, kiu haltas post la manpremo.

Por UDP ĝi faras nenion. Voĉa aŭ luda kliento, kiu sendas grandajn datagramojn, tute ignoros MSS-agordon, ĉar ne ekzistas manpremo por reskribi. Se la malsukcesanta aplikaĵo estas UDP, rigardu anstataŭe la pakaĵgrandecajn opciojn de la kliento mem. La du protokoloj malsukcesas malsame kaj ripariĝas per malsamaj iloj, tial la protokolo apartenas al la unua frazo de la bileto.

OpenVPN elmontras opciojn kiel tun-mtu, mssfix kaj fragmentajn agordojn, kaj ilia konduto dependas de la versio kaj de tio, ĉu la datena kanalo estas AEAD. Legu la manlibron por la uzata versio, kaj ŝanĝu unu opcion samtempe.

Ŝanĝu unu subtenatan agordon kaj ripetu ambaŭ kurojn

Konservu la originan profilon, ŝanĝu unu subtenatan valoron, kaj ripetu kaj la malgrandan peton, kiu funkciis, kaj la grandan transigon, kiu malsukcesis. Se ŝanĝiĝas nur la granda, vi postkuris grandon. Se ambaŭ ŝanĝiĝas, io alia moviĝis kun ĝi.

Pli malalta valoro povas mildigi la simptomon dum ĝi aldonas superkoston, do la plej malgranda ebla nombro ne estas la celo. La celo estas grando, kiun la vojo fidinde portas kun la plej malmulte da malŝparo. Notu la valoron, la vojon kaj la klientan version en la bileto, ĉar la sama nombro aplikita aliloke estas konjekto.

Se la sama profilo funkcias el alia fidinda reto, konservu tiun diferencon en la diagnozo anstataŭ deklari la klienton riparita. La variablo, kiu ŝanĝiĝis, estas la vojo, kaj la vojo estas tio, kion mezuris la sondo.

Rilataj artikoloj