MTU pagal maršrutą Linux: trys dydžio valdikliai, vienas maršrutas
Sąsajos MTU, maršruto MTU ir MSS riba veikia skirtinguose sluoksniuose. Pririškite biudžetą prie maršruto, kuris laimi paiešką, ir palikite pakeitimą grįžtamą.
Trys nustatymai Linux kliente skamba kaip „padaryk paketus mažesnius“, ir jie veikia skirtinguose sluoksniuose. Sąsajos MTU riboja kiekvieną įrenginio siunčiamą paketą. Maršruto MTU riboja paketus, naudojančius tą maršrutą, ir tai dažnai yra būtent tai, ko iš tikrųjų norite vienam VPN tikslui. TCP MSS riba keičia tai, dėl ko derasi du galai, ir UDP nieko nedaro.
Trys valdikliai, atrodantys kaip ta pati rankenėlė
Padėkite juos greta prieš rinkdamiesi, nes neteisingos eilutės pasirinkimas paaiškina daugumą patarimų, kurie neveikia:
| 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 |
Visos mašinos Ethernet MTU sumažinimas yra grubi šio taisymo versija. Tai veikia, bet baudžia ir kiekvieną kitą hosto programą, įskaitant tas, kurių keliai buvo tvarkingi. Reikšmė pagal maršrutą išreiškia tą patį ketinimą be šalutinių kaštų.
Palyginimas galioja tik srauto, kurį generuoja pats hostas, atžvilgiu. Kito kliento paketo persiuntimas apima jo paties kelią ir tunelio išorinį biudžetą, o šio hosto maršruto metrika neperžengia tos ribos.
Pririškite biudžetą prie maršruto, kuris laimi paiešką
Pavyzdinis IPv4 maršruto įrašas atrodo taip:
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
Skaitykite įrašą kaip ketinimo aprašymą, o ne kaip įklijuotiną reikšmę. Priešdėlis, įrenginys ir pageidaujamas šaltinis turi atitikti tikrąją konfigūraciją, ir skaičius turi kilti iš įrodymų apie inkapsuliuotą kelią, o ne iš tinklaraščio įrašo. Maršruto MTU riboja vidinį IP paketą, o tai nėra tas pats kaip 1380 baitų TCP naudingoji apkrova ar 1380 baitų užšifruotas išorinis paketas.
Prieš ką nors pridėdami pažiūrėkite, kur paieška iš tikrųjų išsprendžiama. Hostas su politikos taisyklėmis gali nukreipti tam tikrą tikslą per kitą lentelę nei main, o metrika, kuri egzistuoja tik main lentelėje, yra nematoma tai užklausai. Palyginkite ip -4 route show table all su atsakymu iš ip route get, įskaitant žymės ar vardų erdvės kontekstą, kai taisyklės juos naudoja. Jei du nesutampa, metrikos reikia lentelės, kuri atsakė, o ne tos, kuri atrodo tvarkingiau.
mtu nėra mtu lock
Pagal nutylėjimą branduolys vis dar gali atnaujinti kelio MTU iš ICMP grįžtamojo ryšio, tam ir skirta kelio MTU aptiktis. Pridėjus lock tai sustabdoma. Tai kitas sprendimas, ne stipresnis būdas išsaugoti tą patį skaičių, ir IPv4 atveju tai keičia dokumentuotą „nefragmentuoti“ bito apdorojimą.
Užrakinimas pagrįstas, kai išmatavote kelią ir norite, kad reikšmė liktų vietoje, kad ir kas ateitų. Tai bloga numatytoji reikšmė, kai tinklas siunčia teisėtą dydžio grįžtamąjį ryšį, nes branduolys nebegali prisitaikyti ir gedimas persikelia į kitą simptomą.
Jei ICMP filtruojamas kažkur kelyje, jokia maršruto nuostata to nesutaiso. Taisymas priklauso filtrui, o mažesnis MTU yra apeinamasis sprendimas, slepiantis tikrą gedimą iki kito kelio pakeitimo.
Tunelio programinė įranga prideda savo dydžio valdiklius
OpenVPN- mssfix reguliuoja TCP segmento dydį savo dokumentuotam UDP tunelio atvejui. Ji veikia TCP pokalbį, todėl tai ne kita operacinės sistemos maršruto MTU rašyba, ir ji negali padėti UDP paslaugai, kuri nepaiso derybų.
Nekraukite maršruto MTU, sąsajos MTU pakeitimo ir MSS ribos į vieną pakeitimų langą. Jei problema išnyks, nežinosite, kuri buvo svarbi, o likusios ribos srautą ilgus metus be priežasties, kurios kas nors atsimena.
Padarykite tai grįžtama, tada įrodykite
Tikrasis maršruto savininkas nusprendžia, ar pakeitimas išlieka po pakartotinio prisijungimo. VPN klientas, įdiegiantis maršrutą dinamiškai, paprastai jį atkurs be jūsų metrikos, o rankinis ip route add tada atrodo kaip taisymas, kuris žlugo po dienos. Įdėkite reikšmę į tvarkyklės konfigūraciją, o jei reikia laikino eksperimento, pirmiausia užsirašykite pradinį maršrutą.
Išbandykite nauju ryšiu, kuris atlieka įstrigusią operaciją, tada patvirtinkite, kad numatytas privatus maršrutas vis dar laimi ir nesusiję tikslai nepakito. Prijunkite tunelį iš naujo ir perskaitykite maršrutą, nes reikšmė, kuri dingsta prisijungus iš naujo, nėra taisymas.
Jei įrodymai nepagrindžia pakeitimo, pašalinkite perrašymą per jo tvarkyklę ir atkurkite pradinius maršruto atributus, o ne trinkite maršrutą. Tada užsirašykite, ką matavote ir kuriame kelyje, kad kitas žmogus atskirtų tikrą pagerėjimą nuo palikto veikti eksperimento.