VPN теряет скорость и рвется: диагностика протоколов, MTU, DPI и настроек клиента
VPN теряет до 40% канала из-за накладных расходов протокола и обхода DPI, а частые обрывы чаще всего виноваты не блокировки, а неверный MTU, перегруженная нода или агрессивное энергосбережение телефона. Смени протокол на маскируемый, выстави MSS Clamping и включи IPv6 — это устраняет 80% проблем за пару минут.
Почему YouTube крутит крутилку в кафе у метро: быстрая диагностика за 60 секунд
Сцена знакомая: бесплатный Wi‑Fi в «Шоколаднице», вы жмёте «Подключить» в клиенте — и вместо видео бесконечный буферинг. Первое действие — не гуглить «что с впн» и не качать первый попавшийся «топовый впн», а запустить чек-лист. Откройте браузер без VPN: если сайты не грузятся вообще — вина на роутере кафе или провайдере. Если грузятся — включайте VPN и смотрите на симптомы.
Есть три типовые картины сбоя. Первая: туннель не поднимается вовсе (крутится спиннер «Подключение…»). Виновник — заблокированный порт или протокол, который DPI видит сразу. Вторая: подключилось, спидтест показывает 100 Мбит/с, но Telegram не загружает стикеры, а сайты висят на «SSL handshake». Классика MTU/MSS Clamping. Третья: скорость нормальная, но каждые 2–5 минут связь пропадает на 10–15 секунд. Это либо перегруженный сервер, либо Kill Switch, либо агрессивная экономия батареи на телефоне.
| Симптом | Скорее всего виновник | Первое действие |
|---|---|---|
| Не коннектится вообще | Порт/протокол заблокирован DPI | Сменить протокол на VLESS+Reality или Hysteria2 |
| Спидтест летает, сайты не открываются | MTU > реального PMTU пути | Понизить MTU в клиенте до 1280–1350 |
| Рвется каждые 3–5 мин | Kill Switch / Battery Saver / перегруз CPU сервера | Отключить «Блокировать без VPN», проверить нагрузку сервера |
| Пинг 200+ мс, скорость 5 Мбит | Сервер далеко / перегружен / плохой пиринг | Сменить локацию на ближнюю (Финляндия, Казахстан, Турция) |
Если после смены протокола и MTU ничего не изменилось — идем глубже: проверяем серверную сторону, настройки ОС и провайдера.
Физика потерь: почему VPN съедает 10–40% канала и как это посчитать
Любой туннель — это оверхед. Вы платите за доставку полезной нагрузки плюс заголовки инкапсуляции. WireGuard добавляет ~3,2% (UDP заголовок 8 байт + WG 32 байта). OpenVPN на UDP — 15–20% из-за TLS-обёртки. OpenVPN на TCP — катастрофа 40%+: TCP-over-TCP вызывает «meltdown» при потере пакетов, пересылает уже доставленные сегменты. VLESS+Reality и Shadowsocks (Outline) — ближе к 1–2%, они маскируются под обычный TCP/UDP трафик. Hysteria2 на QUIC — чемпион на потерях >5%, потому что QUIC не ждёт подтверждения всего окна, а ретранслирует только пропавшее.
Следующий враг — RTT и BDP (Bandwidth-Delay Product). Москва–Амстердам ~60 мс. При 100 Мбит/с окно TCP должно быть >750 КБ. Дефолт Linux — 64 КБ. Результат: канал забит не по полной, скорость упирается в окно приёма. Лечится на сервере: sysctl -w net.ipv4.tcp_rmem='4096 87380 6291456', net.core.rmem_max=2500000 и обязательно net.ipv4.tcp_congestion_control=bbr. BBR не ждёт потерь, а измеряет пропускную способность и RTT — прирост 20–30% на длинных путях даёт бесплатно.
CPU сервера — скрытый тормоз. Дешёвый VPS на 1 vCPU шифрует WireGuard на 300–400 Мбит/с, OpenVPN — на 80–100 Мбит/с. Если у вас тариф 500 Мбит/с, а сервер загружен на 90% — вы получите 100 Мбит/с максимум. Проверяйте htop на ноде или просите саппорт показать загрузку ноды в час пик.
Протоколы против российского DPI 2024–2025: что работает, что детектится, что маскируется
«Голый» WireGuard (UDP 51820) в РФ мёртв с весны 2024: DPI ТСПУ видит сигнатуру первого пакета (байт 0x01 + фиксированная длина) и режет по JA3/JA4 фингерпринту TLS Client Hello. OpenVPN — тоже виден по паттерну handshake. Решение — обфускация или имитация легального трафика.
- AmneziaWG — патч WireGuard: рандомизирует заголовок, меняет порт, добавляет junk-байты. Выглядит как мусорный UDP. Работает стабильно, если не abusить порт 443 (DPI смотрит в первый пакет, а не в порт).
- VLESS + Reality — золотой стандарт сейчас. TLS handshake имитирует реальный веб‑сервер (nginx, Cloudflare, AWS). Ключ — параметр
serverNames: укажите домен из топа Alexa (cloudflare.com, microsoft.com), который реально хостится на том же IP. Без правильного SNI Reality детектится за минуту. - Hysteria2 (QUIC/HTTP/3) — лучший выбор на плохом канале (мобильный интернет, поезд, домик в деревне). QUIC не боится потерь, DPI пока слабо парсит HTTP/3. Минус — выше CPU на сервере.
- Shadowsocks 2022 / Outline — AEAD-шифрование, выглядит как случайный TCP. Outline — удобная обёртка для нетехнарей. Скорость чуть ниже Reality, но проще в развёртывании.
Не верьте маркетингу «speedtop впн» или «впн speed top» — протокол решает 70% успеха. Если сервис предлагает только OpenVPN и «голый» WireGuard — уходите, в РФ это не работает стабильно.
MTU / MSS Clamping: почему спидтест 100 Мбит, а сайты не грузятся и Telegram тормозит
Классическая ловушка: вы радуетесь 100 Мбит/с на speedtest.net, но curl -v https://google.com висит на SSL handshake, а Telegram не качает медиа. Причина — фрагментация. Ethernet MTU 1500. WireGuard инкапсулирует в IPv4: 1500 – 20 (IP) – 8 (UDP) – 32 (WG) = 1440. Если где-то на пути (PPPoE провайдера, GRE-туннель, IPv6-in-IPv4) MTU ниже — пакеты с DF-битом (Don't Fragment) просто дропаются. TCP не получает ACK, ретранит, соединение зависает.
Диагноз за 10 секунд: ping -f -l 1472 8.8.8.8 (Windows) или ping -M do -s 1472 8.8.8.8 (Linux/macOS). Не проходит? Уменьшайте на 10 байт, пока не пройдёт. Полученное значение + 28 (IP+ICMP) — ваш PMTU. Для WireGuard ставьте MTU 1420 (IPv4) или 1380 (IPv6). В клиентах (Amnezia, v2rayN, NekoBox) есть поле MTU — пропишите 1280–1350 с запасом.
На роутере (Keenetik, MikroTik, OpenWrt) обязательно включите MSS Clamping: /ip firewall mangle add action=change-mss chain=forward new-mss=clamp-to-pmtu passthrough=yes protocol=tcp tcp-flags=syn. Это режет MSS в SYN-пакетах до безопасного значения — сайты перестанут висеть на handshake. Если вы поднимаете свой VPS — настройте MTU на интерфейсе туннеля и на внешнем интерфейсе одинаково.
Серверная сторона: как выбрать локацию и проверить нагрузку не по маркетингу
Маркетинг пишет «100+ локаций», на деле вы получаете VPS в подсети Selectel, Timeweb, Aeza или VDSina. Эти подсети в приоритете блокировок Роскомнадзора — IP живут от недели до месяца. Проверьте ASN сервера: whois -h whois.radb.net или сайт bgp.he.net. Чистый ASN — это мелкий локальный LIR в Европе (Hetzner, Netcup — но они тоже в блоклистах), лучше — EU Game Hosting или облака AWS/GCP/Azure (дорого, но IP «белые»).
Пинг до 1.1.1.1 или 8.8.8.8 с сервера должен быть <10 мс до ближайшего IX. Запустите iperf3 -c speed.cloudflare.com — если сервер не выдаёт 900+ Мбит/с на 10G порту — канал перегружен или порты режет хостер. Геолокация IP: если вы в Москве, а IP показывает Франкфурт — ок. Если показывает «Москва, Дата-центр Selectel» — это фейк-локация, трафик идёт по РФ и вас деанонимизирует провайдер.
Не ленитесь тестировать последовательно: без VPN → с VPN на сервере А → с VPN на сервере Б. Используйте speed.cloudflare.com (кэш на Edge), fast.com (Netflix CDN, провайдеры не шейпят), speed.yandex.ru (локальный пиринг). Если на fast.com 80 Мбит/с, а на speedtest.net 300 — провайдер шейпит спидтест-серверы. Ищите сервер, где разница минимальна.
Клиентская сторона: настройки ОС, которые убивают стабильность быстрее DPI
Android 10+ и iOS 14+ держат только один активный VPN-интерфейс (tun0). Если у вас остался старый профиль от «зог впн» или «тройвел впн расширение» с галочкой «Всегда включено» — новый не поднимется. Зайдите в Настройки → Сеть → VPN → удалите всё лишнее, оставьте только текущий профиль.
Battery Optimization — вторая причина «VPN отваливается в фоне». Android: Настройки → Приложения → Ваш VPN → Батарея → Неограниченно. iOS: Настройки → Основные → Обновление контента → Вкл для VPN-клиента. Windows: «Параметры питания» → «Высокая производительность», иначе USB-WiFi адаптеры усыпляет контроллер.
Kill Switch / Always-on VPN / «Блокировать соединения без VPN» — полезная защита, но если туннель рвется — интернета нет вообще. Пользователь думает «VPN сломан», а на самом деле сработала защита утечки. Проверяйте: отключите Kill Switch, понаблюдайте — если интернет появляется при обрыве — вина в нестабильном туннеле, а не в клиенте.
IPv6 — секретное оружие. Если у провайдера есть нативный v6 и он не фильтруется так жестко — включите IPv6 в клиенте (Amnezia, NekoBox, v2rayN). Часто даёт MTU 1500 без инкапсуляции, обходит блокировки подсетей дата-центров, пинг ниже на 10–20 мс. DNS Leak: настройте DoH/DoT в клиенте (1.1.1.1, 9.9.9.9) и отключите системный DNS. Fake DNS (map доменов на 198.18.x.x) — обязателен для правильной маршрутизации внутри туннеля.
Когда виноват провайдер: QoS, CGNAT, DPI и блокировка подсетей дата-центров
Провайдер может не блокировать VPN напрямую, но резать скорость QoS-ом. Признак: ночью 300 Мбит/с, в час пик (19:00–23:00) — 20 Мбит/с на любом сервере. Проверка: traceroute без VPN и с VPN. Если первый хоп (ваш роутер) ок, второй (провайдер) показывает потерю 10–20% или пинг 100+ мс — это QoS или перегруз аплинка. CGNAT (серый IP) ломает входящие соединения, но исходящий WireGuard/VLESS работает. Проблема — если вы поднимаете свой сервер за CGNAT: нужен исходящий коннект (client → server), входящий не пройдёт.
Блокировка подсетей: Роскомнадзор блокирует /24 сети целых дата-центров. Если ваш VPS в Selectel/Timeweb — IP может быть в «черном списке» по соседу. Проверка: curl -I https://2ip.ru без VPN — если видите страницу блокировки — IP в реестре. Лечится сменой хостинга или использованием CDN (Cloudflare Tunnel) для веб-трафика, но для VPN нужен чистый IP.
Как доказать саппорту VPN: скрины трассировки без VPN (чисто), с VPN (потери на 2-м хопе), пинги в час пик и ночью. Хороший провайдер VPN выдаст другой IP или вернёт деньги. Плохой — напишет «проблема у вашего провайдера» и закроет тикет.
Своя нода (VPS) vs Коммерческий VPN: настройки для максимальной стабильности
Поднимаете Amnezia/Outline/3X-UI на своём VPS — вы контролируете всё. Но дефолтные настройки ОС не заточены под высокий BDP и потери. Обязательный минимум в /etc/sysctl.d/99-vpn.conf:
net.core.rmem_max=2500000
net.core.wmem_max=2500000
net.ipv4.tcp_rmem=4096 87380 6291456
net.ipv4.tcp_wmem=4096 65536 6291456
net.ipv4.tcp_congestion_control=bbr
net.ipv4.tcp_fastopen=3
net.ipv4.tcp_mtu_probing=1
net.ipv4.ip_no_pmtu_disc=0Примените: sysctl --system. tcp_fastopen=3 ускоряет повторные коннекты (TFO cookie). tcp_mtu_probing=1 включает PLPMTUD — система сама найдёт рабочий MTU.
Reality: жёстко задавайте serverNames: ["cloudflare.com", "microsoft.com"] — домены, которые реально резолвятся на IP вашего сервера (или на IP Cloudflare, если используете Cloudflare Tunnel). Без этого handshake выглядит подозрительно. Порт — 443 или 8443, не 2053/2083/2087 (популярные у хостингов панели — их DPI знает).
Выбор хостинга: избегайте Selectel, Timeweb, Aeza, VDSina, Beget — их подсети горят первыми. Ищите мелкие ЛИРы в Нидерландах, Финляндии, Польше (например, Hostkey, PQ.Hosting, AEZA — но проверяйте ASN). Ежедневный бэкап конфига 3X-UI — спасёт при бане IP: поднимаете новый VPS, восстанавливаете базу, меняете DNS — 15 минут даунтайма.
Скорость, на которой видно разницу Своя сеть серверов без перепродажи канала. Убедитесь сами — 3 дня за 10 ₽. Тарифы от 200 ₽/мес · СБП и карта · ключ сразу после оплатыМониторинг: как узнать «сломалось у всех» или «только у меня» за 10 секунд
Не гадайте. Откройте Detector404 (detector404.org) — там мониторинг статусов популярных сервисов в реальном времени с JSON-LD схемой. Если у вашего провайдера VPN красный флаг — проблема глобальная, ждите фикса. Downdetector.ru — для коммерческих сервисов (ExpressVPN, Nord, Surfshark и локальные).
Свой алерт за 5 минут: арендуйте дешёвый VPS (1$ в месяц), поставьте Uptime Kuma (Docker). Добавьте проверки: TCP порт вашего VPN-сервера, HTTP эндпоинт /health, пинг до 1.1.1.1 с сервера. Настройте уведомления в Telegram-боте. Теперь вы узнаёте о падении ноды раньше пользователей.
Простой bash-скрипт в кроне каждую минуту: ping -c 3 -W 2 . Стоит 0 рублей, спасает нервы. Если мониторинг молчит, а у вас нет интернета — вина в клиенте, ОС или локальном провайдере.
План Б: стратегии резервирования и чек-лист аварийного запуска
Один VPN — не стратегия. Держите готовыми три слоя. Первый — основной VLESS+Reality на своём VPS или платном сервисе с поддержкой Reality/Hysteria2. Второй — AmneziaWG / WireGuard over TLS на другом хостинге (другая подсеть, другая страна). Третий — браузерное расширение или SOCKS5-прокси для веб-серфинга (например, «разблокировать ютуб впн расширение» или «ускоритель ютуба впн» — они работают через HTTP-прокси, не требуют прав админа, спасают на чужом ноутбуке).
eSIM / второй оператор — лучший фейловеер для мобильного интернета. МТС режет WireGuard — переключаетесь на Билайн/Мегафон/Теле2 за 30 секунд в настройках iOS/Android. Стоит 200–300 руб/мес за безлимитный запасной канал.
- Смена протокола: Reality → Hysteria2 → AmneziaWG → Shadowsocks/Outline.
- MTU: понизить до 1280 в клиенте, включить MSS Clamping на роутере.
- Порт: 443 → 8443 → 2053 → 2083 → 2087 (Cloudflare порты).
- Сервер: ближняя локация (Финляндия, Казахстан) → далекая (США, Япония) → другой хостинг.
- Клиент: переустановить профиль, проверить Battery Saver, Kill Switch, IPv6.
- Провайдер: позвонить в саппорт, прислать трассировку, требовать убрать QoS.
- Резерв: поднять второй VPS / купить доступ к другому сервису / включить eSIM.
Если после шага 7 ничего не помогло — проблема в глобальной блокировке подсети или железе провайдера. Ждите 24–48 часов, обычно обход находят авторы протоколов (Amnezia, Xray-core, sing-box обновляются каждую неделю).
IPv6 и будущее: почему включение v6 в клиенте часто лечит всё сразу
Многие забывают про IPv6, а зря. Крупные провайдеры (Ростелеком, МГТС, Билайн в части сетях) раздают нативный /64 префикс. DPI ТСПУ фокусируется на IPv4 — подсети дата-центров, SNI, JA3. IPv6-трафик часто проходит мимо инспекции просто потому, что оборудование DPI не обновляли под v6 так глубоко.
В клиенте (NekoBox, v2rayN, Amnezia, sing-box) включите «Prefer IPv6» или «Use IPv6». Если сервер имеет AAAA-запись — туннель поднимётся по v6. MTU нативного v6 — 1500, никаких накладных расходов на инкапсуляцию в v4. Пинг до европейских серверов по v6 часто на 5–10 мс ниже (меньше хопов, прямой пиринг).
Риск: если у провайдера v6 есть, но он ломаный (нет маршрута до внешнего мира) — клиент будет висеть на таймауте. Тест: ping -6 2a00:1450:4010:c04::64 (google.com IPv6). Не пингуется — отключайте v6 в клиенте. Пингуется — поздравляю, вы получили бесплатный обход части блокировок и лучший MTU. Для самоподнятых нод: обязательно выдавайте клиентам ULA-адреса (fd00::/8) или реальные /64, если хостер даёт. Настройте sysctl net.ipv6.conf.all.forwarding=1 и ip6tables для NAT66, если нужно.