MTU, фрагментация и почему ваш WireGuard тормозит
Если туннель WireGuard подключается, но еле ползёт, останавливается на больших передачах или зависает на определённых сайтах — виноват обычно MTU. Объясняем, что такое MTU и фрагментация, почему туннели ломают размер пакетов и какое именно значение нужно изменить.
Что такое MTU и почему туннели его ломают
MTU (Maximum Transmission Unit) — это самый большой пакет в байтах, который канал связи пронесёт одним куском. Стандартный MTU для Ethernet — 1500. Если пакет слишком велик для канала, его либо фрагментируют на меньшие части, либо отбрасывают.
Туннель WireGuard заворачивает каждый ваш пакет в шифрованный UDP-пакет, и эта обёртка добавляет накладных байтов — примерно 60 для IPv4 и 80 для IPv6. Поэтому полноразмерный пакет на 1500 байт от вашего приложения после инкапсуляции в WireGuard становится больше 1500, и нижний канал уже не пронесёт его целиком. Именно поэтому WireGuard по умолчанию ставит MTU интерфейса 1420: этот запас уходит под накладные расходы шифрования, чтобы инкапсулированный пакет всё равно помещался в путь на 1500 байт.
Почему неправильный MTU тормозит связь
При нормальном ходе дел, когда пакет слишком велик, чтобы переслать его без фрагментации, маршрутизатор отправляет назад сообщение ICMP «Fragmentation Needed», и отправитель уменьшает размер пакета — это и есть Path MTU Discovery (PMTUD). Беда в том, что многие сети и файрволы молча отбрасывают эти ICMP-сообщения. Тогда вы получаете чёрную дыру PMTU: малые пакеты (вроде начала страницы) проходят, а большие исчезают без единой ошибки. Симптом ни с чем не спутать: соединение устанавливается, а потом зависает; SSH пускает, но замирает на выводе; одни сайты открываются, другие стоят; большие загрузки застревают на 0%.
Если на вашем пути MTU ниже ожидаемого — типично для DSL/PPPoE (он добавляет 8 байт), некоторых мобильных сетей и дважды инкапсулированных каналов, — то даже 1420 от WireGuard может быть многовато, и вы влетаете в ту же чёрную дыру. Лечится это снижением MTU туннеля, чтобы инкапсулированные пакеты помещались в реальный путь.
Найдите и выставьте правильный MTU
Прощупайте самый большой пакет, который проходит вашим путём без фрагментации, и выставьте MTU интерфейса WireGuard ниже него. Значения здесь примерные — меряйте свои.
# 1) Probe path MTU with don't-fragment pings (Linux/macOS). # Lower the size until it succeeds; that size + 28 = path MTU. ping -M do -s 1472 8.8.8.8 # 1472 + 28 (ICMP/IP headers) = 1500 ping -M do -s 1392 8.8.8.8 # if 1472 fails, try smaller (=> 1420) ping -M do -s 1252 8.8.8.8 # a safe fallback (=> 1280) # 2) Set the tunnel MTU in your WireGuard config, under [Interface]: # [Interface] # MTU = 1280 # widely-compatible fallback; try 1412/1420 first # 3) Apply and test a large transfer: wg-quick down wg0 && wg-quick up wg0 curl -o /dev/null https://speed.example/largefile # Rule of thumb: if small requests work but big ones hang, LOWER the MTU. # 1420 -> 1412 -> 1280 are common steps. 1280 is the IPv6 minimum and # almost always passes, at a small efficiency cost.
Ответы на вопросы
Какой MTU ставить для WireGuard?
Начните с дефолтных 1420. Если крупные передачи зависают, а мелкие запросы ходят, снижайте: типичные шаги — 1412, затем 1280. 1280 — это минимальный MTU для IPv6, он работает почти всегда, хоть и немного теряет в эффективности. Прощупайте путь пингами с флагом don't fragment, чтобы найти наибольшее значение, которое проходит.
Почему WireGuard подключается, а потом застревает на больших файлах?
Почти всегда это чёрная дыра PMTU. Ваши пакеты слишком велики для пути, а ICMP-сообщения, которые должны были бы об этом сказать, где-то отбрасываются, поэтому большие пакеты исчезают молча, а малые проходят. Снизьте MTU туннеля — пакеты начнут помещаться, и зависание уйдёт.
Почему в WireGuard MTU по умолчанию 1420, а не 1500?
Потому что WireGuard инкапсулирует каждый пакет в шифрованный UDP и добавляет около 60 байт накладных расходов (для IPv4). MTU интерфейса 1420 оставляет под них место, чтобы инкапсулированный пакет всё равно помещался в стандартный путь на 1500 байт без фрагментации.
Туннель, настроенный так, чтобы просто работать
s4m держит WireGuard и OpenVPN со здравыми настройками по умолчанию и архитектурой без логов, преимущественно в памяти. Если сети нужен более низкий MTU, вы правите одну строку — и всё. Анонимные аккаунты, принимаем крипту.
Эту страницу нашли по запросу
- MTU, фрагментация и почему ваш WireGuard тормозит
- как сконфигурировать wireguard
- wireguard объяснение
- wireguard
- прокси для парсинга объяснение
- ip адрес для новичков
- бесплатные прокси против платных
- socks5 прокси тарифы
- openvpn для android
- настройка прокси
- как скрыть свой IP-адрес
- как исправить 429 too many requests при скрапинге
- http прокси для бизнеса
- как работает openvpn
- аутентификация прокси
- настройка прокси список txt
- http прокси
Реальные поисковые фразы, на которые отвечает эта страница — по ссылкам откроются материалы, раскрывающие тему глубже.