IPsec-i ülekulu: režiim, NAT-T ja algoritmid muudavad seda kõike
Üks avaldatud ülekuluarv kirjeldab ühte kapseldust ühel teel. Liitke kokku päised, mille teie tunnel tegelikult läbi räägib, ja seejärel mõõtke teed.
Kuskil juhendis on arv, tavaliselt kuuekümne ja kaheksakümne baidi vahel, mille keegi lahutas 1500-st, et saada liidese MTU. See arv kirjeldab ühte konkreetset kapseldust ühel konkreetsel teel. Muutke režiimi, välist aadressiperekonda, šifrit või NAT-i olemasolu ja aritmeetika ei kehti enam teie tunneli kohta.
Arv tuli teisest tunnelist
Ülekulu ei ole IPsec-i omadus abstraktselt. See on paketi omadus, mis tegelikult ehitatakse: läbi räägitud režiim, väline päis, kaitsepäis, täitmine, terviklikkuse väli ja võib-olla täiendav UDP-mähis.
IPv4-ga ja ilma NAT-ita transportrežiimi kohta öeldud arv kirjeldab väiksemat paketti kui tunnelirežiim IPv6-ga NAT-i läbimisel. Mõlemad on oma juhtumi jaoks õiged. Kummagi kopeerimine teise juurutusse viib selleni, et inimestel on MTU, mis lõhub suuri ülekandeid. Tõrge on vaikne, sest väikesed päringud töötavad edasi.
Liitke kokku kihid, mis tegelikult olemas on
Alustage välisest IP-päisest ja liikuge sissepoole. Tunnelirežiimis on algne pakett sees, seega on väline päis lisand, mitte asendus. RFC 4303 kirjeldab ESP-päist, täitmist ja terviklikkuse andmeid, mis sellele järgnevad.
| Layer | What it adds | When it applies |
|---|---|---|
| Outer IP header | 20 bytes for IPv4, 40 for IPv6 | Always, and 40 rather than 20 if the outer path is v6 |
| ESP header | 8 bytes of SPI and sequence number | Always |
| Block cipher IV | 8 to 16 bytes depending on the transform | When the negotiated cipher uses one |
| Padding and trailer | Padding to the block size, plus two trailer bytes | Always, and the amount varies with payload length |
| Integrity data | 12 to 16 bytes for common authenticated ciphers | When integrity protection is negotiated |
| UDP encapsulation | 8 bytes | NAT traversal on port 4500, which is common for clients behind NAT |
Ükski neist ridadest ei ole juurutuste lõikes konstantne ja täitmise rida ei ole konstantne isegi ühe juurutuse sees. Just seetõttu valmistab üks avaldatud ülekuluarv pettumust.
Kaks kohta võivad sama tunneli osas eriarvamusel olla
Kaitstud pakett peab ikkagi ületama välise tee ja väline tee ei ole kõikjal sama. PPPoE juurdepääsuliin kannab vähem kui puhas Etherneti segment. Mobiilivõrk võib veelgi kitseneda ja oma liiklust tunnelisse panev teenusepakkuja lisab veel ühe kapselduse, mida keegi ei maininud. Tunnel, mis töötab ühel lingil ja ebaõnnestub teisel, kirjeldab teist linki, mitte protokolli.
Ka mõlemad suunad võivad erineda. Asümmeetriline marsruut võib anda töötava üleslaadimise ja takerdunud allalaadimise, mis loetakse rakenduse probleemiks seni, kui vaatate paketi suurusi, mitte kättesaadavust. Väikese pingi õnnestumine tõestab täissuuruses vastuse kohta väga vähe.
Mõõtke, mitte lahutage
Leidke suurim datagramm, mis tee läbib. Seejärel võrrelge seda väärtusega, mida liides teatab:
ip link show eth0 | grep -o 'mtu [0-9]*' ip xfrm state list ping -M do -s 1400 198.51.100.7 ping -M do -s 1372 198.51.100.7 tcpdump -ni any -c 20 'esp or udp port 4500'
Vähendage pingi suurust, kuni vastused saabuvad, ja pidage suurimat töötavat väärtust selle tee eelarveks. xfrm-i väljund ütleb, milline režiim ja millised algoritmid läbi räägiti, ning see on iga ausa arvutuse sisend. Püüdis kinnitab, kas juhtmel on ESP või UDP-sse pakitud ESP, ja see lahendab NAT-i küsimuse oletamata.
Jätke üks väärtus ka juhtimistasandile. IKE käepigistuse pakettide struktuur erineb andmepakettidest, seega käepigistuse püüdisest tuletatud suurus ei ole andmetasandi MTU.
Pange arv sinna, kuhu see kuulub
Tunneli kaudu TCP puhul on MSS-i piiramine sageli kõige vähem sekkuv kontroll, sest see vähendab seda, mida otspunktid saadavad, muutmata tunnelit ennast. Marsruudipõhise tunneli puhul seadke tunneliliidese MTU teadlikult ja dokumenteerige, miks. Mõlema korraga tegemine ja seejärel mõõtmine ei anna teile mingit teavet selle kohta, milline aitas.
Hoidke läbi räägitud režiim, väline perekond, NAT-i olek ja korratav sümptom piletil koos. Kirja pandud nelja fakti kogum on parem kui meelde jäetud konstant, ja see on ainus selle versioon, mis järgmise kliendi uuenduse üle elab.