IPsec sąnaudos: režimas, NAT-T ir algoritmai viską keičia
Vienas paskelbtas sąnaudų skaičius aprašo vieną inkapsuliavimą viename kelyje. Sudėkite antraštes, dėl kurių jūsų tunelis iš tikrųjų susitaria, ir tada išmatuokite kelią.
Kur nors vadove yra skaičius, paprastai tarp šešiasdešimties ir aštuoniasdešimties baitų, kurį kažkas atėmė iš 1500, kad gautų sąsajos MTU. Tas skaičius aprašo vieną konkretų inkapsuliavimą viename konkrečiame kelyje. Pakeiskite režimą, išorinę adresų šeimą, šifrą arba NAT buvimą, ir aritmetika nebegalioja jūsų tuneliui.
Skaičius atėjo iš kito tunelio
Sąnaudos nėra IPsec savybė abstrakčiai. Tai savybė paketo, kuris tikrai sukonstruojamas: suderintas režimas, išorinė antraštė, apsaugos antraštė, užpildymas, vientisumo laukas ir galbūt papildomas UDP apvalkalas.
Skaičius, nurodytas transporto režimui su IPv4 ir be NAT, aprašo mažesnį paketą nei tunelio režimas su IPv6 per NAT. Abu teisingi savo atveju. Vieno iš jų kopijavimas į kitą diegimą yra būdas, kuriuo žmonės atsiduria su MTU, laužančiu didelius perdavimus. Gedimas tylus, nes mažos užklausos veikia toliau.
Sudėkite sluoksnius, kurie tikrai yra
Pradėkite nuo išorinės IP antraštės ir eikite į vidų. Tunelio režime originalus paketas yra viduje, tad išorinė antraštė yra papildymas, o ne pakaitalas. RFC 4303 aprašo ESP antraštę, užpildymą ir vientisumo duomenis, einančius po jos.
| 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 |
Nė viena iš tų eilučių nėra pastovi tarp diegimų, o užpildymo eilutė nėra pastovi net viename diegime. Tai ir yra visa priežastis, kodėl vienas paskelbtas sąnaudų skaičius nuvilia.
Dvi vietos gali nesutarti dėl to paties tunelio
Apsaugotas paketas vis tiek turi pereiti išorinį kelią, o išorinis kelias ne visur vienodas. PPPoE prieigos linija neša mažiau nei švarus Ethernet segmentas. Mobilusis tinklas gali dar labiau susitraukti, o savo srautą tuneliuojantis tiekėjas prideda dar vieną inkapsuliavimą, kurio niekas nepaminėjo. Tunelis, kuris veikia vienoje linijoje ir nepavyksta kitoje, aprašo antrąją liniją, o ne protokolą.
Abi kryptys taip pat gali skirtis. Asimetrinis maršrutas gali duoti veikiantį įkėlimą ir sustojusį atsisiuntimą, o tai skaitoma kaip programos problema, kol pažiūrėsite į paketų dydžius, o ne į pasiekiamumą. Sėkmingas mažas ping labai mažai įrodo apie viso dydžio atsakymą.
Matuokite, o ne atimkite
Raskite didžiausią datagramą, kuri išgyvena kelyje. Tada palyginkite ją su verte, kurią praneša sąsaja:
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'
Mažinkite ping dydį, kol pradės ateiti atsakymai, ir didžiausią veikiančią vertę laikykite to kelio biudžetu. xfrm išvestis pasako, kuris režimas ir kurie algoritmai buvo suderinti, ir tai yra bet kokio sąžiningo skaičiavimo įvestis. Užrašas patvirtina, ar laide yra ESP, ar į UDP įvyniotas ESP, ir tai išsprendžia NAT klausimą nespėliojant.
Vieną vertę atidėkite ir valdymo plokštumai. IKE rankos paspaudimo paketai turi kitokią struktūrą nei duomenų paketai, tad iš rankos paspaudimo užrašo išvestas dydis nėra duomenų plokštumos MTU.
Padėkite skaičių ten, kur jam vieta
TCP per tunelį atveju MSS apribojimas dažnai yra mažiausiai invazyvi kontrolė, nes jis sumažina tai, ką siunčia galiniai taškai, nekeisdamas paties tunelio. Maršrutu pagrįstam tuneliui sąmoningai nustatykite tunelio sąsajos MTU ir dokumentuokite kodėl. Darant abu iš karto ir po to matuojant, nesužinosite, kuris padėjo.
Laikykite kartu biliete suderintą režimą, išorinę šeimą, NAT būseną ir atkartojamą simptomą. Užrašytas keturių faktų rinkinys nugali įsimintą konstantą, ir tai vienintelė to versija, kuri išgyvena kitą kliento atnaujinimą.