WireGuard har ingen MTU-förhandling. Det krypterar allt gränssnittet ger det och skickar resultatet, och om det inkapslade paketet överskrider vägen släpps det eller fragmenteras någonstans där du inte kan se det. Någon måste välja gränssnittets MTU, och den någon är verktyget som fick upp gränssnittet.

Det finns tre kandidater, och de är lätta att förväxla.

Tre ställen värdet kan komma från

Värdet kan sättas uttryckligen i gränssnittskonfigurationen, beräknas av installationsverktyget från ruttinformation, eller sättas av vilken nätverkshanterare som helst som äger gränssnittet. Ett vanligt wg-anrop gör inget av detta, eftersom wg bara hanterar nycklar och peers. MTU:n bor på nätverksgränssnittet, därför är ip link show wg0 där du läser den.

Om du är osäker på vilket fall som gäller, läs MTU:n först och ta sedan reda på vem som startade gränssnittet.

Avgör utifrån vem som kör gränssnittet

Om wg-quick startar det vinner en uttrycklig MTU-rad, annars beräknar det ett värde. Om en nätverkshanterare startar det avgör den hanterarens profil. Om en container-runtime eller en leverantörsklient startar det, läs deras dokumentation i stället för att anta wg-quick-beteende.

Beslutet är inte vilket tal som är bäst abstrakt. Det är vilken komponent du faktiskt kan konfigurera.

Vad standardberäkningen gör

wg-quick slår upp rutten till peerns ändpunkt, tar MTU:n för det utgående gränssnittet och drar av inkapslingskostnaden. Med ett IPv4-ytterhuvud är det ungefär 60 byte; med IPv6 ungefär 80. Resultatet begränsas så att en väg på 1500 byte ger 1420 i stället för ett värde som bara fungerar på en adressfamilj. Det är en rimlig standard, inte en mätning av din väg.

Den kan inte veta något om en senare tunnel, en mobil länk eller en filtrerad ICMP-väg.

Gränsen döljer en verklig fråga. Om din väg verkligen är 9000 byte från ände till ände lämnar 1420 prestanda på bordet, och om vägen är 1400 är 1420 redan för stor. Standardvärdet är en kompromiss, och det bör behandlas som en sådan.

När vägen ändras under dig

En bärbar dator som vandrar från Ethernet till Wi-Fi och vidare till en telefonhotspot behåller gränssnitts-MTU:n den startade med. Yttervägen kan nu vara mindre, och ingenting förhandlar om. Nästlade tunnlar gör det värre, eftersom varje lager drar av sin egen kostnad från samma budget. Värdet som fungerade på kontoret är inte värdet som fungerar på flygplatsen.

En nylig handskakning bevisar att nycklarna fungerar. Den bevisar ingenting om huruvida stora paket får plats.

Testa ett tal i taget

Behåll samma applikation och destination, ändra ett värde och mät. ping -M do -s 1372 testar ett paket på 1400 byte med DF-biten satt, och det är den typ av test du vill ha. Om små förfrågningar fungerar och stora fastnar har du ett storleksproblem och inte ett routingproblem.

Ändra bara MTU:n. Att justera flera paketalternativ samtidigt säger dig ingenting om vilket som spelade roll.

Och förvänta dig inte att en MTU-ändring åtgärdar en saknad returväg, en vidarebefordringsregel eller ett DNS-fel. De ger också symtom utan trafik, och de har sina egna tester. wg-quick-handboken dokumenterar det automatiska valet.

Relaterade artiklar