Pārsūtīt fiksētu 1,500 baitu iekšējo paketi caur VPN
Fiksēts 1,500 baitu iekšējais pakete neietilpst 1,500 baitu ārējā ceļā. Izmēriet papildu apjomu un pēc tam izvēlieties lielāku apakšējā slāņa MTU vai atbalstītu fragmentāciju.
Jums ir prasība, kas neliecas: pretējai pusei jāsaņem tas pats 1,500 baitu IP pakete, ko sūta sūtītājs, ieskaitot galvenes. Tunelis nevar ievietot šo paketi kopā ar savu ietvaru otrajā 1,500 baitu IP paketē, tāpēc kaut kam dizainā ir jāpiekāpjas. Turpmākā secība ir tā, ko izmantoju izmaiņu logā: pierakstīt baitu budžetu, pierādīt, ko apakšējais slānis patiešām spēj pārnest, pēc tam izvēlēties tieši vienu pārvades mehānismu un apstiprināt iekšējo paketi pretējā pusē.
Pierakstiet baitu budžetu pirms profila rediģēšanas
Iekapsulēšana pievieno baitus vairākos slāņos, un kopsumma ir jūsu profila īpašība, nevis konstante, ko var sameklēt. Adrešu saime, šifra izvēle, transporta protokols un jebkura saspiešanas vai ietvara opcija maina skaitli, tāpēc no citas ieviešanas nokopēts atņēmums kā budžets ir bezvērtīgs. Sāciet ar iekšējo prasību, pievienojiet savas konfigurācijas izmērīto papildu apjomu uz paketi un pierakstiet iegūto ārējo izmēru izmaiņu biļetē, pirms kāds rediģē failu.
Divi skaitļi nosaka dizainu: lielākā ārējā pakete, ko ceļš pārnes bez fragmentācijas, un papildu baiti, kas nepieciešami jūsu iekapsulēšanai. Kad pirmais ir mazāks par otro plus 1,500, vienam no tiem jāmainās. Tad izvēle kļūst šaura, nevis radoša, tāpēc abus skaitļus pierakstu pirms variantu apspriešanas. Tunela līmenī nekas šos baitus nesaspiež, un neviens viens MTU veselais skaitlis neatceļ jums doto prasību.
Pārbaudiet apakšējo slāni ar do-not-fragment ping
Mēriet ceļu, nevis uzticieties saskarnes MTU, jo svarīgākais ir mazākais posms ārējā ceļā. Linux sistēmā, -M do iestata do-not-fragment bitu un -s norāda ICMP lietderīgo slodzi, tāpēc 1,500 baitu kadrs atbild ar 1,472 baitiem lietderīgās slodzes, kad atņem 20 baitu IP galveni un 8 baitu ICMP galveni. Palieliniet slodzi, līdz zonde neizdodas, pēc tam pārejiet uz jumbo izmēru un pārbaudiet, vai ceļš to vispār pārnes.
ping -M do -s 1472 -c 2 198.51.100.10 ping -M do -s 8972 -c 2 198.51.100.10 tracepath -n 198.51.100.10
Ceļš, kas iztur 1,472 un neiztur 8,972, nevar pārnest 1,500 baitu iekšējo paketi ar papildu apjomu vienā ārējā paketē. Tā ir atbilde, kas jums bija vajadzīga pirms VPN konfigurācijas atvēršanas. Tas arī nosaka, kura no nākamajām divām sadaļām uz jums attiecas, tāpēc turiet abus zondes rezultātus blakus biļetei. Minēšana šeit maksā apkopes logu, jo tunelis, kas ziņo, ka ir up, neko nepasaka par lielāko paketi, ko ceļš pieņems.
Palieliniet ceļa MTU tikai tur, kur piekrīt katrs posms
Jumbo kadri ir end-to-end īpašība, nevis iestatījums, ko ieslēdzat divos galapunktos, kurus nejauši pārvaldāt. Katram slēdžam, maršrutētājam un pakalpojumu sniedzēja nodošanas punktam ārējā ceļā jāvienojas par lielāku izmēru, un viens 1,500 baitu posms klusi izmetīs paketi, ko tikko palielinājāt. Tikai vietējās saskarnes palielināšana ir klasiska pusizmaiņa, kas liek tunelim izskatīties salauztam, kamēr apakšējais slānis klusi nomet.
ip link set dev eth1 mtu 9000 ip link show dev eth1 ping -M do -s 8972 -c 2 198.51.100.10
Nomainiet saskarni, pēc tam vēlreiz pārbaudiet to pašu ceļu, pirms maināt ko citu. Ja zonde joprojām neizdodas, atgrieziet ip link set dev eth1 mtu 1500 un pārejiet uz fragmentāciju, nevis strīdieties ar pakalpojumu sniedzēju par saiti, kas jums nepieder.
Izmantojiet tuneļa fragmentāciju, kad apakšējais slānis nevar augt
Atbalstīts fragmentācijas mehānisms zem iekšējās paketes ļauj vairākām ārējām paketēm pārnest vienu iekšējo paketi, un pretējais tuneļa galapunkts tos atkal saliek, pirms nodod oriģinālu steksam. Community OpenVPN UDP fragmenta opcija ir viens šīs idejas realizējums, un tas nav tas pats, kas parastā ārējās paketes IP fragmentācija. Abiem vienaudžiem jādarbojas versijai, kas atbalsta šo formātu, un datu ceļam jābūt tam, ko domājat: OpenVPN 3 klientiem un kodola paātrinātiem datu kanāliem ir atšķirīgi ierobežojumi, tāpēc profils, kas darbojas vienā klientā, var neizdoties citā.
openvpn --config client.ovpn --tun-mtu 1500 --fragment 1400 --verb 4
Parastā ārējā fragmentācija ir otrs variants, un tas ir vājāks. IPv6 maršrutētāji vispār nefragmentē pārsūtītu paketi, tāpēc pārāk liela ārējā pakete vienkārši iet bojā, un sūtītājs to uzzina tikai tad, ja attiecīgais ICMPv6 ziņojums izdzīvo ceļā. Fragmenti arī aicina uz filtrēšanu un zudumu pastiprināšanu, tāpēc es to uzskatu par rezerves variantu, nevis plānu.
Straumes balstīts ārējais pārnēsātājs apiet izmēra jautājumu, segmentējot savu baitu straumi, un atjaunotā iekšējā pakete joprojām var būt 1,500 baitu. Tas ir transporta lēmums ar savām izmaksām, tostarp labi zināmo TCP uzvedību TCP iekšienē, tāpēc pieņemiet to apzināti, nevis kā MTU strīda blakusefektu.
Apstipriniet, ka iekšējā pakete ierodas nemainīta
Pārbaude nav veiksmīga rokasspiediena rezultāts. Uzņemiet tuneļa saskarnē abos galos un salīdziniet tās paketes izmēru un saturu, ko lietojumprogramma faktiski nosūtīja, ar to, ko saņēma pretējā puse.
ip link show dev tun0 ping -M do -s 1472 -c 2 10.8.0.1 tcpdump -ni tun0 -c 5 'icmp and greater 1000'
Ja uzņemtais materiāls rāda pilna izmēra iekšējo paketi pretējā galā, pārvades izvēle darbojas, un atlikušais darbs ir to pierakstīt. Ja tas neko nerāda, kamēr tunelis ziņo, ka ir up, ārējā pakete kaut kur starp galapunktiem tiek izmesta, kas jūs atgriež pie zondes, nevis pie šifra iestatījumiem.
Pirms biļetes aizvēršanas pierakstiet trīs lietas: izmērīto ārējo budžetu, izvēlēto mehānismu un komandu, kas pierādīja, ka iekšējā pakete izdzīvoja. Nākamajai personai, kas aiztikts šo tuneli, būs vajadzīgas visas trīs, un nevienu no tām nevar atjaunot tikai no konfigurācijas faila.