MTU na trase v Linuxu: tři ovládání velikosti, jedna trasa
MTU rozhraní, MTU trasy a omezení MSS působí v různých vrstvách. Připněte rozpočet trase, která vyhraje vyhledání, a změnu udržte vratnou.
Tři nastavení na klientu Linux znějí jako „udělej pakety menší“ a působí v různých vrstvách. MTU rozhraní omezuje každý paket, který zařízení odešle. MTU trasy omezuje pakety, které tuto trasu používají, což je často přesně to, co pro jednu destinaci VPN skutečně chcete. Omezení TCP MSS mění to, na čem se oba konce dohodnou, a pro UDP nedělá nic.
Tři ovládání, která vypadají jako stejné kolečko
Položte je vedle sebe, než vyberete, protože špatná řádka vysvětluje většinu rad, které nefungují:
| Control | Scope | What it cannot fix |
|---|---|---|
| Interface MTU | Every packet the device sends | Nothing, but it over-constrains unrelated traffic |
| Route MTU | Packets using that route | A send that the lookup never routes there |
| MSS clamp | TCP handshake on that path | UDP payload sizes and ICMP |
Snížení MTU Ethernetu pro celý stroj je hrubá verze tohoto řešení. Funguje, a také trestá každou další aplikaci na hostiteli, včetně těch, jejichž cesty byly v pořádku. Hodnota na trase vyjadřuje stejný záměr bez vedlejších nákladů.
Srovnání platí jen pro provoz, který hostitel generuje. Předávání paketu jinému klientovi zahrnuje jeho vlastní cestu a vnější rozpočet tunelu a metrika trasy na tomto hostiteli za tuto hranici nedosáhne.
Připněte rozpočet trase, která vyhraje vyhledání
Ilustrativní záznam trasy IPv4 vypadá takto:
ip -4 route get 10.60.0.20
ip -4 route add 10.60.0.0/16 dev tun-office src 10.90.0.2 mtu 1380
Čtěte záznam jako popis záměru, ne jako hodnotu k vložení. Prefix, zařízení a preferovaný zdroj musí odpovídat skutečné konfiguraci a číslo musí pocházet z důkazů o zapouzdřené cestě, ne z blogového příspěvku. MTU trasy omezuje vnitřní IP paket, což není totéž jako TCP užitečné zatížení 1380 bajtů nebo šifrovaný vnější paket 1380 bajtů.
Než něco přidáte, podívejte se, kde se vyhledání skutečně vyřeší. Hostitel s pravidly zásad může danou destinaci směrovat jinou tabulkou než main, a metrika, která existuje jen v main , je pro tento požadavek neviditelná. Porovnejte ip -4 route show table all s odpovědí z ip route get, včetně kontextu značky nebo jmenného prostoru, když je pravidla používají. Pokud se oba neshodují, tabulka, která odpověděla, je ta, která metriku potřebuje, ne ta, která vypadá uklizeněji.
mtu není mtu lock
Ve výchozím nastavení jádro stále může aktualizovat MTU cesty ze zpětné vazby ICMP, k čemuž slouží zjišťování MTU cesty. Přidání lock to zastaví. Je to jiné rozhodnutí, ne silnější způsob, jak zachovat stejné číslo, a pro IPv4 mění dokumentované zacházení s bitem „nefragmentovat“.
Uzamčení je rozumné, když jste cestu změřili a chcete, aby hodnota zůstala pevná bez ohledu na to, co dorazí. Je to špatné výchozí nastavení, když síť posílá legitimní zpětnou vazbu o velikosti, protože jádro už nemůže upravovat a porucha se přesune do jiného příznaku.
Pokud se ICMP někde na cestě filtruje, žádné nastavení trasy to nespraví. Oprava patří filtru a menší MTU je obchvat, který skrývá skutečnou závadu do další změny cesty.
Software tunelů přidává vlastní ovládání velikosti
OpenVPN- mssfix upravuje velikost segmentů TCP pro svůj dokumentovaný případ tunelu UDP. Působí na TCP konverzaci, takže to není jiný zápis MTU trasy operačního systému a nemůže pomoci službě UDP, která vyjednávání ignoruje.
Neskládejte MTU trasy, změnu MTU rozhraní a omezení MSS do jednoho okna změn. Pokud problém zmizí, nebudete vědět, které mělo význam, a to, co ponecháte, bude omezovat provoz léta bez důvodu, který si někdo pamatuje.
Udělejte to vratné, pak to dokažte
Skutečný vlastník trasy rozhoduje, zda změna přežije opětovné připojení. Klient VPN, který trasu instaluje dynamicky, ji obvykle znovu sestaví bez vaší metriky, a ruční ip route add pak vypadá jako oprava, která selhala o den později. Vložte hodnotu do konfigurace správce a pokud potřebujete dočasný experiment, nejprve zaznamenejte původní trasu.
Otestujte novým připojením, které provede operaci, jež se zasekla, a potom potvrďte, že zamýšlená privátní trasa stále vítězí a nesouvisející destinace se nezměnily. Znovu připojte tunel a přečtěte trasu, protože hodnota, která při opětovném připojení zmizí, není oprava.
Pokud důkazy změnu nepodporují, odeberte přepsání přes jeho správce a obnovte původní atributy trasy, místo abyste trasu mazali. Pak si poznamenejte, co jste měřili a na které cestě, aby další člověk rozeznal skutečné zlepšení od experimentu, který zůstal běžet.