Transportimi i një pakete të brendshme fikse prej 1,500 bajtësh përmes një VPN
Një paketë e brendshme fikse prej 1,500 bajtësh nuk futet në një rrugë të jashtme prej 1,500 bajtësh. Matni mbingarkesën dhe pastaj zgjidhni një MTU më të madhe të underlay-it ose fragmentim të mbështetur.
Keni një kërkesë që nuk përkulet: ana e largët duhet të marrë të njëjtën paketë IP prej 1,500 bajtësh që lëshon dërguesi, duke përfshirë titujt. Një tunel nuk mund ta mbështjellë atë paketë bashkë me kornizimin e vet brenda një pakete të dytë IP prej 1,500 bajtësh, prandaj diçka në dizajn duhet të popullojë. Rendi më poshtë është ai që përdor në një dritare ndryshimi: shkruani buxhetin në bajtë, provoni çfarë underlay-i mund të mbajë vërtet, pastaj zgjidhni saktësisht një mekanizëm transporti dhe konfirmoni paketën e brendshme në anën tjetër.
Shkruani buxhetin në bajtë përpara se të modifikoni një profil
Inkapsulimi shton bajtë në disa shtresa, dhe totali është veti e profilit tuaj dhe jo një konstante që mund të kërkoni. Familja e adresave, zgjedhja e shifrës, protokolli i transportit dhe çdo opsion kompresimi ose kornizimi e lëvizin numrin, prandaj një zbritje e kopjuar nga një vendosje tjetër është e pavlerë si buxhet. Filloni nga kërkesa e brendshme, shtoni mbingarkesën e matur për paketë të konfigurimit tuaj dhe shkruani madhësinë e jashtme që rezulton në tiketën e ndryshimit përpara se dikush të modifikojë një skedar.
Dy numra vendosin dizajnin: paketa më e madhe e jashtme që rruga mban pa fragmentim dhe bajtët shtesë që i nevojiten inkapsulimit tuaj. Kur i pari është më i vogël se i dyti plus 1,500, njëri prej tyre duhet të ndryshojë. Zgjedhja atëherë bëhet e ngushtë dhe jo kreative, prandaj i shkruaj të dy numrat përpara se të diskutoj opsionet. Asgjë në shtresën e tunelit nuk i kompreson ata bajtë, dhe asnjë numër i plotë MTU nuk e heq kërkesën që ju është dhënë.
Sondojeni underlay-in me ping do-not-fragment
Matni rrugën në vend që t'i besoni MTU-së së ndërfaqes, sepse lidhja më e vogël në rrugën e jashtme është ajo që ka rëndësi. Në Linux, -M do vendos bitin do-not-fragment dhe -s merr ngarkesën ICMP, prandaj një kornizë prej 1,500 bajtësh përgjigjet me 1,472 bajtë ngarkesë kur zbriten titulli IP prej 20 bajtësh dhe titulli ICMP prej 8 bajtësh. Rritni ngarkesën derisa sonda të dështojë, pastaj hidhuni në një madhësi jumbo për të parë nëse rruga e mban fare.
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
Një rrugë që kalon 1,472 dhe dështon në 8,972 nuk mund të mbajë një paketë të brendshme prej 1,500 bajtësh plus mbingarkesë në një paketë të vetme të jashtme. Kjo është përgjigjja që ju duhej përpara se të hapnit konfigurimin e VPN-së. Ajo gjithashtu vendos cila nga dy seksionet e ardhshme vlen për ju, prandaj mbajini të dy rezultatet e sondës pranë tiketës. Të hamendësosh këtu kushton një dritare mirëmbajtjeje, sepse një tunel që raporton veten up nuk ju thotë asgjë për paketën më të madhe që rruga do të pranojë.
Ngrijeni MTU-në e rrugës vetëm aty ku çdo hop bie dakord
Kornizat jumbo janë veti end-to-end, jo një cilësim që e aktivizoni në dy pikat fundore që kontrolloni rastësisht. Çdo switch, router dhe dorëzim i ofruesit në rrugën e jashtme duhet të bjerë dakord për madhësinë më të madhe, dhe një hop i vetëm prej 1,500 bajtësh do ta hedhë në heshtje paketën që sapo e zmadhove. Ngritja vetëm e ndërfaqes lokale është ndryshimi klasik gjysmak që e bën tunelin të duket i prishur ndërsa underlay-i hedh në heshtje.
ip link set dev eth1 mtu 9000 ip link show dev eth1 ping -M do -s 8972 -c 2 198.51.100.10
Ndryshoni ndërfaqen, pastaj risondoni të njëjtën rrugë përpara se të ndryshoni çdo gjë tjetër. Nëse sonda dështon përsëri, kthejeni me ip link set dev eth1 mtu 1500 dhe kaloni në fragmentim në vend që të grindeni me një ofrues për një lidhje që nuk është e juaja.
Përdorni fragmentimin e tunelit kur underlay-i nuk mund të rritet
Një mekanizëm i mbështetur fragmentimi nën paketën e brendshme lejon disa paketa të jashtme të mbajnë një paketë të brendshme, dhe pika fundore e tunelit përballë i rimonton ato përpara se origjinalin t'ia dorëzojë stakut. Opsioni UDP fragment i Community OpenVPN është një zbatim i asaj ideje dhe nuk është e njëjta gjë me fragmentimin e zakonshëm IP të paketës së jashtme. Të dy peer-at duhet të ekzekutojnë një version që e mbështet formatin, dhe rruga e të dhënave duhet të jetë ajo që mendoni: klientët OpenVPN 3 dhe kanalet e të dhënave të përshpejtuara nga kerneli kanë kufij të ndryshëm, prandaj një profil që funksionon në një klient mund të dështojë në një tjetër.
openvpn --config client.ovpn --tun-mtu 1500 --fragment 1400 --verb 4
Fragmentimi i zakonshëm i jashtëm është opsioni tjetër dhe është më i dobëti. Router-at IPv6 nuk e fragmentojnë fare një paketë të përcjellë, prandaj një paketë e jashtme tepër e madhe thjesht vdes dhe dërguesi e mëson vetëm nëse mesazhi përkatës ICMPv6 mbijeton në rrugë. Fragmentet gjithashtu ftojnë filtrim dhe amplifikim të humbjeve, prandaj e trajtoj këtë si zgjidhje rezervë dhe jo si plan.
Një bartës i jashtëm i bazuar në rrjedhë e anashkalon çështjen e madhësisë duke segmentuar rrjedhën e vet të bajtëve, dhe paketa e brendshme e rindërtuar mund të jetë ende 1,500 bajtë. Ky është një vendim transporti me koston e vet, duke përfshirë sjelljen e njohur të TCP brenda TCP, prandaj merreni me qëllim dhe jo si efekt anësor i një debati për MTU.
Konfirmoni se paketa e brendshme arrin e pandryshuar
Verifikimi nuk është një handshake i suksesshëm. Kapni në ndërfaqen e tunelit në të dy skajet dhe krahasoni madhësinë dhe përmbajtjen e paketës që aplikacioni dërgoi vërtet me atë që mori ana e largët.
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'
Nëse kapja tregon paketën e brendshme me madhësi të plotë në skajin tjetër, zgjedhja e transportit funksionon dhe puna që mbetet është ta dokumentoni. Nëse nuk tregon asgjë ndërsa tuneli raporton veten up, paketa e jashtme po hidhet diku midis pikave fundore, gjë që ju kthen te sonda dhe jo te cilësimet e shifrës.
Shkruani tri gjëra në tiketën e ndryshimit përpara se ta mbyllni: buxhetin e matur të jashtëm, mekanizmin që zgjodhët dhe komandën që provoi se paketa e brendshme mbijetoi. Personi i ardhshëm që prek këtë tunel do t'i ketë të nevojshme të tria, dhe asnjëra prej tyre nuk mund të rindërtohet vetëm nga skedari i konfigurimit.