Handleiding

Websites blijven hangen

Kleine dingen werken, grote niet. Dat is geen storing, dat is pakketgrootte.

Je kunt pingen, je e-mail komt binnen, de meeste sites openen gewoon. Maar één site blijft hangen op een wit scherm, een download stokt na een paar honderd kilobyte, en een bestand naar de zaak kopiëren komt nooit af. Zet je het op mobiele data, dan werkt het wel.

Dit is bijna altijd MTU. Kleine pakketten passen overal door, grote niet, en het pakket dat niet past verdwijnt zonder foutmelding. Je ziet dus geen storing maar een halve pagina. Het is geen DNS (namen worden immers wel gevonden) en geen firewall die iets blokkeert (de verbinding komt immers tot stand).

De snelle controles, in deze volgorde

  1. Meet hoe groot een pakket mag zijn. /ping 1.1.1.1 size=1472 do-not-fragment. Goed antwoord: gewone antwoorden. Krijg je niets terug, verlaag dan naar size=1464 en daarna size=1452. Werkt 1452 wel en 1472 niet, dan zit je op een pad van 1492: PPPoE dus.
  2. Wat staat er op de uplink? /interface print detail en zoek de MTU van je WAN-interface of van pppoe-out1. Goed antwoord: 1500 op gewoon Ethernet, 1492 op PPPoE.
  3. Wordt de MSS aangepast? /ip firewall mangle print stats. Goed antwoord: een regel met action=change-mss, new-mss=clamp-to-pmtu en de opmerking clamp MSS on WAN, met een teller die oploopt. Staat de regel er niet, dan is dat je fix.
  4. Wordt ICMP tegengehouden? /ip firewall filter print stats. Goed antwoord: geen drop-regel met een oplopende teller op ICMP. Zonder ICMP kan geen enkel apparaat de juiste pakketgrootte vinden.
  5. Kloppen de poorten onderling? /interface ethernet print detail laat mtu en l2mtu per poort zien. Goed antwoord: overal hetzelfde getal binnen één netwerk.

De gewone oorzaken

  • PPPoE zonder MSS-clamping. De meest voorkomende. PPPoE haalt acht bytes van je pakket af, en een server die denkt dat hij 1500 mag sturen, stuurt te groot. Zet TCP MSS aanpassen aan in het onderdeel WAN.
  • Een tunnel ertussen. WireGuard, GRE, EoIP en VXLAN kosten allemaal ruimte. Hetzelfde verschijnsel, andere plek. Zie MTU en jumbo frames.
  • ICMP volledig geblokkeerd. Iemand heeft ooit "ping uitzetten" gelezen als "ICMP droppen". Path-MTU-detectie werkt op ICMP-meldingen, dus dan raad je netwerk voor altijd verkeerd. In het onderdeel Firewall blokkeert Ping vanaf WAN blokkeren alleen echo-requests, en dat is met opzet.
  • Jumbo frames half ingevoerd. Eén apparaat op 9000 en de rest op 1500 geeft precies dit beeld binnen je eigen netwerk: kleine dingen werken, een bestandskopie hangt.
  • Een handmatige MTU op de WAN. Elke waarde onder 1500 op de uplink vraagt om dezelfde clamping als PPPoE.

Wat de configurator hiervan weet

Het veld TCP MSS aanpassen op PPPoE/tunnels verschijnt in het onderdeel WAN zodra je uplink PPPoE is of een MTU onder 1500 heeft, en staat dan standaard aan. Zet je het uit terwijl het nodig is, dan waarschuwt de tool met zoveel woorden dat sommige websites zullen blijven hangen tijdens het laden. Staat het aan, dan krijg je één mangle-regel in het script, op de forward-chain, alleen op SYN-pakketten richting WAN.

Vul je bij PPPoE zelf een MTU boven 1492 in, dan zegt de tool dat dat alleen werkt als je provider RFC 4638 ondersteunt, en verhoogt het script de MTU van de poort en de VLAN erachter mee. Zet je de MTU van de bridge hoger dan die van de poorten, dan is dat ook een waarschuwing: de bridge geeft dan pakketten door die de poorten weggooien.

Werk je met meerdere apparaten en heb je kabels getekend, dan vergelijkt de tool de MTU aan beide kanten van elke kabel en per groep apparaten die aan elkaar hangen. Dat vangt de half ingevoerde jumbo frames voordat je ze plakt. Zie MTU en jumbo frames voor wat er precies gemeten wordt.

Wat de tool niet kan: meten wat het pad naar buiten werkelijk aankan. Dat hangt van je provider af en verandert soms zonder aankondiging. Het commando met do-not-fragment hierboven is het enige echte antwoord.

Als het niet aan je router ligt

  • De provider levert een kleiner pad dan gemeld. Sommige aansluitingen komen niet verder dan 1492 of 1480, ook zonder PPPoE. Meet het, en vul dan de gemeten waarde als MTU op de uplink in.
  • Een modem dat zelf nog routeert. Dubbele NAT maakt het pad niet kleiner, maar een modem met eigen PPPoE erachter wel. Zie Twee routers achter elkaar.
  • De andere kant van je VPN. Als alleen verkeer door de tunnel hangt, meet dan hetzelfde binnen de tunnel en niet op internet.

Verder lezen: MTU en jumbo frames, WAN en internet en VPN verbindt maar er gaat niets doorheen.

Meteen proberen? Open de configurator