MTU по секоја рута на Linux: три контроли на големина, една рута
MTU на интерфејсот, MTU на рутата и ограничувањето MSS дејствуваат на различни слоеви. Прикачете буџет на рутата што победува во пребарувањето и задржете ја промената вратлива.
Три поставки на Linux клиент сите звучат како „направи ги пакетите помали“ и работат на различни слоеви. MTU на интерфејсот ограничува секој пакет што уредот го испраќа. MTU на рута ограничува пакети што ја користат таа рута, а тоа често е она што навистина го сакате за една VPN дестинација. Ограничувањето TCP MSS го менува тоа за што се договараат двата краја и не прави ништо за UDP.
Три контроли што изгледаат како исто копче
Ставете ги една до друга пред да изберете, бидејќи изборот на погрешниот ред го објаснува најголемиот дел од советите што не работат:
| 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 |
Намалувањето на Ethernet MTU за целата машина е грубата верзија на оваа поправка. Работи, но исто така казнува секоја друга апликација на домаќинот, вклучително и оние чии патеки беа во ред. Вредност по рута го изразува истото намери без споредниот трошок.
Споредбата важи само за сообраќајот што домаќинот сам го создава. Препраќањето пакет за друг клиент вклучува негова сопствена патека и надворешниот буџет на тунелот, а метриката на рутата на овој домаќин не преминува преку таа граница.
Прикачете го буџетот на рутата што победува во пребарувањето
Илустративен запис за рута IPv4 изгледа вака:
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
Читајте го записот како опис на намера, а не како вредност за лепење. Префиксот, уредот и претпочитаниот извор мора да одговараат на вистинската конфигурација, и бројот мора да дојде од докази за инкапсулираната патека, а не од блог објава. MTU на рутата го ограничува внатрешниот IP пакет, што не е исто како TCP товар од 1380 бајти или шифриран надворешен пакет од 1380 бајти.
Погледнете каде пребарувањето навистина се решава пред да додадете нешто. Домаќин со правила за политика може да насочи дадена дестинација низ друга табела освен main, а метриката што постои само во main е невидлива за тоа барање. Споредете ip -4 route show table all со одговорот од ip route get, вклучувајќи го контекстот на ознаката или именскиот простор кога правилата ги користат. Ако двете не се совпаѓаат, табелата што одговори е таа на која ѝ треба метриката, а не онаа што изгледа поуредна.
mtu не е mtu lock
Стандардно јадрото сѐ уште може да го ажурира MTU на патеката од ICMP повратна информација, за што служи откривањето на MTU на патеката. Додавањето на lock тоа го запира. Тоа е друга одлука, не посилен начин да се зачува истиот број, и за IPv4 ја менува документираната постапка со битот „не фрагментирај“.
Заклучувањето е разумно кога сте ја измериле патеката и сакате вредноста да остане фиксна без оглед на тоа што доаѓа. Лоша стандардна поставка е кога мрежата испраќа легитимна повратна информација за големината, бидејќи јадрото веќе не може да се прилагоди и дефектот се преместува во друг симптом.
Ако ICMP се филтрира некаде по патеката, ниту една поставка на рутата тоа не го поправа. Поправката и припаѓа на филтерот, а помал MTU е заобиколно решение што ја сокрива вистинската грешка до следната промена на патеката.
Софтверот за тунели додава свои контроли за големина
OpenVPN- mssfix го прилагодува размерот на TCP сегментот за документираниот случај на UDP тунел. Дејствува на TCP разговорот, затоа не е друг правопис на MTU на рутата на оперативниот систем и не може да помогне на UDP услуга што го игнорира договарањето.
Не натрупувајте MTU на рута, промена на MTU на интерфејс и ограничување MSS во еден прозорец за промени. Ако проблемот исчезне, нема да знаете која била важна, а задржаните ќе го ограничуваат сообраќајот со години без причина што некој ја памети.
Направете го вратливо, потоа докажете го
Вистинскиот сопственик на рутата одлучува дали промената преживува повторно поврзување. VPN клиент што рутата ја поставува динамички обично ќе ја изгради повторно без вашата метрика, а рачната ip route add тогаш изгледа како поправка што пропаднала еден ден подоцна. Ставете ја вредноста во конфигурацијата на менаџерот и ако ви треба времен експеримент, прво запишете ја оригиналната рута.
Тестирајте со нова врска што ја извршува операцијата што заглавена, потоа потврдете дека предвидената приватна рута сѐ уште победува и неврзаните дестинации не се сменети. Повторно поврзете го тунелот и прочитајте ја рутата, бидејќи вредност што исчезнува при повторно поврзување не е поправка.
Ако доказите не ја поддржуваат промената, отстранете го препишувањето преку неговиот менаџер и вратете ги оригиналните атрибути на рутата наместо да ја избришете рутата. Потоа запишете што измеривте и на која патека, за да може следниот човек да разликува вистинско подобрување од експеримент оставен да работи.