Gdzieś w poradniku jest liczba, zwykle między sześćdziesięcioma a osiemdziesięcioma bajtami, którą ktoś odjął od 1500, aby uzyskać MTU interfejsu. Ta liczba opisuje jedną konkretną enkapsulację na jednej konkretnej ścieżce. Zmień tryb, zewnętrzną rodzinę adresów, szyfr albo obecność NAT, a arytmetyka przestaje dotyczyć twojego tunelu.

Ta liczba pochodzi z innego tunelu

Narzut nie jest właściwością IPsec w ujęciu abstrakcyjnym. To właściwość pakietu, który naprawdę powstaje: wynegocjowany tryb, zewnętrzny nagłówek, nagłówek ochrony, dopełnienie, pole integralności i być może dodatkowa otoczka UDP.

Liczba podawana dla trybu transportowego z IPv4 i bez NAT opisuje mniejszy pakiet niż tryb tunelowy z IPv6 pod przejściem NAT. Obie są poprawne dla swojego przypadku. Skopiowanie którejkolwiek z nich do innego wdrożenia to sposób, w jaki ludzie kończą z MTU, które łamie duże transfery. Awaria jest cicha, bo małe zapytania nadal działają.

Zsumuj warstwy, które naprawdę są

Zacznij od zewnętrznego nagłówka IP i idź do środka. W trybie tunelowym oryginalny pakiet jest w środku, więc zewnętrzny nagłówek jest dodatkiem, a nie zamiennikiem. RFC 4303 opisuje nagłówek ESP, dopełnienie i dane integralności, które po nim następują.

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

Żaden z tych wierszy nie jest stały między wdrożeniami, a wiersz dopełnienia nie jest stały nawet w obrębie jednego wdrożenia. To cały powód, dla którego jedna opublikowana liczba narzutu rozczarowuje.

Dwie lokalizacje mogą się nie zgodzić co do tego samego tunelu

Chroniony pakiet nadal musi przejść zewnętrzną ścieżkę, a zewnętrzna ścieżka nie jest wszędzie taka sama. Łącze dostępowe PPPoE niesie mniej niż czysty segment Ethernet. Sieć komórkowa może się jeszcze bardziej skurczyć, a dostawca, który tuneluje własny ruch, dodaje kolejną enkapsulację, o której nikt nie wspomniał. Tunel, który działa na jednym łączu, a zawodzi na innym, opisuje drugie łącze, a nie protokół.

Oba kierunki też mogą się różnić. Asymetryczna trasa może dać działające wysyłanie i zablokowane pobieranie, co wygląda na problem aplikacji, dopóki nie spojrzysz na rozmiary pakietów, a nie na osiągalność. Udany mały ping dowodzi bardzo niewiele o odpowiedzi w pełnym rozmiarze.

Mierz zamiast odejmować

Znajdź największy datagram, który przetrwa ścieżkę. Następnie porównaj go z wartością, którą raportuje interfejs:

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'

Zmniejszaj rozmiar pingu, aż zaczną przychodzić odpowiedzi, i przyjmij największą działającą wartość jako budżet tej ścieżki. Wyjście xfrm mówi, który tryb i które algorytmy wynegocjowano, i to jest wejście do każdego uczciwego obliczenia. Przechwycenie potwierdza, czy w przewodzie jest ESP, czy ESP opakowany w UDP, i to rozstrzyga kwestię NAT bez zgadywania.

Zarezerwuj też jedną wartość dla płaszczyzny sterowania. Pakiety uzgadniania IKE mają inną strukturę niż pakiety danych, więc rozmiar wyprowadzony z przechwycenia uzgadniania nie jest MTU płaszczyzny danych.

Umieść liczbę tam, gdzie jej miejsce

Dla TCP przez tunel ograniczenie MSS jest często najmniej inwazyjną kontrolą, bo zmniejsza to, co wysyłają końce, nie zmieniając samego tunelu. Dla tunelu opartego na trasach ustaw MTU interfejsu tunelu świadomie i udokumentuj dlaczego. Zrobienie obu naraz i potem zmierzenie nie daje żadnej informacji, które pomogło.

Trzymaj razem w zgłoszeniu wynegocjowany tryb, zewnętrzną rodzinę, stan NAT i powtarzalny objaw. Zapisany zestaw czterech faktów bije zapamiętaną stałą i to jedyna wersja tego, która przetrwa następną aktualizację klienta.

Powiązane artykuły