Тры налады на кліенце Linux гучаць як «зрабіць пакеты меншымі», і яны працуюць на розных узроўнях. MTU інтэрфейса абмяжоўвае кожны пакет, які адпраўляе прылада. MTU маршруту абмяжоўвае пакеты, што выкарыстоўваюць гэты маршрут, і гэта часта тое, што вам сапраўды патрэбна для адной VPN-мэты. Абмежаванне TCP MSS змяняе тое, пра што дамаўляюцца два канцы, і нічога не робіць для UDP.

Тры кантролі, якія выглядаюць як адна ручка

Пастаўце іх побач перад выбарам, бо няправільны радок тлумачыць большую частку парад, якія не працуюць:

ControlScopeWhat it cannot fix
Interface MTUEvery packet the device sendsNothing, but it over-constrains unrelated traffic
Route MTUPackets using that routeA send that the lookup never routes there
MSS clampTCP handshake on that pathUDP payload sizes and ICMP

Зніжэнне MTU Ethernet для ўсёй машыны — гэта грубая версія гэтага выпраўлення. Яно працуе, але таксама карае кожную іншую праграму на хосце, уключаючы тыя, чые шляхі былі ў парадку. Значэнне на маршрут выяўляе тую ж думку без спадарожных выдаткаў.

Параўнанне слушнае толькі для трафіку, які стварае хост. Перадача пакета іншаму кліенту ўключае ўласны шлях гэтага кліента і знешні бюджэт тунелю, а метрыка маршруту на гэтым хосце не дасягае праз гэтую мяжу.

Прывяжыце бюджэт да маршруту, які перамагае пры пошуку

Прыкладны запіс маршруту 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

Па змаўчанні ядро ўсё яшчэ можа абнаўляць MTU шляху з зваротнай сувязі ICMP, дзеля гэтага і існуе выяўленне MTU шляху. Даданне lock спыняе гэта. Гэта іншае рашэнне, а не мацнейшы спосаб захаваць той жа лік, і для IPv4 яно змяняе дакументаваную апрацоўку біта «не фрагментаваць».

Блакіроўка разумная, калі вы вымералі шлях і хочаце, каб значэнне заставалася нязменным незалежна ад таго, што прыходзіць. Гэта дрэннае значэнне па змаўчанні, калі сетка дасылае слушную зваротную сувязь пра памер, бо ядро ўжо не можа адаптавацца і збой пераходзіць у іншы сімптом.

Калі ICMP фільтруецца дзесьці на шляху, ніякая налада маршруту гэтага не выправіць. Выпраўленне належыць фільтру, а меншы MTU — гэта абыход, які хавае сапраўдную няспраўнасць да наступнай змены шляху.

Праграмы тунеляў дадаюць уласныя ручкі памеру

OpenVPN- mssfix рэгулюе памер TCP-сегментаў для свайго дакументаванага выпадку UDP-тунелю. Ён працуе з TCP-размовай, таму гэта не іншае напісанне MTU маршруту аперацыйнай сістэмы, і ён не можа дапамагчы службе UDP, якая ігноруе дамоўленасць.

Не стаўце MTU маршруту, змену MTU інтэрфейса і абмежаванне MSS у адно акно змен. Калі праблема знікне, вы не даведаецеся, што менавіта мела значэнне, а тое, што вы пакінеце, будзе абмяжоўваць трафік гадамі без прычыны, якую хтосьці памятае.

Зрабіце гэта зваротным, потым давядзіце

Сапраўдны ўладальнік маршруту вырашае, ці перажыве змена перападключэнне. VPN-кліент, які ўсталёўвае маршрут дынамічна, звычайна перабудуе яго без вашай метрыкі, і ручная ip route add тады выглядае як выпраўленне, якое правалілася праз дзень. Запішыце значэнне ў канфігурацыю мэнэджара, і калі патрэбны часовы эксперымент, спачатку запішыце зыходны маршрут.

Праверце новым злучэннем, якое выконвае аперацыю, што захрасла, потым пацвердзіце, што патрэбны прыватны маршрут па-ранейшаму перамагае, а староннія мэты не змяніліся. Перападключыце тунель і зноў прачытайце маршрут, бо значэнне, якое знікае пры перападключэнні, не з'яўляецца выпраўленнем.

Калі доказы не падтрымліваюць змену, выдаліце перавызначэнне праз яго мэнэджар і аднавіце зыходныя атрыбуты маршруту, а не выдаляйце маршрут. Затым запішыце, што вы вымералі і на якім шляху, каб наступны чалавек мог адрозніць сапраўднае паляпшэнне ад эксперыменту, які пакінулі працаваць.

Падобныя артыкулы