Fix 1,500 bájtos belső csomag szállítása VPN-en át
Egy fix 1,500 bájtos belső csomag nem fér bele egy 1,500 bájtos külső útvonalba. Mérje meg a többletet, majd válasszon nagyobb alsó MTU-t vagy támogatott töredezést.
Van egy követelménye, amely nem hajlik: a távoli félnek ugyanazt az 1,500 bájtos IP-csomagot kell megkapnia, amelyet a küldő kibocsát, a fejlécekkel együtt. Egy alagút nem tudja ezt a csomagot a saját keretezésével együtt egy második 1,500 bájtos IP-csomagba csomagolni, ezért a tervezésben valaminek engednie kell. Az alábbi sorrend az, amelyet változási ablakban használok: írja fel a bájtkeretet, bizonyítsa, mit tud az alatta lévő hálózat valóban szállítani, majd válasszon pontosan egy szállítási mechanizmust, és erősítse meg a belső csomagot a távoli oldalon.
Írja fel a bájtkeretet, mielőtt profilt szerkeszt
A beágyazás több rétegben ad hozzá bájtokat, és az összeg a profilja tulajdonsága, nem pedig egy kikereshető állandó. A címcsalád, a titkosítás választása, a szállítási protokoll és bármely tömörítési vagy keretezési opció mozgatja a számot, ezért egy másik telepítésből másolt kivonás keretként értéktelen. Induljon a belső követelményből, adja hozzá a saját konfigurációja mért, csomagonkénti többletét, és írja fel a kapott külső méretet a változási jegybe, mielőtt bárki szerkesztene egy fájlt.
Két szám dönti el a tervezést: a legnagyobb külső csomag, amelyet az útvonal töredezés nélkül szállít, és az a többletbájt, amelyre a beágyazásának szüksége van. Ha az első kisebb, mint a második plusz 1,500, valamelyiknek változnia kell. A választás ilyenkor szűk, nem kreatív, ezért mindkét számot felírom, mielőtt a lehetőségeket megvitatnánk. Az alagút rétegén semmi nem tömöríti el ezeket a bájtokat, és egyetlen MTU-egész sem szünteti meg a kapott követelményt.
Vizsgálja az alatta lévő hálózatot töredezést tiltó pingekkel
Az útvonalat mérje, ne az interfész MTU-jában bízzon, mert a külső útvonal legkisebb láncszeme számít. Linuxon a -M do állítja be a töredezést tiltó bitet, és a -s veszi át az ICMP-terhelést, így egy 1,500 bájtos keret 1,472 bájt terhelésnél válaszol, miután a 20 bájtos IP-fejlécet és a 8 bájtos ICMP-fejlécet levonjuk. Növelje a terhelést, amíg a vizsgálat nem hibázik, majd ugorjon egy jumbo méretre, hogy lássa, az útvonal egyáltalán szállítja-e.
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
Az az útvonal, amely átmegy 1,472-n, és 8,972-nél elbukik, nem tud egy 1,500 bájtos belső csomagot a többlettel együtt egyetlen külső csomagban szállítani. Ez az a válasz, amelyre a VPN-konfiguráció megnyitása előtt szüksége volt. Ez dönti el azt is, hogy a következő két szakasz közül melyik vonatkozik Önre, ezért tartsa a két vizsgálati eredményt a jegy mellett. A találgatás itt egy karbantartási ablakba kerül, mert egy magát működőnek jelentő alagút semmit nem mond a legnagyobb csomagról, amelyet az útvonal elfogad.
Csak ott növelje az útvonal MTU-ját, ahol minden ugrás egyetért
A jumbo keretek végpontok közötti tulajdonságok, nem olyan beállítás, amelyet a két Ön által vezérelt végponton kapcsol be. A külső útvonal minden kapcsolójának, routerének és szolgáltatói átadási pontjának egyet kell értenie a nagyobb mérettel, és egyetlen 1,500 bájtos ugrás csendben eldobja az imént megnövelt csomagot. Csak a helyi interfész megemelése a klasszikus félmegoldás, amelytől az alagút töröttnek látszik, miközben az alatta lévő hálózat csendben elejti a csomagokat.
ip link set dev eth1 mtu 9000 ip link show dev eth1 ping -M do -s 8972 -c 2 198.51.100.10
Módosítsa az interfészt, majd vizsgálja újra ugyanazt az útvonalat, mielőtt bármi mást módosítana. Ha a vizsgálat továbbra is elbukik, állítsa vissza ezzel: ip link set dev eth1 mtu 1500 , és térjen át a töredezésre, ahelyett hogy egy szolgáltatóval vitatkozna egy olyan láncszemről, amely nem az övé.
Használjon alagút-töredezést, amikor az alatta lévő hálózat nem tud növekedni
A belső csomag alatt támogatott töredezési mechanizmus lehetővé teszi, hogy több külső csomag szállítson egy belső csomagot, és a távoli alagútvégpont újra összeállítja őket, mielőtt az eredetit átadja a veremnek. A Community OpenVPN UDP-töredezési opciója ennek az ötletnek az egyik megvalósítása, és nem ugyanaz, mint a külső csomag szokásos IP-töredezése. Mindkét félnek olyan verziót kell futtatnia, amely támogatja a formátumot, és az adatútvonalnak annak kell lennie, amit gondol: az OpenVPN 3 kliensek és a kernelben gyorsított adatcsatornák eltérő korlátokkal rendelkeznek, ezért az egyik kliensen működő profil a másikon elbukhat.
openvpn --config client.ovpn --tun-mtu 1500 --fragment 1400 --verb 4
A szokásos külső töredezés a másik lehetőség, és ez a gyengébb. Az IPv6-os routerek egyáltalán nem töredezik a továbbított csomagot, ezért a túlméretes külső csomag egyszerűen meghal, és a küldő csak akkor értesül erről, ha a vonatkozó ICMPv6-üzenet túléli az útvonalat. A töredékek szűrést és veszteségfelerősítést is hívnak, ezért ezt tartaléknak tekintem, nem tervnek.
A folyamalapú külső vivő megkerüli a méretkérdést azzal, hogy a saját bájtfolyamát szegmentálja, és az újraépített belső csomag továbbra is 1,500 bájt lehet. Ez saját költséggel járó szállítási döntés, beleértve a TCP ismert viselkedését TCP-n belül, ezért szándékosan hozza meg, ne egy MTU-vita mellékhatásaként.
Erősítse meg, hogy a belső csomag változatlanul érkezik
Az ellenőrzés nem sikeres kézfogás. Rögzítsen az alagút interfészén mindkét végén és hasonlítsa össze az alkalmazás által ténylegesen elküldött csomag méretét és tartalmát azzal, amelyet a távoli fél kapott.
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'
Ha a rögzítés a teljes méretű belső csomagot mutatja a távoli végén, a szállítási választás működik, és már csak rögzíteni kell. Ha semmit nem mutat, miközben az alagút magát működőnek jelenti, a külső csomag valahol a végpontok között elvész, ami visszaküldi a vizsgálathoz, nem a titkosítási beállításokhoz.
Három dolgot jegyezzen fel a jegybe a lezárás előtt: a mért külső keretet, a választott mechanizmust és azt a parancsot, amely bizonyította, hogy a belső csomag túlélte. A következő embernek, aki ehhez az alagúthoz nyúl, mindháromra szüksége lesz, és egyik sem rekonstruálható csupán a konfigurációs fájlból.