Stranica se učita, ping uspe, a kopiranje datoteke se svaki put zaglavi na istom mestu. Taj obrazac upućuje na veličinu paketa, a ne na propusnost ili akreditive. Enkapsulacija dodaje bajtove svakom paketu, pa korisni teret koji je stao na izvornoj putanji može premašiti ograničenje nakon prolaska kroz tunel. U tim razgovorima tri različita broja nazivaju se MTU, a njihovo mešanje vodi do postavke koja popravlja jednu aplikaciju i kvari drugu.

Tri broja koja ljudi nazivaju MTU

MTU interfejsa je konfigurisano ograničenje za paket na tom linku. MTU putanje je najmanje ograničenje duž rute i otkriva se, a ne konfiguriše. TCP MSS je veličina korisnog tereta koju sagovornik najavljuje da može primiti, i izvodi se iz druga dva, a nije zasebno fizičko ograničenje.

Tunel ima unutrašnji i spoljašnji pogled. Spoljašnji paket nosi enkapsulirani plus zaglavlja koja protokol zahteva, pa je upotrebljiva unutrašnja veličina manja od onoga što spoljašnja putanja dopušta. Putanja do VPN servera takođe se razlikuje od serverske putanje do odredišta.

Otkrivanje MTU putanje omogućava pošiljaocu da sazna radnu veličinu, ali zavisi od dolaska povratne informacije. Kada posredni uređaj filtrira relevantne ICMP poruke, pošiljalac nastavlja da šalje pakete koji nikada ne završe, i to je klasična crna rupa. Simptom je prepoznatljiv kada ga znaš: rukovanje uspe, prvi teret pune veličine nestane, a veza se na kraju resetuje ili zaglavi. Ništa u dnevniku aplikacije ne izgleda kao mrežni problem.

Ispitajte putanju teretom koji kontrolišete

Proba je dokaz o jednoj ruti i jednoj veličini, a ne preporučena postavka. Koristite host koji odgovara i menjajte samo veličinu tereta.

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

Prva naredba šalje Linux probu sa isključenom fragmentacijom i teretom od 1372 bajta, a druga radi isto na Windowsu gde se teret zadaje sa -l. Odgovor znači da je ta veličina preživela putanju. Poruka da je potrebna fragmentacija je informativna, dok je istek vremena dvosmislen jer host ili posredni uređaj može jednostavno odbaciti ICMP.

Spuštajte veličinu u nekoliko koraka umesto binarne pretrage do bajta. Pokušavate utvrditi postoji li gornja granica veličine, a ne objaviti broj za svaku mrežu. Broj koji nađete važi za ovu putanju, ovaj protokol i ovu porodicu adresa.

IPv4 i IPv6 fragmentiraju se različito, pa rezultat probe iz jedne porodice ništa ne govori o drugoj. Testirajte porodicu koju aplikacija stvarno koristi.

MSS stezanje pomaže samo TCP-u

Kod TCP-a se efektivni teret dogovara tokom rukovanja, a ruter na putanji može prepisati tu vrednost naniže da oba kraja šalju manje segmente. To radi MSS stezanje i deluje bez ikakvog diranja u klijent.

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

Prvo pravilo steže najavljeni MSS na MTU putanje za prosleđena TCP rukovanja, a drugo prikazuje vlastiti MTU tunelskog interfejsa da ga uporedite sa onim što putanja dopušta. Stezanje je najmanje invazivna popravka za TCP aplikaciju koja se zaglavi nakon rukovanja.

Za UDP ne čini ništa. Glasovni ili igraći klijent koji šalje velike datagrame potpuno će ignorisati MSS postavku, jer nema rukovanja koje bi se prepisalo. Ako aplikacija koja pada radi preko UDP-a, pogledajte umesto toga opcije veličine paketa u samom klijentu. Dva protokola padaju različito i popravljaju se različitim alatima, zato protokol pripada u prvu rečenicu tiketa.

OpenVPN nudi opcije kao što su tun-mtu, mssfix i postavke vezane za fragmentaciju, a njihovo ponašanje zavisi od verzije i od toga je li data kanal AEAD. Pročitajte priručnik za verziju koja se koristi i menjajte jednu opciju po jednu.

Promenite jednu podržanu postavku i ponovite oba prolaza

Zadržite izvorni profil, promenite jednu podržanu vrednost i ponovite i mali zahtev koji je radio i veliki prenos koji je pao. Ako se promeni samo veliki, lovili ste veličinu. Ako se promene oba, nešto drugo se pomerilo sa njim.

Niža vrednost može smanjiti simptom uz dodatni trošak, pa najmanji mogući broj nije cilj. Cilj je veličina koju putanja pouzdano nosi uz najmanje rasipanja. Zapišite vrednost, putanju i verziju klijenta u tiket, jer isti broj primenjen drugde je nagađanje.

Ako isti profil radi sa druge pouzdane mreže, zadržite tu razliku u dijagnozi umesto da proglasite klijent popravljenim. Varijabla koja se promenila je putanja, a putanju je proba izmerila.

Povezani članci