Jeden notebook se zasekne při nahrávání tunelem, zatímco všechna ostatní zařízení na stejném serveru dál fungují. Tento vzorec ukazuje na jednu cestu, ne na konfiguraci serveru, a je to obvyklý vstup do otázky mssfix. Volba může pomoct, ale jen u TCP spojení, která skutečně přepisuje. Znalost jejího rozsahu vám zabrání měnit fungující server, abyste zachránili jednoho klienta.

Co volba přepisuje

mssfix upravuje maximální velikost segmentu oznámenou v TCP handshakech, které procházejí tunelem, takže odesílající strana volí segmenty, jež se vejdou do zapouzdřeného rozpočtu. Působí na handshake, což znamená, že spojení otevřené před změnou si ponechá vyjednanou hodnotu.

Nezmenšuje UDP datagramy a nenastavuje MTU tunelu. Dva různé problémy dávají stejný příznak: TCP odesílatel, který ignoruje limit cesty, a cesta, která tiše zahazuje velké pakety jakékoli velikosti. mssfix řeší první a pro druhý nedělá nic.

Tento rozdíl vysvětluje zklamání z pokusů. Nastavení menší hodnoty na cestě s černou dírou změní velikost segmentu, ale ne následné zahazování, takže přenos selže v jiném bodě.

Rozsah je TCP uvnitř tunelu

Přepisuje se jen TCP provoz. QUIC relace, hra nebo aplikace, která posílá velké UDP datagramy, si ponechá vlastní velikosti paketů, a pokud právě tyto přenosy zamrzají, oprava patří spíš na MTU tunelu nebo cesty. Přečtěte si, jaký protokol selhávající přenos používá, než sáhnete po volbě TCP, protože špatná vrstva má svou vlastní opravu.

Směr je také důležitý. Nastavení klienta ovlivňuje provoz, který tento klient posílá do tunelu, zatímco server pokrývá toky, které přeposílá směrem ke klientům. Pokud zamrzají jen příchozí stahování, hodnota na straně klienta není celý příběh.

Číslo a klíčové slovo nejsou přenosné

Komunitní verze OpenVPN 2.6 přijímá za hodnotou volitelné klíčové slovo. S mtu číslo popisuje velikost vnějšího paketu včetně IP a UDP hlaviček; bez něj argument sleduje jinou účetní konvenci. Řádek zkopírovaný mezi verzemi proto nepopisuje stejný rozpočet paketů. Podívejte se na stránku manuálu, která je součástí sestavení, jež skutečně spouštíte, místo návodu pro jiné vydání.

Syntaxe vypadá takto:

mssfix 1400 mtu

Berte 1400 jako zástupný údaj, ne jako doporučení pro vaši cestu. Hodnotu odvoďte z měřené cesty a skutečně používaného zapouzdření a pamatujte, že klienti na starších verzích nebo jiných implementacích mohou klíčové slovo odmítnout nebo přeinterpretovat.

Nejprve to potvrďte u jediného klienta

Změřte cestu ze selhávajícího stroje, než cokoli změníte. Užitečné zatížení, které cesta unese bez fragmentace, je číslo, které hledáte:

ping -M do -s 1472 10.8.0.1
ping -M do -s 1400 10.8.0.1

První sonda se vejde do paketu o 1500 bajtech, jakmile se přidá 28 bajtů hlaviček. Pokud selže s chybou fragmentace a menší uspěje, použitelná velikost je někde mezi nimi a režie tunelu se odečítá shora.

Potom zopakujte přenos, který zamrzl, na novém spojení a porovnejte. Pokud se jediný klient zlepší, zatímco ostatní zůstanou nedotčeni, našli jste rozsah problému. Pokud zamrzají všichni klienti, hodnota na straně serveru je ta, kterou je třeba přezkoumat. Ani jeden z výsledků neopravňuje změnu na hardwaru, který nikdy nebyl na selhávající cestě.

Související články