WireGuard heeft geen MTU-onderhandeling. Het versleutelt wat de interface hem geeft en verstuurt het resultaat, en als het ingekapselde pakket het pad overschrijdt, wordt het ergens weggegooid of gefragmenteerd waar je het niet kunt zien. Iemand moet de MTU van de interface kiezen, en die iemand is het gereedschap dat de interface omhoog heeft gebracht.

Er zijn drie kandidaten, en ze zijn makkelijk te verwarren.

Drie plekken waar de waarde vandaan kan komen

De waarde kan expliciet in de interfaceconfiguratie worden gezet, door het instelprogramma uit route-informatie worden berekend, of worden gezet door welke netwerkbeheerder dan ook die de interface bezit. Een gewone wg-aanroep doet niets daarvan, omdat wg alleen sleutels en peers beheert. De MTU woont op de netwerkinterface, daarom is ip link show wg0 waar je hem leest.

Als je niet zeker weet welk geval geldt, lees dan eerst de MTU en zoek daarna uit wie de interface heeft gestart.

Beslis op basis van wie de interface draait

Als wg-quick hem start, wint een expliciete MTU-regel, anders berekent het een waarde. Als een netwerkbeheerder hem start, beslist het profiel van die beheerder. Als een containerruntime of een providerclient hem start, lees hun documentatie in plaats van wg-quick-gedrag aan te nemen.

De beslissing is niet welk getal abstract het beste is. Ze is welke component je daadwerkelijk kunt configureren.

Wat de standaardberekening doet

wg-quick zoekt de route naar het eindpunt van de peer, neemt de MTU van die uitgaande interface en trekt de inkapselingskosten eraf. Met een IPv4-buitenheader is dat ongeveer 60 bytes; met IPv6 ongeveer 80. Het resultaat wordt afgetopt, zodat een pad van 1500 bytes 1420 oplevert in plaats van een waarde die maar op één adresfamilie werkt. Dat is een redelijke standaard, geen meting van jouw pad.

Het kan niets weten van een latere tunnel, een mobiele verbinding of een gefilterd ICMP-pad.

De aftopping verbergt een echte vraag. Als je pad echt 9000 bytes van begin tot eind is, laat 1420 prestaties op tafel liggen, en als het pad 1400 is, is 1420 al te groot. De standaardwaarde is een compromis, en zo moet hij ook worden behandeld.

Wanneer het pad onder je verandert

Een laptop die van Ethernet naar Wi-Fi en dan naar een telefoonhotspot zwerft, houdt de interface-MTU waarmee hij begon. Het buitenpad is nu misschien kleiner, en niets onderhandelt opnieuw. Geneste tunnels maken het erger, omdat elke laag zijn eigen kosten uit hetzelfde budget haalt. De waarde die op kantoor werkte, is niet de waarde die op het vliegveld werkt.

Een recente handshake bewijst dat de sleutels werken. Het bewijst niets over of grote pakketten passen.

Test één getal tegelijk

Houd dezelfde toepassing en bestemming, verander één waarde en meet. ping -M do -s 1372 test een pakket van 1400 bytes met de DF-bit gezet, en dat is de vorm van test die je wilt. Als kleine verzoeken werken en grote blijven hangen, heb je een grootteprobleem en geen routingprobleem.

Verander alleen de MTU. Meerdere pakketopties tegelijk aanpassen zegt je niets over welke ertoe deed.

En verwacht niet dat een MTU-wijziging een ontbrekende terugroute, een doorstuurregel of een DNS-fout oplost. Die geven ook symptomen zonder verkeer, en ze hebben hun eigen tests. De wg-quick-handleiding documenteert de automatische selectie.

Gerelateerde artikelen