MTU pre trasu v Linuxe: tri regulátory veľkosti, jedna trasa
MTU rozhrania, MTU trasy a obmedzenie MSS pôsobia v rôznych vrstvách. Pripevnite rozpočet k trase, ktorá vyhrá vyhľadávanie, a zmenu udržte vratnou.
Tri nastavenia na klientovi Linux znejú ako „urob pakety menšie“ a pôsobia v rôznych vrstvách. MTU rozhrania obmedzuje každý paket, ktorý zariadenie odošle. MTU trasy obmedzuje pakety, ktoré túto trasu používajú, a to je často presne to, čo pre jednu destináciu VPN naozaj chcete. Obmedzenie TCP MSS mení to, na čom sa oba konce dohodnú, a pre UDP nič nerobí.
Tri regulátory, ktoré vyzerajú ako to isté koliesko
Položte ich vedľa seba pred výberom, pretože nesprávny riadok vysvetľuje väčšinu rád, ktoré 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 |
Zníženie MTU Ethernetu pre celý stroj je hrubá verzia tohto riešenia. Funguje, a tiež trestá každú ďalšiu aplikáciu na hostiteľovi, vrátane tých, ktorých cesty boli v poriadku. Hodnota na trasu vyjadruje rovnaký zámer bez vedľajších nákladov.
Porovnanie platí len pre prevádzku, ktorú hostiteľ sám generuje. Preposielanie paketu pre iného klienta zahŕňa jeho vlastnú cestu a vonkajší rozpočet tunela, a metrika trasy na tomto hostiteľovi neprekročí túto hranicu.
Pripevnite rozpočet k trase, ktorá vyhrá vyhľadávanie
Ilustratívny záznam trasy IPv4 vyzerá 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
Čítajte záznam ako opis zámeru, nie ako hodnotu na vloženie. Prefix, zariadenie a preferovaný zdroj musia zodpovedať skutočnej konfigurácii a číslo musí pochádzať z dôkazov o zapuzdrenej ceste, nie z blogového príspevku. MTU trasy obmedzuje vnútorný IP paket, čo nie je to isté ako TCP užitočné zaťaženie 1380 bajtov alebo šifrovaný vonkajší paket 1380 bajtov.
Pred pridaním čohokoľvek sa pozrite, kde sa vyhľadávanie skutočne vyrieši. Hostiteľ s pravidlami politiky môže danú destináciu smerovať inou tabuľkou ako main, a metrika, ktorá existuje len v main , je pre túto požiadavku neviditeľná. Porovnajte ip -4 route show table all s odpoveďou z ip route get, vrátane kontextu značky alebo menného priestoru, keď ich pravidlá používajú. Ak sa obe nezhodujú, tabuľka, ktorá odpovedala, je tá, ktorá potrebuje metriku, nie tá, ktorá vyzerá upravenejšie.
mtu nie je mtu lock
Predvolene jadro stále môže aktualizovať MTU cesty zo spätnej väzby ICMP, na to slúži zisťovanie MTU cesty. Pridanie lock to zastaví. Je to iné rozhodnutie, nie silnejší spôsob, ako zachovať rovnaké číslo, a pre IPv4 mení dokumentované zaobchádzanie s bitom „nefragmentuj“.
Uzamknutie je rozumné, keď ste cestu zmerali a chcete, aby hodnota zostala pevná bez ohľadu na to, čo príde. Je to zlé predvolené nastavenie, keď sieť posiela legitímnu spätnú väzbu o veľkosti, pretože jadro už nemôže upravovať a porucha sa presunie do iného príznaku.
Ak sa ICMP niekde na ceste filtruje, žiadne nastavenie trasy to neopraví. Oprava patrí filtru a menšie MTU je obchádzka, ktorá skrýva skutočnú poruchu do ďalšej zmeny cesty.
Softvér tunela pridáva vlastné regulátory veľkosti
OpenVPN- mssfix upravuje veľkosť segmentu TCP pre svoj dokumentovaný prípad tunela UDP. Pôsobí na TCP konverzáciu, takže to nie je iný zápis MTU trasy operačného systému a nemôže pomôcť službe UDP, ktorá ignoruje vyjednávanie.
Neklaďte MTU trasy, zmenu MTU rozhrania a obmedzenie MSS do jedného okna zmien. Ak problém zmizne, nebudete vedieť, ktoré malo význam, a to, čo ponecháte, bude obmedzovať prevádzku roky bez dôvodu, ktorý si niekto pamätá.
Urobte to vratné, potom to dokážte
Skutočný vlastník trasy rozhoduje, či zmena prežije opätovné pripojenie. Klient VPN, ktorý trasu inštaluje dynamicky, ju zvyčajne znovu zostaví bez vašej metriky, a ručné ip route add potom vyzerá ako oprava, ktorá zlyhala o deň neskôr. Vložte hodnotu do konfigurácie správcu a ak potrebujete dočasný experiment, najprv zaznamenajte pôvodnú trasu.
Otestujte novým pripojením, ktoré vykoná operáciu, ktorá sa zasekla, a potom potvrďte, že zamýšľaná privátna trasa stále vyhráva a nesúvisiace destinácie sa nezmenili. Znova pripojte tunel a prečítajte trasu, pretože hodnota, ktorá pri opätovnom pripojení zmizne, nie je oprava.
Ak dôkazy zmenu nepodporujú, odstráňte prepísanie cez jeho správcu a obnovte pôvodné atribúty trasy namiesto vymazania trasy. Potom si poznačte, čo ste merali a na ktorej ceste, aby ďalší človek rozlíšil skutočné zlepšenie od experimentu, ktorý zostal bežať.