DNS se razrješava, SSH sesija ostaje aktivna, a zatim se veliko slanje zaglavi dok ping na isti host još uvijek odgovara. Ta podjela upućuje na veličinu paketa, a ne na pokvaren tunel. Ugniježđeni tuneli to dostižu pri veličinama koje nijedan tunel sam ne bi dosegao. Unutrašnja sesija je u redu; samo joj se predaju paketi koji više ne stanu.

Kuda MTU putanje zapravo odlazi

Svaka enkapsulacija troši bajtove prije nego sljedeći sloj dobije red. Ethernet putanja nudi 1500 bajtova vanjskom paketu, a vanjski tunel uzima svoj dio prije nego se bilo što unutra može adresirati. Jedna nagađana vrijednost zaglavlja bit će pogrešna točno za onoliko koliko je važno.

Navedite slojeve po redu: pristupna putanja, vanjski transport, vanjski tunel, unutrašnji transport, unutrašnji tunel, aplikacija. Svako zaglavlje brojite jednom i držite UDP odvojeno od vlastitog zaglavlja tunela i njegove oznake.

Dva WireGuard sloja, brojana jednom

Uzmite IPv4 pristupnu putanju s jednim WireGuard tunelom unutar drugoga. Vanjski sloj košta 20 bajtova IPv4, 8 za UDP i 32 za WireGuard zaglavlje podataka plus njegovu oznaku provjere. Unutar toga unutrašnjem tunelu treba vlastito 20-bajtno IPv4 zaglavlje i 8-bajtno UDP zaglavlje prije njegovih drugih 32 bajta WireGuard troška. Ono što ostane drži IPv4 zaglavlje, TCP zaglavlje i podatke. Vanjska IPv6 putanja košta 40 umjesto 20 i ostavlja 1320.

LayerBytes
Path MTU1500
Outer IPv4 header20
Outer UDP header8
Outer WireGuard header and tag32
Inner transport IPv4 header20
Inner UDP header8
Inner WireGuard header and tag32
Innermost IPv4 header20
TCP header20
Payload that fits1340

Aritmetika završava na 1340 bajtova. Jedan sloj po istim pravilima ostavlja 1400 za TCP korisni teret, što je 1500 minus 20, 8, 32, 20 i 20, a razlika od 60 bajtova točno je unutrašnja enkapsulacija koju dodaje drugi tunel.

Primijenite 1400 na ugniježđenu putanju i unutrašnji tunel je 60 bajtova kratak, nevidljivo dok paket ne postane dovoljno velik da ih zatreba. Podmetanje i vlastita opcija fragmentacije protokola ponovno pomiču brojke, zato vjerujte tabeli.

MTU, MSS i fragmentacija djeluju na različitim mjestima

MTU interfejsa ograničava šta će interfejs emitovati, dok TCP MSS stezanje mijenja šta je TCP partner voljan poslati. Stezanje popravlja TCP sesije i ne čini ništa za veliki UDP datagram, tako popravka izgleda uspješna za jednu aplikaciju i tiho promaši sljedeću. Vlastita opcija fragmentacije protokola treća je poluga sa svojim neuspjesima. MTU interfejsa uobičajen je prvi potez i najgrublji.

Premošteni i rutirani tuneli nose različite okvire, pa se brojke iz drugog postavljanja rijetko prenose. Otkrivanje MTU putanje, opisano u RFC 8201, pomaže samo dok su ICMP poruke o kojima zavisi propuštene.

Pronalaženje sloja kojem nedostaje

Provjerite svaki tunel zasebno prije ugniježđivanja, ako zahtjevi dopuštaju poređenje. Sonda fiksne veličine to rješava: ping -M do -s 1472 -c 3 10.8.0.1 šalje pun IPv4 paket od 1500 bajtova unutar tog sloja. Dodajte drugi sloj i ponovite istu sondu, da svaki neuspjeh pripada poznatoj promjeni.

Kada se prijenos zaglavi, mijenjajte jedan dokumentirani parametar odjednom i bilježite veličinu na kojoj pada. Provjerite i povratnu putanju, jer ugniježđena rekurzija ruta može oponašati problem veličine paketa dovoljno blizu da košta cijelo poslijepodne. Filtriran ICMP odgovor može sakriti pravu granicu, zato je sonda važnija od zaključivanja.

Zapišite budžet tamo gdje će ga sljedeća osoba naći

Tabela s jednim redom po sloju nadživi pravilo po sjećanju. Držite je uz dijagram tunela da nitko ne ponavlja aritmetiku pod pritiskom.

Više tunela znači više zavisnosti, pa plan vraćanja unatrag zaslužuje mjesto uz budžet. Ako se brojke još ne slažu, izmjerite putanju umjesto da ponovno nagađate. Cilj je brojka koju možete braniti, ne zapamtiti.

Povezani članci