Ee feste 1,500-Byte-Bannepaket duerch eng VPN transportéieren
Ee feste 1,500-Byte-Bannepaket passt net an ee 1,500-Byte-Aussenwee. Mooss den Overhead an wiel duerno eng méi grouss Underlay-MTU oder eng ënnerstëtzte Fragmentatioun.
Dir hutt eng Ufuerderung, déi net no gëtt: déi aner Säit muss dee selwechten 1,500-Byte-IP-Paket kréien, deen de Sender erausgëtt, inklusiv Header. En Tunnel kann dee Paket plus säin eegene Framing net an en zweete 1,500-Byte-IP-Paket packen, also muss eppes am Design no ginn. D’Reiefolleg hei drënner ass déi, déi ech an engem Change-Fenster benotzen: de Byte-Budget schreiwen, beweisen, wat den Underlay tatsächlech droen kann, dann genau ee Transportmechanismus auswielen an de Bannepaket op der anerer Säit bestätegen.
Schreif de Byte-Budget, ier s de e Profil änderst
D’Encapsulation setzt Bytes op méi Schichten derbäi, an d’Total ass eng Eegenschaft vun dengem Profil an net eng Konstant, déi s du nogelees kanns. D’Adressfamill, d’Cipher-Wiel, den Transportprotokoll an all Kompressiouns- oder Framingoptioun beweegen d’Zuel, dofir ass eng Subtraktioun, déi s du vun enger anerer Installatioun kopéiers, als Budget wäertlos. Fänk mat der Bannenufuerderung un, setz den gemoossenen Overhead pro Paket vun dengem Konfiguratioun derbäi, a schreif déi resultéierend Aussenmass op den Change-Ticket, ier een eng Datei ännert.
Zwee Zuelen entscheeden den Design: de gréissten Aussenpaket, deen de Wee ouni Fragmentatioun dréit, an déi zousätzlech Bytes, déi d’Encapsulation brauch. Wann deen éischten manner ass wéi deen zweete plus 1,500, muss ee vun deenen zwee sech änneren. D’Wiel gëtt dann enk an net kreativ, dofir schreiwen ech béid Zuelen op, ier ech d’Optioune bespriechen. Op der Tunnelschicht kompriméiert näischt déi Bytes ewech, an och keen eenzelen MTU-Ganzzuel hëlt d’Ufuerderung fort, déi s de krut.
Sondéier den Underlay mat do-not-fragment Ping
Mooss de Wee, amplaz der Interface-MTU ze vertrauen, well de klengste Link am Aussenwee deen ass, deen zielt. Op Linux, -M do setzt den do-not-fragment-Bit a -s hëlt de ICMP-Payload, also äntwert ee 1,500-Byte-Frame mat 1,472 Byte Payload, wann een den 20-Byte-IP-Header an den 8-Byte-ICMP-Header ofzitt. Setz de Payload erop, bis d’Sond fehlschléit, a spréng duerno op eng Jumbo-Gréisst, fir ze gesinn, ob de Wee en iwwerhaapt dréit.
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
Ee Wee, deen 1,472 passéiert an 8,972 feelt, kann ee 1,500-Byte-Bannepaket plus Overhead net an engem eenzegen Aussenpaket droen. Dat ass d’Äntwert, déi s de gebraucht hues, ier s d’VPN-Konfiguratioun opmaachs. Et entscheet och, wéi eng vun den nächsten zwou Sektiounen op dech zoutrëfft, also hal béid Sondresultater nieft dem Ticket. Hei ze roden kascht e Maintenance-Fenster, well en Tunnel, deen sech als up mëldt, dech näischt iwwer de gréissten Paket seet, deen de Wee akzeptéiert.
Hief d’Path-MTU nëmmen do, wou all Hop eens ass
Jumbo-Framen sinn eng End-to-End-Eegenschaft, an net eng Astellung, déi s du op den zwéin Endpunkten aktivéiers, déi s du just kontrolléiers. All Switch, Router a Provider-Iwergab am Aussenwee muss sech op déi gréisser Gréisst eeneg ginn, an ee eenzegen 1,500-Byte-Hop verwërft de Paket, deen s de just vergréissert hues, roueg. Nëmmen d’lokal Interface ze hiewen ass déi klassesch Hallef-Ännerung, déi den Tunnel futti ausgesäit, während den Underlay roueg fale léisst.
ip link set dev eth1 mtu 9000 ip link show dev eth1 ping -M do -s 8972 -c 2 198.51.100.10
Änner d’Interface, da sondéier dee selwechte Wee nach eng Kéier, ier s nach eppes anescht änderst. Wann d’Sond nach ëmmer feelt, setz zréck mat ip link set dev eth1 mtu 1500 a gees op d’Fragmentatioun, amplaz mat engem Provider iwwer e Link ze streiden, deen dir net gehéiert.
Benotz Tunnel-Fragmentatioun, wann den Underlay net ka wuessen
En ënnerstëtzte Fragmentatiounsmechanismus ënner dem Bannepaket erlaabt et méi Aussenpaketen, ee Bannepaket ze droen, an den aneren Tunnel-Endpunkt setzt se erëm zesummen, ier en dat Original un de Stack gëtt. D’UDP-Fragmentoptioun vum Community OpenVPN ass eng Implementatioun vun deem Iddi, an et ass net datselwecht wéi déi gewéinlech IP-Fragmentatioun vum Aussenpaket. Béid Peers mussen eng Versioun lafen, déi de Format ënnerstëtzt, an de Datewee muss dee sinn, deen s de mengs: OpenVPN 3-Cliente an duerch de Kernel acceleréiert Datekanäl hu verschidde Limiten, also kann e Profil, deen op engem Client funktionéiert, op engem aneren feelen.
openvpn --config client.ovpn --tun-mtu 1500 --fragment 1400 --verb 4
Déi gewéinlech Aussenfragmentatioun ass déi aner Optioun, an si ass déi méi schwaach. IPv6-Routere fragmentéieren ee weidergeleet Paket guer net, also stierft en iwwergréissten Aussenpaket einfach, an de Sender léiert et nëmmen, wann déi entspriechend ICMPv6-Noriicht de Wee iwwerlieft. Fragmenter invitéieren och Filterung a Verloschtverstäerkung, dofir behandelen ech dat als Fallback an net als Plang.
En stream-baséierten Aussen-Droer ëmgeet d’Gréisstefro, andeem en säin eegene Bytestream segmentéiert, an de rekonstruéierte Bannepaket kann nach ëmmer 1,500 Byte sinn. Dat ass eng Transportentscheedung mat hirem eegene Käschten, inklusiv dem bekannten Verhalen vun TCP an TCP, also huel se bewosst an net als Nieweneffekt vun engem MTU-Argument.
Bestäteg, datt de Bannepaket onverännert ukommt
D’Verifikatioun ass keen erfollegräichen Handshake. Maach eng Opnam op der Tunnelschnittstell op béiden Enner a vergläich d’Gréisst an den Inhalt vum Paket, deen d’Applikatioun tatsächlech geschéckt huet, mat deem, deen déi aner Säit kritt huet.
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'
Wann d’Opnam de Bannepaket a voller Gréisst um aneren Enn weist, funktionéiert d’Transportwiel, an d’Rescht ass, se ze dokumentéieren. Wann se näischt weist, während den Tunnel sech als up mëldt, gëtt den Aussenpaket irgendwou tëschent den Endpunkten verworf, wat dech zréck op d’Sond schéckt an net op d’Cipher-Astellungen.
Schreif dräi Saachen an den Change-Ticket, ier s en zoumaachs: de gemoossenen Aussenbudget, de Mechanismus, deen s de gewielt hues, an de Befehl, deen bewisen huet, datt de Bannepaket iwwerlieft huet. Déi nächst Persoun, déi dësen Tunnel ufässt, brauch all dräi, an keng vun hinnen ass aus der Konfiguratiounsdatei eleng ze rekonstruéieren.