Réžia IPsec: režim, NAT-T a algoritmy ju menia
Jedno zverejnené číslo réžie opisuje jedno zapuzdrenie na jednej trase. Sčítajte hlavičky, o ktorých váš tunel naozaj vyjednáva, a potom trasu zmerajte.
Niekde v návode je číslo, zvyčajne medzi šesťdesiatimi a osemdesiatimi bajtmi, ktoré niekto odpočítal od 1500, aby dostal MTU rozhrania. To číslo opisuje jedno konkrétne zapuzdrenie na jednej konkrétnej trase. Zmeňte režim, vonkajšiu rodinu adries, šifru alebo prítomnosť NAT a aritmetika už pre váš tunel neplatí.
Číslo prišlo z iného tunela
Réžia nie je vlastnosť IPsec v abstrakte. Je to vlastnosť paketu, ktorý sa skutočne zostaví: vyjednaný režim, vonkajšia hlavička, ochranná hlavička, výplň, pole integrity a možno ešte obal UDP.
Číslo uvádzané pre transportný režim s IPv4 a bez NAT opisuje menší paket než tunelový režim s IPv6 pod priechodom NAT. Obe sú správne pre svoj prípad. Kopírovanie ktorejkoľvek z nich do iného nasadenia je spôsob, akým ľudia skončia s MTU, ktoré láme veľké prenosy. Zlyhanie je tiché, pretože malé požiadavky fungujú ďalej.
Sčítajte vrstvy, ktoré tam skutočne sú
Začnite pri vonkajšej hlavičke IP a choďte dovnútra. V tunelovom režime je pôvodný paket vnútri, takže vonkajšia hlavička je pridanie, nie náhrada. RFC 4303 opisuje hlavičku ESP, výplň a údaje integrity, ktoré za ňou nasledujú.
| 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 |
Žiadny z tých riadkov nie je konštantný medzi nasadeniami a riadok s výplňou nie je konštantný ani v rámci jedného nasadenia. To je celý dôvod, prečo jedno zverejnené číslo réžie sklame.
Dve lokality sa môžu nezhodnúť na tom istom tuneli
Chránený paket stále musí prejsť vonkajšou trasou a vonkajšia trasa nie je všade rovnaká. Prístupová linka PPPoE unesie menej ako čistý segment Ethernet. Mobilná sieť sa môže ďalej zmenšiť a poskytovateľ, ktorý tuneluje vlastnú prevádzku, pridá ďalšie zapuzdrenie, o ktorom nikto nehovoril. Tunel, ktorý na jednej linke funguje a na inej zlyháva, opisuje druhú linku, nie protokol.
Oba smery sa tiež môžu líšiť. Asymetrická trasa vám môže dať funkčný upload a zaseknutý download, čo vyzerá ako problém aplikácie, kým sa nepozriete na veľkosti paketov namiesto dostupnosti. Úspešný malý ping dokazuje o odpovedi plnej veľkosti veľmi málo.
Merajte namiesto odpočítavania
Nájdite najväčší datagram, ktorý trasou prejde. Potom ho porovnajte s hodnotou, ktorú hlási rozhranie:
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'
Znižujte veľkosť pingu, kým nezačnú prichádzať odpovede, a najväčšiu funkčnú hodnotu berte ako rozpočet pre danú trasu. Výstup xfrm vám povie, ktorý režim a ktoré algoritmy boli vyjednané, a to je vstup pre každý poctivý výpočet. Zachytenie potvrdí, či je na linke ESP alebo ESP obalené v UDP, a to vyrieši otázku NAT bez hádania.
Vyhraďte jednu hodnotu aj pre riadiacu rovinu. Pakety IKE handshake majú inú štruktúru ako dátové pakety, takže veľkosť odvodená zo zachytenia handshake nie je MTU dátovej roviny.
Dajte číslo tam, kam patrí
Pre TCP tunelom je obmedzenie MSS často najmenej invazívna kontrola, pretože znižuje to, čo posielajú koncové body, bez zmeny samotného tunela. Pri tuneli založenom na trasách nastavte MTU tunelového rozhrania zámerne a zdokumentujte prečo. Urobiť oboje naraz a potom merať vám nedá žiadnu informáciu o tom, čo pomohlo.
Držte v tikete pohromade vyjednaný režim, vonkajšiu rodinu, stav NAT a reprodukovateľný príznak. Zaznamenaná sada štyroch faktov porazí zapamätanú konštantu a je to jediná verzia tohto, ktorá prežije ďalší upgrade klienta.