Odkrivanje MTU poti skozi VPN: velikost in vrzel ICMP
Predor zmanjša paket, ki ga pot lahko prenese, in odkrivanje deluje le, če prispe povratna informacija. Izmerite, preizkusite in preverite pot, namesto da ugibate.
Predor dokonča rokovanje, majhne zahteve se vrnejo, prvi velik prenos pa se ustavi. Ta vzorec kaže na MTU poti veliko prej kot na prepustnost. Vsaka povezava na poti omejuje velikost paketa, inkapsulacija pa porabi del te kvote za zunanje glave, zato mora biti notranji paket manjši, kot bi nakazovala surova pot. Napaka je tiha, in prav zato je draga za diagnosticiranje.
Kaj MTU poti dejansko meri
MTU poti je najmanjši MTU povezave na poti med dvema gostiteljema, ne MTU, natisnjen na lokalnem vmesniku. Lokalna vrednost je točka, kjer se ocena začne, pot pa odloči, kje se mora končati. Zato lahko isti predor deluje v enem dostopovnem omrežju in se v drugem ustavi: spremenila se je pot, ne konfiguracija. Enkrat izmeriti in povsod predpostaviti je napaka, ki ohranja to težavo pri življenju.
Za predor je pomembno število notranji MTU, to je kvota zunanje poti minus tisto, kar porabi inkapsulacija. WireGuard doda zunanjo glavo IP in glavo UDP; drugi transporti dodajo svoje. Nastavite notranjo velikost previsoko in vsak paket polne velikosti bo potreboval razdrobljenje, ki se morda nikoli ne bo zgodilo.
Zakaj predor zmanjša uporabni paket
Če vmesnik predora obdrži MTU fizične povezave, je vsak velik paket odvisen od tega, ali bo kdo nižje na poti pripravljen razdrobiti. IPv4 to načeloma dovoljuje, a usmerjevalnik, ki mu je bilo rečeno, naj ne razdrobi, vrne napako. Usmerjevalniki IPv6 nikoli ne razdrobijo med prehodom, zato se ista nastavitev obnaša drugače glede na družino naslovov. Kakor koli že, pošiljatelj se ničesar ne nauči, dokler nekaj ne poroča nazaj.
Praktična posledica je velikost, ki se prilega rokovanju in ne koristnemu tovoru. TLS ClientHello ali poizvedba DNS je dovolj majhna, da nepoškodovana prečka zmanjšano pot, medtem ko množični prenos ni. Zato se simptomi zbirajo okoli določenih operacij, ne določenih gostiteljev.
Odkrivanje deluje le, ko prispe povratna informacija
Odkrivanje IPv4 se opira na bit don't-fragment: usmerjevalnik, ki paketa ne more poslati naprej, vrne ICMP fragmentation-needed z MTU naslednjega skoka, pošiljatelj pa zniža svojo oceno. IPv6 namesto tega uporablja sporočila Packet Too Big, ker usmerjevalniki med prehodom ne razdrobijo. Oba mehanizma predvidevata, da sporočilo najde pot nazaj do pošiljatelja, skozi predor in mimo vsakega požarnega zidu na povratni poti. Ko ta predpostavka odpove, pošiljatelj kar naprej poskuša velikost, ki je pot ne more prenesti.
Požarni zid, ki dovoljuje echo request in echo reply, ni nujno dovolil teh vrst napak. ICMP je družina in člani, ki so tu pomembni, so napake, ne par odmevov. Preverite politiko krmilnega prometa na obeh koncih predora in na poti med njima ter sledite podprtim smernicam platforme, namesto da bi povsod dovolili vsako vrsto ICMP.
Isto filtriranje lahko sedi znotraj predora. Če notranja pot napako zavrže, zunanja pa jo prenese, se lahko pošiljatelj prilagodi omejitvi, ki je inkapsulirani promet nikoli zares ne vidi.
Preizkusite pot, namesto da ugibate število
Držite cilj, dostopovno omrežje in predor nespremenjene, spreminjajte pa le velikost paketa. Preizkus don't-fragment, ki spodleti z namigom MTU, vam da omejitev naslednjega skoka; ponavljajte, dokler neka velikost ne uspe, in zabeležite tako velikost kot družino naslovov.
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
Ping, ki se prilega, ne dokazuje, da se prilegajo segmenti polne velikosti resnične aplikacije, zato preizkus ponovite s prenosom, ki je v resnici spodletel. Primerjajte največji delujoči preizkus z MTU predora, ki ste ga nastavili, in imejte ti dve številki ločeno v svojih zapiskih. Če se razlikujeta za približno eno glavo, ste našli režijo inkapsulacije in ne okvare.
PLPMTUD, opisan v RFC 4821, preizkuša navzgor in uporablja potrditve prenosa, namesto da bi zaupal dostavljenim napakam. Pomaga na poteh, ki filtrirajo ICMP, a podpora se razlikuje glede na sklad in aplikacijo. Tok TCP si lahko opomore sam, medtem ko aplikacija UDP s fiksno velikostjo datagrama še naprej spodleti.
Izberite vrednost in zapišite obrazložitev
Znižanje MTU predora je hkrati diagnoza in zakonit popravek, ko pot že poznate. Ne nadomešča vedenja, katera pot in kateri mehanizem povratne informacije sta bila vpletena, ker bo vrednost, prilagojena mobilni povezavi, na optični povezavi nepotrebno majhna. Zapišite izbrano velikost, preizkus, ki jo je upravičil, in korak za razveljavitev.
Mehanizem IPv4 je opisan v RFC 1191, smernice za paketizacijo IPv6 pa v RFC 8201; če navedete oba, naslednjemu inženirju ne bo treba znova izpeljati predpostavke. Če se prenos še vedno ustavi pri izbrani velikosti, prenehajte zniževati število in poglejte naslednji sloj. Pot, ki spodleti pri vsaki velikosti, ni težava MTU.