IPIP ġewwa WireGuard: l-20 byte żejda li ħadd ma bagħat fil-baġit
IPIP jiswa 20 byte oħra ġewwa WireGuard. Agħmel il-baġit fis-saff it-tajjeb qabel ma tagħti tort lill-frammentazzjoni għal trażmissjoni mblukkata fuq mina ħajja.
Pingi żgħar jaqsmu l-mina l-ġurnata kollha, il-banner SSH jasal, u mbagħad is-sessjoni tiffriża fil-mument li jibda trasferiment ta' fajl. Dan il-mudell jindika baġit ta' bytes magħdud fis-saff żbaljat, fejn il-mina ta' barra ġiet imkejla għall-overhead tagħha stess u ħadd ma naqas dik ta' ġewwa. Pakkett IPIP imdawwar huwa biss pakkett IP ieħor għal WireGuard, u għalhekk eżatt jikkonsma bytes li qatt ma rriżervajt. Il-korrezzjoni hija aritmetika, u taqbel fi tliet kmandi u tabella waħda.
Is-sintomu li jikxifha
Problemi tal-frammentazzjoni jħabbru lilhom infushom bid-daqs, qatt bl-indirizzi. Il-peer tiegħek iwieġeb għal ping ta' 56 byte għal siegħa u mbagħad jiskot bil-1400 byte waqt li l-mina tibqa' 'l fuq u ebda rotta ma nbidlet. Il-handshake jidħol, l-ewwel tieqa TCP sħiħa ma tidħolx, u t-trasferiment jeqaf sekondi wara li deher f'saħħtu.
Kejjel is-saqaf qabel ma tedita xejn, għax saqaf mhux imkejjel huwa dak li se tiġri wara darbtejn. Ibgħat probe waħda taħt id-daqs suspettat bil-bit do-not-fragment stabbilit, ping -M do -s 1000 10.9.0.2, imbagħad erġa' għamilha f'daqs li diġà taf huwa kbir wisq. Meta l-qalba ssegwi d-daqs tal-payload filwaqt li d-destinazzjoni tibqa' mhux mibdula, ir-routing qed jagħmel xogħlu u hemm header nieqes mill-baġit.
Għodd kull header darba, fis-saff it-tajjeb
Ibda mill-iżgħar MTU fil-passaġġ u mhux mill-interface tal-mina, għax il-ħajt jinsab 'il fuq miż-żewġ trufijiet. WireGuard iqatta' 60 byte fuq trasport ta' barra IPv4: 20 għal IP, 8 għal UDP u 32 għall-header tiegħu stess, u 80 byte meta dak it-trasport ikun IPv6. wg0 ta' 1420 byte iżomm 20 byte ta' marġni taħt l-1440 li passaġġ ta' 1500 byte jista' verament iwassal, u għalhekk iċ-ċifra kkupjata minn wiki għadha taqbel hawn. Pinġi l-istack kollu fid-dijagramma, għax min ibiddel l-MTU wara xorta waħda se jagħżel numru tond ġdid u jiret il-bug tiegħek.
| 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 |
Il-ħames ringiela hija fejn il-baġits imorru ħażin, għax l-1400 byte li ġġorr interface imdawra diġà jinkludu l-40 byte tiegħu stess ta' headers tal-pakkett oriġinali. Biss 1360 minn dawk il-bytes jilħqu l-proċess li jaqra l-fajl. Ittratta l-1400 bħala payload tal-applikazzjoni, kif jistiednek kull dijagramma mingħajr dik il-kolonna, u l-apparat ta' ġewwa jispiċċa 40 byte wisq ġeneruż quddiem ħajt li ma ċċaqlaqx.
Issettja ż-żewġ MTU separatament
Il-carrier u l-apparat imdawwar huma oġġetti separati, għalhekk kull wieħed għandu bżonn il-valur tiegħu. Applikaħom f'dan l-ordni, għax l-apparat imdawwar ma jiret xejn mill-carrier:
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
Ir-regola li tiswa li tiftakar: MTU ta' ġewwa = MTU ta' barra - 20 meta l-pakkett li ġġorr il-mina IPIP huwa IPv4, u - 40 hekk kif xi naħa tal-pakkett ta' ġewwa hija IPv6, għax il-header imdawwar jikber minn 20 byte għal 40. Xejn ieħor ma jappartjeni għal dik is-sottrazzjoni. L-overhead ta' WireGuard diġà ntefaq meta għażilt 1420, u li żżommu darbtejn jipproduċi mina li taħdem perfettament u tibqa' bil-mod sakemm ħadd ma jkejjilha. Skjerament fejn iż-żewġ apparati jġorru 1400 tond huwa l-impronta ta' dak l-iżball eżatt.
IPv6 fuq xi naħa tal-pakkett imdawwar tinvalida kull ċifra hawn fuq, għalhekk erġa' kkalkula minflok ma tikkupja numru minn sit simili. Il-headers imnaqqsa huma 40 byte kull wieħed hekk kif IPv6 jidher fil-passaġġ ta' barra jew fid-datagramma oriġinali, u ċ-ċifra tal-payload tinżel eżattament daqshekk.
Ir-regola tal-firewall li probabilment m'għandekx bżonn
Bejn żewġ peers ta' WireGuard l-unika ħaġa fuq il-wire hija UDP, għalhekk regola inbound għall-protokoll 4, in-numru li RFC 2003 jagħti lill-enkapsulazzjoni IPv4-f'IPv4, la toħloq il-passaġġ imdawwar u lanqas iżżommu ħaj. Il-header IPIP jgħix ġewwa l-payload encrypted, fejn ebda firewall tat-tarf ma jarah. Li tiftaħ il-protokoll 4 xorta waħda ma tixtri xejn aktar minn triq permessa oħra lejn il-host.
Politika li ssemmi s-sorsi u d-destinazzjonijiet tal-pakkett oriġinali tappartjeni wara d-dekapsulazzjoni, fuq l-interfaces tal-mina u fit-tabella tar-routing. Poġġiha hemm u r-regola tat-tarf tista' tibqa' magħluqa.
X'jivvalida WireGuard fil-verità
AllowedIPs jiġġudika s-sors tal-pakkett li jġorr WireGuard, u dak li jġorr huwa l-pakkett enkapsulat bl-IPIP. Sors IPIP permess jiġi aċċettat anki meta l-header ta' ġewwa jsemmi host li preferi ma tagħmilx routing lejh. Għalhekk is-sors oriġinali mhuwiex dak li l-peer iċċekkja għalik, u dak il-par ta' indirizzi ta' ġewwa jeħtieġ l-infurzar tiegħu stess wara d-dekapsulazzjoni.
Il-wrapper jipprovdi struttura ta' routing, mhux it-tieni saff ta' kriptografija. Li ssejjaħ l-IPIP protezzjoni extra ġewwa WireGuard jiddeskrivi disinn differenti.
Ivverifika b'sellum, mhux b'ping wieħed
Ipprova daqsijiet li jqanqlu l-fruntiera li kkalkulajt, imbagħad ikkonferma x'jaħseb il-kernel dwar iż-żewġ apparati. B'1360 byte ta' payload flimkien ma' 40 byte ta' headers jagħmlu 1400, l-ewwel echo hawn taħt jidħol u t-tieni joqgħod byte wieħed lil hinn mis-saqaf:
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
Pass nadif taħt is-saqaf u falliment fl-ewwel daqs 'il fuq minnu jfissru li l-aritmetika tibqa' sejra minn tarf għal tarf. Imbagħad erġa' mexxi t-trasferiment li oriġinarjament waqaf, għax probe sintetika tipprova l-baġit u ma tgħid xejn dwar id-daqsijiet tal-kitba tal-mittent innifsu. Jekk il-passaġġ imdawwar għadu jinqasam f'daqs li ppruvajt li jidħol, iċċekkja d-dekapsulazzjoni u r-rotot tat-tarf imbiegħed qabel ma tqaxxar għaxar byte oħra mill-MTU.