WireGuard nie ma żadnej negocjacji MTU. Szyfruje wszystko, co przekaże mu interfejs, i wysyła wynik, a jeśli zapakowany pakiet przekroczy ścieżkę, zostaje gdzieś odrzucony lub podzielony, gdzie tego nie widać. Ktoś musi wybrać MTU interfejsu, a tym kimś jest narzędzie, które podniosło interfejs.

Są trzej kandydaci i łatwo ich pomylić.

Trzy miejsca, z których może pochodzić wartość

Wartość można ustawić wprost w konfiguracji interfejsu, może ją obliczyć narzędzie konfiguracyjne z informacji o trasie, albo ustawi ją dowolny menedżer sieci, który posiada interfejs. Zwykłe wywołanie wg nie robi nic z tego, bo wg zarządza tylko kluczami i peerami. MTU żyje na interfejsie sieciowym, dlatego ip link show wg0 to miejsce, w którym ją czytasz.

Jeśli nie masz pewności, który przypadek zachodzi, najpierw odczytaj MTU, a potem ustal, kto uruchomił interfejs.

Zdecyduj według tego, kto obsługuje interfejs

Jeśli uruchamia go wg-quick, wygrywa jawna linia MTU, a w przeciwnym razie oblicza wartość. Jeśli uruchamia go menedżer sieci, decyduje profil tego menedżera. Jeśli uruchamia go środowisko uruchomieniowe kontenerów lub klient dostawcy, przeczytaj ich dokumentację, zamiast zakładać zachowanie wg-quick.

Decyzja nie dotyczy tego, która liczba jest najlepsza w abstrakcji. Dotyczy tego, który komponent możesz faktycznie skonfigurować.

Co robi obliczenie domyślne

wg-quick wyszukuje trasę do punktu końcowego peera, bierze MTU tego interfejsu wyjściowego i odejmuje narzut enkapsulacji. Z zewnętrznym nagłówkiem IPv4 to około 60 bajtów, z IPv6 około 80. Wynik jest ograniczany, żeby ścieżka 1500 bajtów dawała 1420, a nie wartość działającą tylko w jednej rodzinie adresów. To rozsądna wartość domyślna, nie pomiar twojej ścieżki.

Nie może wiedzieć o późniejszym tunelu, łączu mobilnym ani filtrowanej ścieżce ICMP.

Ograniczenie ukrywa prawdziwe pytanie. Jeśli twoja ścieżka naprawdę ma 9000 bajtów od końca do końca, 1420 zostawia wydajność na stole, a jeśli ścieżka ma 1400, 1420 jest już za duże. Wartość domyślna jest kompromisem i tak należy ją traktować.

Gdy ścieżka zmienia się pod tobą

Laptop, który przenosi się z Ethernetu na Wi-Fi, a potem na hotspot telefonu, zachowuje MTU interfejsu, z którym wystartował. Zewnętrzna ścieżka może być teraz mniejsza i nic nie negocjuje od nowa. Zagnieżdżone tunele pogarszają sprawę, bo każda warstwa odejmuje własny narzut z tego samego budżetu. Wartość, która działała w biurze, nie jest wartością, która działa na lotnisku.

Niedawny handshake dowodzi, że klucze działają. Nie dowodzi niczego o tym, czy mieszczą się duże pakiety.

Testuj jedną liczbę naraz

Zachowaj tę samą aplikację i cel, zmień jedną wartość i zmierz. ping -M do -s 1372 testuje pakiet 1400 bajtów z ustawionym bitem DF i to jest kształt testu, którego chcesz. Jeśli małe żądania działają, a duże się zatrzymują, masz problem z rozmiarem, nie z routingiem.

Zmieniaj tylko MTU. Strojenie kilku opcji pakietu naraz nie mówi, która miała znaczenie.

I nie oczekuj, że zmiana MTU naprawi brakującą trasę powrotną, regułę przekazywania albo awarię DNS. One też dają objawy braku ruchu i mają własne testy. Podręcznik wg-quick dokumentuje automatyczny wybór.

Powiązane artykuły