Нагрузка 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 і паўторны сімптом разам у заяўцы. Запісаны набор з чатырох фактаў лепшы за запомненую канстанту, і гэта адзіная версія гэтага, якая перажыве наступнае абнаўленне кліента.