Paad-MTU-ûntdekking troch in VPN: grutte en it ICMP-gat
In tunnel ferlytset it pakket dat it paad drage kin, en ûntdekking wurket allinnich as de weromkeppeling oankomt. Mjit, probearje en ferifiearje it paad ynstee fan te rieden.
In tunnel foltôget syn hânskud, lytse oanfragen komme werom, en de earste grutte oerdracht stiet stil. Dat patroan wiist nei paad-MTU lang foar't it nei trochset wiist. Eltse skeakel lâns de rûte beheint de pakketgrutte, en ynkapseling brûkt in part fan dy romte foar bûtenste headers, sadat it binnenste pakket lytser wêze moat as it rûge paad suggerearret. De flater is stil, en dat makket him djoer om te diagnostearjen.
Wat paad-MTU eins mjit
Paad-MTU is de lytste skeakel-MTU op 'e rûte tusken twa hosts, net de MTU dy't op jo lokale ynterface printe stiet. De lokale wearde is wêr't de skatting begjint, en it paad beslút wêr't dy einigje moat. Dêrom kin in identike tunnel op it iene tagongsnetwurk wurkje en op it oare stilstean: de rûte feroare, net de konfiguraasje. Ien kear mjitte en oeral oannimme is de flater dy't dit probleem yn libben hâldt.
Foar in tunnel is it getal dat telt de binnenste MTU, dat is de romte fan it bûtenste paad minus wat de ynkapseling ferbrûkt. WireGuard foeget in bûtenste IP-header en in UDP-header ta; oare transporten foegje har eigen ta. Set de binnenste grutte te heech en elk pakket fan folsleine grutte hat fragmintearring nedich dy't miskien nea bart.
Wêrom't in tunnel it brûkbere pakket ferlytset
As de tunnel-ynterface de MTU fan 'e fysike skeakel hâldt, is elk grut pakket ôfhinklik fan immen stroomôfwerts dy't it fragmintearje wol. IPv4 lit dat yn prinsipe ta, mar in router dy't sein is net te fragmintearjen jout ynstee in flater werom. IPv6-routers fragmintearje ûnderweis hielendal nea, dus deselde ynstelling gedraacht him oars per adresfamylje. Hoe dan ek leart de ferstjoerder neat oant eat weromrapportearret.
It praktyske gefolch is in grutte dy't by it hânskud past en net by de lading. In TLS ClientHello of in DNS-query is lyts genôch om in ferlytse paad ûnoantaast te passearjen, wylst in bulk-oerdracht dat net is. Symptomen sammelje har dêrom om spesifike operaasjes hinne ynstee fan om spesifike hosts.
Ûntdekking wurket allinnich as de weromkeppeling oankomt
IPv4-ûntdekking fertrout op 'e don't-fragment-bit: in router dy't it pakket net trochstjoere kin, jout ICMP fragmentation-needed mei de folgjende-hop-MTU werom, en de ferstjoerder ferleget syn skatting. IPv6 brûkt ynstee Packet Too Big-berjochten, om't routers ûnderweis net fragmintearje. Beide meganismen geane derfan út dat it berjocht de wei werom nei de ferstjoerder fynt, troch de tunnel en foarby elk firewall op it werompaad. As dy oanname mislearret, bliuwt de ferstjoerder in grutte op 'e nij besykjen dy't it paad net drage kin.
In firewall dy't echo request en echo reply tastiet, hat net needsaaklik dy flatertypen tastien. ICMP is in famylje, en de leden dy't hjir ta sakje binne de flaters, net it echopeaar. Kontrolearje it belied foar kontrôleferkear oan beide einen fan 'e tunnel en op it paad dertusken, en folgje de stipe begelieding fan it platfoarm ynstee fan oeral elk ICMP-type ta te stean.
Deselde filtering kin binnen de tunnel sitte. As it binnenste paad de flater falle lit mar it bûtenste paad him draacht, kin de ferstjoerder him oanpasse oan in limyt dy't it ynkapsulearre ferkear nea echt sjocht.
Probearje it paad ynstee fan in getal te rieden
Hâld de bestimming, it tagongsnetwurk en de tunnel fêst, en feroarje dan allinnich de pakketgrutte. In don't-fragment-probe dy't mislearret mei in MTU-hint jout jo de folgjende-hop-limyt; werhelje oant in grutte slagget, en registrearje sawol de grutte as de adresfamylje.
ping -M do -s 1400 10.60.20.10
ping -M do -s 1300 10.60.20.10
ping -6 -M do -s 1300 2001:db8::10
In ping dy't past bewiist net dat folsleine segminten fan in echte applikaasje passe, dus werhelje de test mei de oerdracht dy't eins mislearre. Fergelykje de grutste wurkjende probe mei de tunnel-MTU dy't jo konfigurearre hawwe, en hâld de twa getallen apart yn jo notysjes. As se sawat in header fan elkoar ferskille, hawwe jo de ynkapselingsoerhead fûn ynstee fan in flater.
PLPMTUD, beskreaun yn RFC 4821, probearret omheech en brûkt transportbefêstigings ynstee fan op levere flaters te fertrouwen. It helpt op paden dy't ICMP filterje, mar stipe ferskilt per stack en per applikaasje. In TCP-stroom kin himsels herstelle wylst in UDP-applikaasje mei in fêste datagramgrutte bliuwt mislearjen.
Kies in wearde en registrearje de redenearring
It ferlytsjen fan de tunnel-MTU is sawol in diagnostyk as in legitime oplossing sadree't jo it paad kenne. It is gjin ferfanging foar witten hokker paad en hokker weromkeppelingsmeganisme belutsen wiene, om't in wearde ôfstimd op in mobile skeakel needleas lyts wêze sil op in glêsfezelferbining. Registrearje de keazen grutte, de probe dy't him rjochtfeardige en de weromsetstap.
It IPv4-meganisme is beskreaun yn RFC 1191 en de IPv6-pakketisearringsbegelieding yn RFC 8201; beide neame hâldt de folgjende yngenieur derfan ôf de oanname op 'e nij te ûntlêzen. As de oerdracht by de grutte dy't jo keazen noch hieltyd stil stiet, stopje dan mei it getal te ferleegjen en sjoch nei de folgjende laach. In paad dat by elke grutte mislearret is gjin MTU-probleem.