1 (edytowany przez jakubd 2026-07-19 15:03:53)

Temat: MTU, PMTUD i DPLPMTUD w OpenWRT - problemy

Trafiłem na taki wydawałoby nieskomplikowany problem.
Chcę korzystać sobie normalnie z Wireguarda. Nic specjalnego, póki w równaniu nie pojawił się OpenWRT.

Konfig 1:
Maszyna docelowa: Mikrotik konfiguracja domyślna wireguarda, schowany za FunBoxem 3 połączonym światłowodem. Standardowy port forwaring z FB3 do Mikrotika.
Klient: Windows z domyślnym klientem Wireguard. Dla ustalenia uwagi plik konfiguracyjny:

[Interface]
PrivateKey = *********
ListenPort = 51821
Address = 10.10.11.103/32
DNS = 8.8.8.8

[Peer]
PublicKey = *********
AllowedIPs = 0.0.0.0/0
Endpoint = *******.ddns.net:51821

Po stronie mikrotika konfiguracja jest "podobnie" złożona. Absolutny default.

Internet klientowi zapewnia telefon komórkowy z udostępnianiem z aktywnym routerem wifi. Operartor Orange.

Efekt - wszystko działa bez pudła.

Konfig 2:
Maszyna docelowa - jak wyżej.
Klient też.

ALE:
Internet zapewnia Xunison D50 z openwrt z "sąsiedniego wątku". Karta SIM ta sama.

efekt:
O ile nie wymuszę dyrektywą MTU odpowiednio niskiej wartości (na szybko: coś koło 1000-1100) - pojawiają się utraty pakietów i połączenie nie nadaje się do użytku. z MTU wszystko działa.

WNIOSEK:
OpenWRT ma jakiś problem z właściwą obsługą PMTUD a raczej DPLPMTUD.

Co próbowałem:
1. Włączać i wyłączać MSS clamping - wyłączenie pogarsza sprawę (domyślnie jest włączone)
2. Dodać do firewalla zgodę na ICMP forward z WAN do LAN - nic nie zmienia (bo nie powinno chyba, bo PMTUD jest chyba bardziej dla TCP?)
3. Włączyć net.ipv4.tcp_mtu_probing - nie pomogło (bo to dla TCP znowu?) - domyślnie było 0
4. Włączać net.ipv4.ip_forward_use_pmtu (domyślnie 0 z powodu security jak sądzę)

Na razie żadna zmiana poza wpisaniem na szytwno MTU nie pomogło.

Spostrzeżenia dla utworzenia tła problemu:
1. Domyślne MTU w wielu miejscach OpenWRT widzę, że jest 1280 (minimum dozwolone dla IPv6).
2. To także domyślne MTU w wireguard jak nie zostało wykryte inne.
3. Xunison D50 w komunikacji z modemem używa interfejsu rmnet_mhi0.1 z MTU 1252.
4. Zrobiłem podobne próby jeszcze z połączeniem przez PlusGSM po modemie komórkowym i routerze Dell z obsługą modemów GSM (modele sprawdzę w razie czego) - też działa bez problemu.

Ktoś ma pomysł co jeszcze sprawdzić, ustawić i zmienić, żeby OpenWRT zachowywał się (może nawet nieco mniej bezpiecznie) "przyzwoicie" w kwestii MTU?

EDIT:
Wyjaśnienie dotyczące tematu:
MTU - wszyscy wiedzą, Maximum Transfer Unit = maksymalny rozmiar pakietu, jaki przepuszczamy przez router/interfejs
MSS-Clamp - aktywne wywalanie pakietów, które przekraczają MTU
PMTUD - Path MTU Discovery - rozwiązanie oparte na odpowiedziach ICMP typu "fragmentation needed" wysyłanych zwrotnie do klienta, gdy jego pakiety są za duże dla następnego routera, a jednocześnie "jakiś debil" ustawił flagę DF (Do not Fragment) w tym pakiecie zabraniającą podzielenia pakietu na mniejsze kawałki.
DPLPMTUD - coś jak wyżej, tylko dla UDP (Datagram Packetization Layer Path MTU Discovery) zdefiniowane w RFC 9869. Taki automat, który robi sobie wykrywanie, jaki jest największy MTU na trasie.

2

Odp: MTU, PMTUD i DPLPMTUD w OpenWRT - problemy

Ja miałem podobne problemy u siebie, ale raczej rzadkie. Problemem jest to, że mam pppoe i to "zjada" 20 bajtów czyli zostaje 1480. Z kolei wireguard "zjada" 80 bajtów więc zostaje 1400 a bez podania jawnie wartości MTU ustawia się na 1420
Po korekcji na 1400 po każdej stronie tunelu wszystko śmiga bez problemu. Co prawda nawet bez tego 99,9% działało dobrze mimo że po obu stronach MTU było o 20 bajtów za wysokie.

3

Odp: MTU, PMTUD i DPLPMTUD w OpenWRT - problemy

Dokładnie, stare dobre problemy. Z tym, że "na wszystkim innym" poza OpenWRT działa autonegocjacja MTU dla UDP dzisiaj (a ten dlink z modemem to sprzęt sprzed pandemii jeszcze). Więc pytanie jakiego ustawienia brakuje, żeby to się samo wynegocjowało, kosztem nawet bezpieczeństwa.
Właśnie mi aktywowali konto na forum.openwrt to tam wrzucę pytanie i zobaczymy. To musi być coś w miarę prostego.

4

Odp: MTU, PMTUD i DPLPMTUD w OpenWRT - problemy

Dopiszę to do wątku z dodawaniem wsparcia Xunisona
Ale znalazłem wprost w logu działanie MSS-Clamp:

kern.info: [262046.977693] mhi_netdev 0306_01.01.00_IP_HW0 rmnet_mhi0: drop skb_len=530 larger than qmap mtu=1252

Wygląda na to, że coś trzeba dodać w ustawieniach być może firewalla, żeby automatycznie rozpoznany MTU 1252 na interfejsie modemu przechodził dalej.