Lapa ielādējas, ping izdodas, un faila kopēšana katru reizi iestrēgst tajā pašā vietā. Šis modelis norāda uz paketes izmēru, nevis joslas platumu vai pieteikšanās datiem. Iekapsulēšana katrai pakei pievieno baitus, tāpēc lietderīgā slodze, kas ietilpa sākotnējā ceļā, pēc tuneļa šķērsošanas var pārsniegt robežu. Šajās sarunās trīs dažādi skaitļi tiek saukti par MTU, un to sajaukšana noved pie iestatījuma, kas salabo vienu lietotni un sabojā citu.

Trīs skaitļi, ko cilvēki sauc par MTU

Saskarnes MTU ir konfigurētā paketes robeža šajā saitē. Ceļa MTU ir mazākā robeža visā maršrutā, un to atklāj, nevis konfigurē. TCP MSS ir lietderīgās slodzes lielums, ko partneris paziņo kā saņemamu, un tas tiek atvasināts no pārējiem diviem, nevis ir atsevišķa fiziska robeža.

Tunelim ir iekšējs un ārējs skats. Ārējā pake nes iekapsulēto un protokolam vajadzīgās galvenes, tāpēc izmantojamais iekšējais lielums ir mazāks par to, ko pieļauj ārējais ceļš. Ceļš līdz VPN serverim arī atšķiras no servera ceļa līdz galamērķim.

Ceļa MTU atklāšana ļauj sūtītājam uzzināt darbojošos lielumu, bet tā ir atkarīga no atgriezeniskās saites saņemšanas. Kad starpierīce filtrē attiecīgos ICMP ziņojumus, sūtītājs turpina sūtīt paketes, kas nekad netiek pabeigtas, un tas ir klasiskā melnā bedre. Simptoms ir raksturīgs, kad to zini: rokas sasveicināšanās izdodas, pirmā pilna izmēra slodze pazūd, un savienojums beigās tiek atiestatīts vai iestrēgst. Nekas lietotnes žurnālā neizskatās pēc tīkla problēmas.

Pārbaudiet ceļu ar slodzi, ko kontrolējat

Pārbaude ir pierādījums par vienu maršrutu un vienu lielumu, nevis ieteikts iestatījums. Izmantojiet saimnieku, kas atbild, un mainiet tikai slodzes lielumu.

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

Pirmā komanda sūta Linux pārbaudi ar izslēgtu fragmentāciju un 1372 baitu slodzi, bet otrā dara to pašu Windows vidē, kur slodze tiek iestatīta ar -l. Atbilde nozīmē, ka šis lielums izturēja ceļu. Ziņojums, ka nepieciešama fragmentācija, ir informatīvs, savukārt taimauts ir neskaidrs, jo saimnieks vai starpierīce var vienkārši izmest ICMP.

Samaziniet lielumu dažos soļos, nevis bināri meklējot līdz baitam. Jūs mēģināt noskaidrot, vai pastāv lieluma griesti, nevis publicēt skaitli katram tīklam. Atrastais skaitlis attiecas uz šo ceļu, šo protokolu un šo adrešu saimi.

IPv4 un IPv6 fragmentējas atšķirīgi, tāpēc vienas saimes pārbaudes rezultāts neko nepasaka par otru. Testējiet to saimi, ko lietotne faktiski izmanto.

MSS ierobežošana palīdz tikai TCP

TCP gadījumā efektīvā slodze tiek sarunāta rokas sasveicināšanās laikā, un maršrutētājs ceļā var pārrakstīt šo vērtību uz leju, lai abi gali sūtītu mazākus segmentus. To dara MSS ierobežošana, un tā darbojas, klientam nemaz nepieskaroties.

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

Pirmais noteikums ierobežo paziņoto MSS līdz ceļa MTU pārsūtītajām TCP rokas sasveicināšanās reizēm, bet otrais parāda pašas tuneļa saskarnes MTU, lai to salīdzinātu ar to, ko pieļauj ceļš. Ierobežošana ir vismazāk invazīvais labojums TCP lietotnei, kas iestrēgst pēc rokas sasveicināšanās.

UDP tas neko nedara. Balss vai spēļu klients, kas sūta lielus datagrammas, pilnībā ignorēs MSS iestatījumu, jo nav rokas sasveicināšanās, ko pārrakstīt. Ja neveiksmīgā lietotne darbojas ar UDP, apskatiet drīzāk paša klienta paketes lieluma opcijas. Abi protokoli neizdodas atšķirīgi un tiek laboti ar dažādiem rīkiem, tāpēc protokols pieder biļetes pirmajam teikumam.

OpenVPN piedāvā opcijas, piemēram, tun-mtu, mssfix un ar fragmentāciju saistītus iestatījumus, un to uzvedība ir atkarīga no versijas un no tā, vai datu kanāls ir AEAD. Izlasiet izmantotās versijas rokasgrāmatu un mainiet vienu opciju vienlaikus.

Nomainiet vienu atbalstītu iestatījumu un atkārtojiet abas reizes

Saglabājiet sākotnējo profilu, nomainiet vienu atbalstītu vērtību un atkārtojiet gan mazo pieprasījumu, kas strādāja, gan lielo pārraidi, kas neizdevās. Ja mainās tikai lielais, jūs dzījāties pēc lieluma. Ja mainās abi, līdzi pakustējās kaut kas cits.

Zemāka vērtība var mazināt simptomu, vienlaikus pievienojot papildu izmaksas, tāpēc mazākais iespējamais skaitlis nav mērķis. Mērķis ir lielums, ko ceļš droši nes ar vismazāko izšķērdēšanu. Pierakstiet vērtību, ceļu un klienta versiju biļetē, jo tā paša skaitļa piemērošana citur ir minējums.

Ja tas pats profils strādā no cita uzticama tīkla, saglabājiet šo atšķirību diagnozē, nevis pasludiniet klientu salabotu. Mainīgais, kas mainījās, ir ceļš, un ceļu izmērīja pārbaude.

Saistītie raksti