Skip to content
VDS · Sieť, IP adresa a domény

MTU 1420: prečo niektoré stránky zamrznú a ako to opraviť

Čo je MTU, odkiaľ sa berie 1420, ako vyzerá problém „stránka sa načítava do polovice“ a ako to overiť a opraviť.

Aktualizované 23. augusta 2026

MTU je maximálna veľkosť paketu, ktorú možno poslať po sieti bez fragmentácie. Zvyčajná hodnota na Ethernete je 1500 bajtov. Keď prevádzka prechádza tunelom, jeho vlastné hlavičky zaberajú časť priestoru a na užitočné dáta zostáva menej: typická hodnota je 1420.

Samotné to nie je problém. Problémy začínajú, keď jedna strana verí, že môže poslať 1500, ale na ceste je segment s 1420 a správa o tom sa stratí.

Ako vyzerá príznak

  • SSH sa pripojí, pozdrav dorazí, ale ls vo veľkom adresári zasekne reláciu.
  • Stránka sa začne načítavať a v polovici zamrzne.
  • curl -I (len hlavičky) funguje, ale plný curl sa zasekne.
  • apt update prebehne, apt upgrade sa zasekne pri sťahovaní.
  • Malé požiadavky letia, veľké odpovede nikdy nedorazia.

Spoločný znak je rovnaký: malé pakety prejdú, veľké zmiznú bez chyby. Spojenie sa nepreruší; len stíchne.

Dôvodom je, že mechanizmus vyjednávania veľkosti paketu sa spolieha na servisné správy ICMP. Ak ich niečo na ceste filtruje, odosielateľ sa nikdy nedozvie, že paket je príliš veľký, a posiela ho znova a znova.

Kontrola

Pošli paket s nastaveným bitom don't-fragment a zmenšuj veľkosť, kým neprejde:

ping -M do -s 1472 -c 2 1.1.1.1
ping -M do -s 1392 -c 2 1.1.1.1

K veľkosti -s sa pripočítava 28 bajtov hlavičiek: 1472 zodpovedá MTU 1500 a 1392 MTU 1420. Ak prvá možnosť zlyhá a druhá uspeje, našiel si limit.

Aktuálna hodnota rozhrania:

ip link show
ip route get 1.1.1.1

Ako to opraviť

Jednorazová kontrola:

ip link set dev eth0 mtu 1420

Natrvalo cez systemd-networkd — súbor /etc/systemd/network/10-eth0.network:

[Match]
Name=eth0

[Link]
MTUBytes=1420
systemctl restart systemd-networkd

Ak sieť spravuje NetworkManager:

nmcli connection modify "System eth0" 802-3-ethernet.mtu 1420
nmcli connection up "System eth0"

Druhá technika, užitočná, keď nemôžeš meniť MTU, je obmedziť veľkosť TCP segmentu na hranici. V nftables:

tcp flags syn tcp option maxseg size set rt mtu

Kedy sa to týka teba

Na samotnom stroji Millida VDS je sieť nakonfigurovaná správne a MTU zvyčajne nemusíš manuálne meniť. Musíš to riešiť, keď si sám nastavuješ tunel: WireGuard, OpenVPN, GRE, VPN do kancelárie alebo prepojenie medzi strojmi. V tuneli je MTU vždy menšie a musíš ho nastaviť explicitne.

Pre WireGuard v sekcii [Interface]:

MTU = 1420

Časté chyby

ChybaNásledok
Úplné zablokovanie ICMP vo firewallePokazíš si vyjednávanie veľkosti paketu
Nastavenie MTU len na jednej strane tunelaPrevádzka sa zasekne v jednom smere
Náhodná zmena MTUSkryješ skutočnú príčinu: stratu paketov alebo chybu služby

Nemeň MTU, kým nevyvoláš príznak príkazom ping -M do. Bez tejto kontroly meníš funkčnú konfiguráciu na základe dohadu — a namiesto starého problému dostaneš nový. Neblokuj ICMP úplne; pozri nftables.