IPsec трошак: режим, NAT-T и алгоритми све то мењају
Један објављени број трошка описује једну инкапсулацију на једном путу. Саберите заглавља о којима ваш тунел заиста преговара, а затим измерите пут.
Негде у неком водичу постоји број, обично између шездесет и осамдесет бајтова, који је неко одузео од 1500 да би добио MTU интерфејса. Тај број описује једну конкретну инкапсулацију на једном конкретном путу. Промените режим, спољну породицу адреса, шифру или присуство NAT-а и аритметика више не важи за ваш тунел.
Број је дошао из другог тунела
Трошак није својство IPsec-а у апстрактном смислу. То је својство пакета који се заиста гради: договорени режим, спољно заглавље, заштитно заглавље, допуна, поље интегритета и могуће додатни UDP омотач.
Број наведен за транспортни режим са IPv4 и без NAT-а описује мањи пакет од тунелског режима са IPv6 под NAT пролазом. Обе су тачне за свој случај. Копирање било које од њих у друго распоређивање је начин на који људи заврше са MTU-ом који ломи велике преносе. Отказ је тих јер мали захтеви настављају да раде.
Саберите слојеве који заиста постоје
Почните од спољног IP заглавља и идите ка унутра. У тунелском режиму оригинални пакет је унутра, па је спољно заглавље додатак, а не замена. RFC 4303 описује ESP заглавље, допуну и податке интегритета који га следе.
| 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 |
Ниједан од тих редова није сталан међу распоређивањима, а ред са допуном није сталан ни унутар једног распоређивања. То је цео разлог зашто један објављени број трошка разочара.
Две локације могу да се не сложе око истог тунела
Заштићени пакет ипак мора да пређе спољни пут, а спољни пут није свуда исти. PPPoE приступна веза носи мање од чистог Ethernet сегмента. Мобилна мрежа може додатно да се смањи, а провајдер који тунелује сопствени саобраћај додаје још једну инкапсулацију коју нико није поменуо. Тунел који ради на једној вези, а пада на другој, описује другу везу, а не протокол.
Оба смера такође могу да се разликују. Асиметрична рута може да вам да радно учитавање и заглављено скидање, што изгледа као проблем апликације док не погледате величине пакета уместо доступности. Успешан мали ping доказује врло мало о одговору пуне величине.
Мерите уместо да одузимате
Нађите највећу датаграму која преживи пут. Затим је упоредите са вредношћу коју пријављује интерфејс:
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'
Спуштајте величину ping-а док не стигну одговори и узмите највећу радну вредност као буџет за тај пут. Излаз xfrm-а каже који су режим и који алгоритми договорени, а то је улаз за сваку поштену рачуницу. Снимак потврђује да ли је на жици ESP или ESP умотан у UDP, што решава питање NAT-а без нагађања.
Одвојите једну вредност и за контролну раван. IKE пакети руковања имају другачију структуру од податковних пакета, па величина изведена из снимка руковања није MTU податне равни.
Ставите број тамо где му је место
За TCP кроз тунел, ограничење MSS-а је често најмање инвазивна контрола, јер смањује оно што крајње тачке шаљу без промене самог тунела. За тунел заснован на рутама, поставите MTU тунелског интерфејса намерно и документујте зашто. Ако урадите обоје одједном и затим мерите, не добијате никакву информацију о томе шта је помогло.
Држите заједно у тикету договорени режим, спољну породицу, стање NAT-а и симптом који може да се понови. Записани скуп од четири чињенице побеђује запамћену константу, и то је једина верзија овога која преживљава следећу надоградњу клијента.