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ú.

LayerWhat it addsWhen it applies
Outer IP header20 bytes for IPv4, 40 for IPv6Always, and 40 rather than 20 if the outer path is v6
ESP header8 bytes of SPI and sequence numberAlways
Block cipher IV8 to 16 bytes depending on the transformWhen the negotiated cipher uses one
Padding and trailerPadding to the block size, plus two trailer bytesAlways, and the amount varies with payload length
Integrity data12 to 16 bytes for common authenticated ciphersWhen integrity protection is negotiated
UDP encapsulation8 bytesNAT 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.

Súvisiace články