Stranica se učita, ping uspije, a kopiranje datoteke se svaki put zaglavi na istom mjestu. Taj obrazac ukazuje na veličinu paketa, a ne na propusnost ili kredencijale. Enkapsulacija dodaje bajte svakom paketu, pa korisni teret koji je stao na izvornoj putanji može premašiti ograničenje kad prođe kroz tunel. U tim razgovorima tri različita broja nazivaju se MTU, a njihovo miješanje vodi do postavke koja popravlja jednu aplikaciju i kvari drugu.

Tri broja koja ljudi nazivaju MTU

MTU interfejsa je konfigurirano ograničenje za paket na tom linku. MTU putanje je najmanje ograničenje duž rute, koje se otkriva, a ne konfigurira. 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 vanjski pogled. Vanjski paket nosi enkapsulirani plus zaglavlja koja protokol zahtijeva, pa je upotrebljiva unutrašnja veličina manja od onoga što vanjska putanja dopušta. Putanja do VPN servera također se razlikuje od serverove putanje do odredišta.

Otkrivanje MTU putanje omogućava pošiljaocu da sazna radnu veličinu, ali zavisi od povratne informacije. Kad posredni uređaj filtrira relevantne ICMP poruke, pošiljalac nastavlja slati pakete koji nikad ne završe, i to je klasična crna rupa. Simptom je prepoznatljiv kad ga znaš: rukovanje uspije, prvi teret pune veličine nestane, a veza se na kraju resetuje ili zaglavi. Ništa u zapisniku 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 mijenjajte 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 s isključenom fragmentacijom i teretom od 1372 bajta, a druga radi isto na Windowsu gdje se teret zadaje s -l. Odgovor znači da je ta veličina preživjela 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 umjesto 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 vrijedi 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 usmjerivač na putanji može prepisati tu vrijednost naniže da oba kraja šalju manje segmente. To radi MSS stezanje i djeluje 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 proslijeđena TCP rukovanja, a drugo prikazuje vlastiti MTU tunelskog interfejsa da ga uporedite s 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 umjesto 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 mijenjajte jednu opciju po jednu.

Promijenite jednu podržanu postavku i ponovite oba prolaza

Zadržite izvorni profil, promijenite jednu podržanu vrijednost i ponovite i mali zahtjev koji je radio i veliki transfer koji je pao. Ako se promijeni samo veliki, lovili ste veličinu. Ako se promijene oba, nešto drugo se pomjerilo s njim.

Niža vrijednost 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 vrijednost, putanju i verziju klijenta u tiket, jer isti broj primijenjen drugdje je nagađanje.

Ako isti profil radi s druge pouzdane mreže, zadržite tu razliku u dijagnozi umjesto da proglasite klijent popravljenim. Varijabla koja se promijenila je putanja, a putanju je proba izmjerila.

Povezani članci