Linux'то ар бир маршрут боюнча MTU: үч өлчөм көзөмөлү, бир маршрут
Интерфейс 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 пакетти чектейт, бул 1380 байттык TCP жүгү же 1380 байттык шифрленген сырткы пакет дегенди билдирбейт.
Бир нерсе коштон мурун издөөнүн чындап кайда чечилерин кара. Саясат эрежелери бар хост берилген багытты main эмес, башка таблица аркылуу багыттай алат, жана бир гана main таблицасында бар метрика ошол суроо үчүн көрүнбөйт. Салыштыр ip -4 route show table all жана ip route get жообун, эрежелер колдонгондо белги же ат мейкиндигинин контексти менен. Эгер экөө дал келбесе, метрика керек болгон таблица — жооп бергени, тазараак көрүнгөнү эмес.
mtu — mtu lock эмес
Демейде ядро ICMP кайтарымынан жол MTU'сун жаңырта алат, жол MTU'сун ачуу ушул үчүн. Кошуу lock муну токтотот. Бул башка чечим, ошол эле санды сактоонун күчтүүрөөк жолу эмес, жана IPv4 үчүн «бөлүштүрбө» битинин документтелген иштетүүсүн өзгөртөт.
Жолду өлчөп, эмне келсе да маани туруктуу болушун кааласаң, кулпулоо орундуу. Тармак мыйзамдуу өлчөм кайтарымын жибергенде бул начар демейки, анткени ядро эми ылайыктоо албайт жана бузулуу башка белгиге өтөт.
Эгер ICMP жолдун бир жеринде чыпкаланса, эч бир маршрут жөндөөсү аны оңдобойт. Оңдоо чыпкага таандык, ал эми кичирээк MTU — кийинки жол өзгөрүүсүнө чейин чыныгы бузулууну жашырган убактылуу чара.
Туннель программасы өзүнүн өлчөм баскычтарын кошот
OpenVPN- mssfix өзүнүн документтелген UDP туннель учуру үчүн TCP сегментинин өлчөмүн жөндөйт. Ал TCP сүйлөшүүсүндө иштейт, ошондуктан операциялык системанын маршрут MTU'сунун башка жазылышы эмес, жана сүйлөшүүнү этибарга албаган UDP кызматына жардам бере албайт.
Маршрут MTU'сун, интерфейс MTU өзгөрүүсүн жана MSS чегин бир өзгөртүү терезесине үймө. Эгер маселе жоголсо, кайсынысы маанилүү болгонун билбейсиң, ал эми калтыргандарың жылдар бою трафикти чектейт, себебин эч ким эстебейт.
Аны кайтарыла турган кыл, анан далилде
Маршруттун чыныгы ээси өзгөртүү кайра туташуудан кийин калабы же жокпу — ошону чечет. Маршрутту динамикалык орноткон VPN кардары аны адатта сенин метрикаңсыз кайра курат, ал эми кол менен ip route add кийин бир күндөн соң ишке ашпаган оңдоо сыяктуу көрүнөт. Маанини менеджердин конфигурациясына кой, ал эми убактылуу эксперимент керек болсо, адегенде баштапкы маршрутту жазып ал.
Тыгырылып калган операцияны аткарган жаңы туташуу менен сына, анан көздөлгөн жеке маршрут дагы деле жеңерин жана байланышы жок багыттар өзгөрбөгөнүн ыраста. Туннелди кайра туташтырып, маршрутту кайра оку, анткени кайра туташууда жоголгон маани оңдоо эмес.
Эгер далилдер өзгөртүүнү колдобосо, кайра жазууну анын менеджери аркылуу алып салып, маршрутту жок кылуунун ордуна баштапкы маршрут атрибуттарын калыбына келтир. Анан эмнени, кайсы жолдо өлчөгөнүңдү жаз, кийинки адам чыныгы жакшыртууну иштеп жаткан эксперименттен ажырата алышы үчүн.