WireGuard няма договаряне на MTU. Той криптира каквото интерфейсът му подаде и изпраща резултата, а ако капсулираният пакет надхвърли пътя, той се изхвърля или фрагментира някъде, където не можете да го видите. Някой трябва да избере MTU на интерфейса и този някой е инструментът, който е вдигнал интерфейса.

Има три кандидата и лесно се объркват.

Три места, откъдето може да дойде стойността

Стойността може да се зададе изрично в конфигурацията на интерфейса, да се изчисли от инструмента за настройка по информация за маршрута или да се зададе от който и да е мрежов мениджър, който притежава интерфейса. Обикновеното извикване на wg не прави никое от тези неща, защото wg управлява само ключове и партньори. MTU живее на мрежовия интерфейс и затова ip link show wg0 е мястото, където го четете.

Ако не сте сигурни кой случай важи, прочетете първо MTU, после разберете кой е стартирал интерфейса.

Решавайте според това кой управлява интерфейса

Ако го стартира wg-quick, печели изричен ред MTU, а иначе той изчислява стойност. Ако го стартира мрежов мениджър, решава профилът на този мениджър. Ако го стартира контейнерна среда или клиент на доставчик, четете тяхната документация, вместо да предполагате поведението на wg-quick.

Решението не е кое число е най-добро в абстрактен смисъл. А кои компонент можете действително да конфигурирате.

Какво прави изчислението по подразбиране

wg-quick търси маршрута до крайната точка на партньора, взема MTU на този изходящ интерфейс и изважда разходите за капсулиране. При външен заглавен блок IPv4 това е около 60 байта; при IPv6 е около 80. Резултатът се ограничава, така че път от 1500 байта дава 1420, а не стойност, която работи само за едно семейство адреси. Това е разумна стойност по подразбиране, а не измерване на вашия път.

Той не може да знае за по-късен тунел, мобилна връзка или филтриран ICMP път.

Ограничението скрива истински въпрос. Ако пътят ви наистина е 9000 байта от край до край, 1420 оставя производителност на масата, а ако пътят е 1400, 1420 вече е твърде голям. Стойността по подразбиране е компромис и трябва да се третира като такъв.

Когато пътят се промени под вас

Лаптоп, който се мести от Ethernet към Wi-Fi и към мобилна точка за достъп, запазва MTU на интерфейса, с който е започнал. Външният път може вече да е по-малък и нищо не преговаря отново. Вложените тунели влошават нещата, защото всеки слой изважда собствените си разходи от същия бюджет. Стойността, която работеше в офиса, не е стойността, която работи на летището.

Скорошно ръкостискане доказва, че ключовете работят. То не доказва нищо за това дали големите пакети се побират.

Тествайте по едно число наведнъж

Запазете същото приложение и дестинация, променете една стойност и измервайте. ping -M do -s 1372 тества пакет от 1400 байта с установен бит DF и това е формата на теста, който искате. Ако малките заявки работят, а големите забавят, имате проблем с размера, а не с маршрутизацията.

Променете само MTU. Настройването на няколко опции за пакети наведнъж не ви казва коя е имала значение.

И не очаквайте промяна на MTU да поправи липсващ обратен маршрут, правило за препращане или повреда на DNS. Те също дават симптоми на липса на трафик и имат своите тестове. Ръководството на wg-quick документира автоматичния избор.

Подобни статии