MTU по рути у Linux-у: три контроле величине, једна рута
MTU интерфејса, MTU руте и MSS ограничење делују на различитим слојевима. Прикачите буџет рути која побеђује у претрази и задржите измену повратном.
Три поставке на Linux клијенту све звуче као „направи пакете мањим“, а делују на различитим слојевима. MTU интерфејса ограничава сваки пакет који уређај пошаље. MTU руте ограничава пакете који користе ту руту, а то је често управо оно што заиста желите за једно VPN одредиште. 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 тада изгледа као поправка која је пропала дан касније. Ставите вредност у конфигурацију менаџера и ако вам треба привремени експеримент, прво запишите оригиналну руту.
Тестирајте новом везом која извршава операцију која се заглављивала, па потврдите да предвиђена приватна рута још побеђује и да неповезане одредишта нису измењена. Поново повежите тунел и прочитајте руту, јер вредност која нестане при поновном повезивању није поправка.
Ако докази не подржавају измену, уклоните надјачавање преко његовог менаџера и вратите оригиналне атрибуте руте уместо да је обришете. Затим запишите шта сте измерили и на којој путањи, да би следећа особа разликовала стварно побољшање од експеримента који је остављен да ради.