MTU per roete op Linux: drie groottebeheerders, een roete
Koppelvlak-MTU, roete-MTU en die MSS-beperking werk op verskillende vlakke. Koppel 'n begroting aan die roete wat die soektog wen, en hou die verandering omkeerbaar.
Drie instellings op 'n Linux-kliënt klink almal na „maak die pakkies kleiner“, en hulle werk op verskillende vlakke. Die koppelvlak-MTU beperk elke pakkie wat die toestel stuur. 'n Roete-MTU beperk pakkies wat daardie roete gebruik, wat dikwels is wat jy eintlik vir een VPN-bestemming wil hê. Die TCP MSS-beperking verander wat die twee eindpunte onderhandel, en dit doen niks vir UDP.
Drie beheerders wat soos dieselfde knop lyk
Sit hulle langs mekaar voordat jy kies, want die verkeerde ry kies verduidelik meeste van die advies wat nie werk nie:
| 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 |
Om die Ethernet-MTU vir die hele masjien te verlaag is die bot weergawe van hierdie oplossing. Dit werk, en dit benadeel ook elke ander toepassing op die gasheer, insluitend diegene wie se paaie fyn was. 'n Waarde per roete druk dieselfde bedoeling uit sonder die bykomende koste.
Die vergelyking geld net vir verkeer wat die gasheer genereer. Om 'n pakkie vir 'n ander kliënt aan te stuur behels daardie kliënt se eie pad en die tonnel se buitenste begroting, en 'n roetemaatstaf op hierdie gasheer reik nie oor daardie grens nie.
Heg die begroting aan die roete wat die soektog wen
'n Illustratiewe IPv4-roeterekord lyk so:
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
Lees die rekord as 'n beskrywing van bedoeling, nie 'n waarde om te plak nie. Die voorvoegsel, toestel en voorkeurbron moet by die werklike konfigurasie pas, en die nommer moet uit bewyse oor die ingekapselde pad kom, nie uit 'n blogpos nie. Die roete-MTU beperk die binneste IP-pakkie, wat nie dieselfde is as 'n TCP-lading van 1380 grepe of 'n geënkripteerde buitenste pakkie van 1380 grepe nie.
Kyk waar die soektog werklik oplos voordat jy iets byvoeg. 'n Gasheer met beleidsreëls kan 'n gegewe bestemming deur 'n ander tabel as main stuur, en 'n maatstaf wat net in main bestaan, is onsigbaar vir daardie versoek. Vergelyk ip -4 route show table all met die antwoord van ip route get, insluitend die merk- of naamruimtekonteks wanneer die reëls dit gebruik. As die twee verskil, is die tabel wat geantwoord het die een wat die maatstaf nodig het, nie die een wat netjieser lyk nie.
mtu is nie mtu lock nie
Standaard kan die kern steeds die pad-MTU uit ICMP-terugvoer bywerk, dit is waarvoor pad-MTU-ontdekking is. Om lock by te voeg, stop dit. Dit is 'n ander besluit, nie 'n sterker manier om dieselfde nommer te spaar nie, en vir IPv4 verander dit die gedokumenteerde hantering van die don't-fragment-bietjie.
Slot is redelik wanneer jy die pad gemeet het en wil hê die waarde moet bly staan ongeag wat aankom. Dit is 'n swak verstek wanneer die netwerk wettige grootte-terugvoer stuur, want die kern kan nie meer aanpas nie en die faling skuif na 'n ander simptoom.
As ICMP êrens langs die pad gefiltreer word, herstel geen roete-instelling dit nie. Die regstelling hoort by die filter, en 'n kleiner MTU is 'n tydelike oplossing wat die werklike fout wegsteek tot die volgende pad verander.
Tonnelprogrammatuur voeg sy eie grootteskyfies by
OpenVPN se mssfix pas TCP-segmentgroottes aan vir sy gedokumenteerde UDP-tonnelgeval. Dit werk op die TCP-gesprek, so dit is nie 'n ander spelling van die bedryfstelsel se roete-MTU nie, en dit kan nie 'n UDP-diens help wat die onderhandeling ignoreer nie.
Moenie 'n roete-MTU, 'n koppelvlak-MTU-verandering en 'n MSS-beperking in een veranderingsvenster stapel nie. As die probleem verdwyn, sal jy nie weet watter een saak gemaak het nie, en die een wat jy hou sal verkeer vir jare beperk sonder 'n rede wat iemand onthou.
Maak dit omkeerbaar, bewys dit dan
Die roete se werklike eienaar besluit of die verandering 'n herverbinding oorleef. 'n VPN-kliënt wat die roete dinamies installeer, sal dit gewoonlik herbou sonder jou maatstaf, en 'n handmatige ip route add lyk dan soos 'n oplossing wat 'n dag later gefaal het. Sit die waarde in die bestuurder se konfigurasie, en as jy 'n tydelike eksperiment nodig het, teken eers die oorspronklike roete aan.
Toets met 'n nuwe verbinding wat die bewerking uitvoer wat vasgehaak het, en bevestig dan dat die bedoelde private roete steeds wen en onverwante bestemmings onveranderd is. Herverbind die tonnel en lees die roete weer, want 'n waarde wat by herverbinding verdwyn is nie 'n oplossing nie.
As die bewyse die verandering nie ondersteun nie, verwyder die oorheersing deur sy bestuurder en herstel die oorspronklike roete-attribute eerder as om die roete te skrap. Skryf dan neer wat jy gemeet het, op watter pad, sodat die volgende persoon 'n werklike verbetering kan onderskei van 'n eksperiment wat aan die gang gelaat is.