IPIP WireGuard barruan: inork aurrekontuan sartu ez zituen 20 byte gehigarriak
IPIPek 20 byte gehiago kostatzen ditu WireGuard barruan. Egin aurrekontua geruza egokian, fragmentazioari egotzi aurretik tunel bizian trabatutako transferentzia.
Ping txikiek tunela zeharkatzen dute egun osoan, SSH pankarta iristen da, eta fitxategi-transferentzia hasten den unean izozten da saioa. Eredu horrek geruza okerrean kontatutako byte-aurrekontu bat adierazten du, non kanpoko tunela bere gainkostuarentzat dimentsionatu zen eta inork ez zuen barrukoa kendu. IPIP pakete habiaratua beste IP pakete bat besterik ez da WireGuardentzat, eta horregatik bertan kontsumitzen ditu inoiz erreserbatu ez zenituen byteak. Zuzenketa aritmetika da, eta hiru komandotan eta taula batean sartzen da.
Hori salatzen duen sintoma
Fragmentazio-arazoen berri tamainak ematen du, inoiz ez helbideek. Zure parekoak 56 byteko ping bati erantzuten dio ordubetez, eta gero isiltzen da 1400 bytetan, tunela zutik eta ibilbide bat ere aldatu gabe. Eskuak ematea sartzen da, lehen TCP leiho osoa ez, eta transferentzia osasuntsu zirudienetik segundo gutxira gelditzen da.
Neurtu sabaia ezer editatu aurretik, neurtu gabeko sabaia birritan ehizatuko duzun hori delako. Bidali zunda bat susmagarria den tamainaren azpitik do-not-fragment bita ezarrita, ping -M do -s 1000 10.9.0.2, eta errepikatu jada handiegia dela dakizun tamaina batean. Birakadak karga erabilgarriaren tamainari jarraitzen dionean helmuga aldatu gabe, bideratzeak bere lana egiten du eta aurrekontutik goiburu bat falta da.
Zenbatu goiburu bakoitza behin, geruza egokian
Hasi bideko MTU txikienetik eta ez tunelaren interfazetik, harresia bi muturren gainetik baitago. WireGuardek 60 byte gastatzen ditu IPv4 kanpo-garraiobide batean: 20 IPrako, 8 UDPrako eta 32 bere goiburuarentzat, eta 80 byte garraiobide hori IPv6 denean. 1420 byteko wg0 batek 20 byteko tartealdea gordetzen du 1500 byteko bide batek benetan eman ditzakeen 1440en azpian, eta horregatik wikietik kopiatutako zifra oraindik hemen sartzen da. Marraztu pila osoa diagraman, bestela MTU hurrengo aldatuko duenak zenbaki biribil berri bat hautatuko baitu eta zure akatsa oinordetzan hartuko baitu.
| Layer | Bytes | Remaining |
|---|---|---|
| Path MTU on the wired link | none yet | 1500 |
| WireGuard outer: IP, UDP, WG header | 60 | 1440 |
| Slack kept for safety | 20 | 1420 (wg0) |
| IPIP header inside the tunnel | 20 | 1400 (ipip0) |
| Original IPv4 and TCP headers | 40 | 1360 payload |
Bosgarren errenkada da aurrekontuak okertzen diren tokia, interfaz habiaratuak daramatzan 1400 byteek jatorrizko paketearen beraren 40 byteko goiburuak badituzte eta. Byte horietatik 1360ek bakarrik iristen dira fitxategia irakurtzen duen prozesura. Hartu 1400 aplikazioaren karga erabilgarritzat, zutabe hori ez duen edozein diagramak gonbidatzen zaituen bezala, eta barruko gailuak 40 byte gehiegi oparo amaituko du mugitu ez den harresi baten aurrean.
Ezarri bi MTUak bereizita
Eramailea eta gailu habiaratua objektu bereiziak dira, beraz bakoitzak bere balioa behar du. Aplikatu ordena honetan, gailu habiaratuak ez baitu ezer heredatzen eramailetik:
ip link set wg0 mtu 1420
ip tunnel add ipip0 mode ipip remote 203.0.113.9 local 198.51.100.4
ip link set ipip0 mtu 1400
Memorizatzeko merezi duen araua: barruko MTUa = kanpoko MTUa - 20, IPIP tunelak daraman paketea IPv4 denean, eta - 40, barruko paketearen edozein alde IPv6 bihurtzen denean, goiburu habiaratua 20 bytetik 40ra hazten baita. Besterik ez da kenketa horretan sartzen. WireGuarden gainkostua 1420 hautatu zenuenean gastatu zen jada, eta bi aldiz kobratzeak primeran funtzionatzen duen eta inork neurtzen ez duen bitartean motel jarraitzen duen tunel bat sortzen du. Bi gailuek 1400 biribila daramatenean, akats horren aztarna da zehazki.
IPv6k pakete habiaratuaren edozein alderekin goiko zifra guztiak baliogabetzen ditu, beraz berrikalkulatu antzeko gune batetik zenbaki bat kopiatu ordez. Kentzen diren goiburuak 40 bytekoak dira bakoitza, IPv6 kanpoko bidean edo jatorrizko datagraman agertzen denean, eta karga erabilgarriaren zifra berdin jaisten da.
Ziurrenik behar ez duzun suebaki-araua
Bi WireGuard parekoren artean kablean dagoen gauza bakarra UDP da, beraz protokolo 4rako sarrera-arau batek, RFC 2003k IPv4-IPv4 barruan kapsulatzearen esleitzen dion zenbakia, ez du bide habiaratua sortzen ezta bizirik mantentzen ere. IPIP goiburua karga erabilgarri zifratuaren barruan bizi da, non ertz-suebakiren batek ikusten ez duen. Protokolo 4 irekitzeak ez du ezer erosten ostalarirako bide baimendu bat gehiago ez denik.
Jatorrizko paketearen iturburuak eta helmugak aipatzen dituen politikak deskapsulatzetik geroagokoa da, tunelaren interfazetan eta bideratze-taulan. Jarri han eta ertz-araua itxita egon daiteke.
Zer baliozkotzen duen WireGuardek benetan
AllowedIPs WireGuardek daraman paketearen iturburua epaitzen du, eta daraman hori IPIPaz kapsulatutako paketea da. Baimendutako IPIP iturburu bat onartzen da barruko goiburuak bideratu nahi ez zenukeen ostalari bat izendatzen duenean ere. Jatorrizko iturburua, beraz, ez da parekoak zuri begiratuta egiaztatu zuena, eta barruko helbide-pare horrek bere indarra behar du deskapsulatu ondoren.
Bilgarriak bideratze-egitura ematen du, ez kriptografia-geruza bigarren bat. IPIP WireGuarden barruan babes gehigarri deitzeak beste diseinu bat deskribatzen du.
Egiaztatu eskailera batekin, ping bakar batekin ez
Zundatu kalkulatu duzun muga inguratzen duten tamainak, eta gero berretsi kernelak bi gailuei buruz uste duena. 1360 byteko karga erabilgarriak eta 40 byteko goiburuek 1400 egiten dituztela, beheko lehen oihartzuna sartzen da eta bigarrena sabaia byte bat gaindituta esertzen da:
ping -M do -s 1372 10.9.0.2
ping -M do -s 1373 10.9.0.2
wg show wg0
ip -d link show ipip0
Sabaiapean garbi igarotzeak eta haren gaineko lehen tamainan huts egiteak aritmetika hasieratik amaierara mantentzen dela esan nahi du. Gero berrabiarazi hasieran trabatu zen transferentzia, zunda sintetikoak aurrekontua frogatzen baitu eta ez baitu ezer esaten bidaltzailearen idazketa-tamaerei buruz. Barruti habiaratuak frogatu duzun tamaina batean oraindik apurtzen badu, aztertu urruneko muturreko deskapsulatzea eta ibilbideak MTUari beste hamar byte moztu aurretik.