Установка серверной части AmneziaWG на Ubuntu/Debian VPS

В прошлой статье мы разобрали, как AmneziaWG обманывает DPI с помощью шумовых пакетов, мимикрии под QUIC и шифрования заголовков. Теперь — практика. Будем поднимать сервер. Хорошая новость: вам не нужен мощный VPS. AmneziaWG работает на модуле ядра Linux, а значит, потребляет минимум ресурсов. Хватит самого дешёвого сервера за 2–4 $ в месяц с 1 vCPU и 512 МБ ОЗУ. Если планируете подключать много клиентов или гонять 4K-видео — берите 1 ГБ ОЗУ для комфорта. Что понадобится VPS с Ubuntu 24.04 LTS, Ubuntu 22.04 или Debian 12/13. Поддерживаются и другие версии, но на этих всё проверено. Доступ по SSH с правами root (или sudo). 2 ГБ свободного места на диске — минимум. Лучше 3+. 15–20 минут времени. 💡 Важно: В отличие от Marzban, для AmneziaWG не нужен домен, SSL-сертификат или reverse-proxy. Сервер работает на уровне ядра и общается с клиентами напрямую по UDP. Это одновременно и проще, и безопаснее — меньше поверхности для атаки. Шаг 1. Подготовка сервера ...

🚀 WireGuard: Технический разбор самого быстрого VPN-протокола

Мы уже знаем, что WireGuard — «самый быстрый протокол». Но почему? В интернете полно статей, где это объясняется просто фразой «он написан на современном языке и использует быстрые алгоритмы». Для инженера этого недостаточно. Сегодня мы разберем фундаментальные архитектурные решения, которые позволяют WireGuard буквально «лететь» в 3 раза быстрее OpenVPN на том же оборудовании.

⚙️ Часть 1. Победа над контекстными переключениями (Userspace vs Kernel)

OpenVPN работает как обычная программа в пользовательском пространстве (Userspace). Когда пакет приходит на сетевую карту, ядро передает его в TUN/TAP-интерфейс. TUN — это виртуальная сеть, которая тянет пакет в OpenVPN, где он шифруется, а затем ядро забирает его обратно и отправляет в интернет. Это называется двойным копированием и сопровождается контекстными переключениями.

Каждое такое переключение (из Ring 0 в Ring 3 и обратно) стоит процессору драгоценных тактов. На слабых роутерах это превращается в «бутылочное горлышко», из-за чего скорость OpenVPN проседает до 100-200 Мбит/с.

WireGuard является модулем ядра (Kernel Space). Он встроен прямо в сетевой стек Linux. Пакет заходит, шифруется и уходит обратно, не покидая пространства ядра. Это радикально сокращает количество операций копирования и обеспечивает скорость до 950 Мбит/с даже на недорогих устройствах.

📡 Часть 2. Почему только UDP (и при чем тут TCP Meltdown)

OpenVPN часто принудительно заворачивают в TCP-порт 443, чтобы замаскироваться под HTTPS. Это «спасает» от DPI, но убивает скорость из-за явления, которое сетевики называют TCP Meltdown (TCP-over-TCP).

Суть проблемы: TCP — это надежный протокол с ретрансмиссиями. Когда вы запускаете VPN поверх TCP, вы получаете два уровня надежности. Первый уровень теряет пакет, второй пытается его восстановить. В итоге возникает «каскад» ретраенсмиссий, который обрушивает скорость в 10 раз.

WireGuard использует только UDP. Если пакет потеряется, приложение само решит, что делать (например, перешлет его). Эта «безответственность» на транспортном уровне делает передачу молниеносной, особенно в условиях плохой мобильной связи.

🧠 Часть 3. Минимализм кода и производительность кэша

Кодовая база WireGuard — это всего ~4000 строк чистого C. Для сравнения, в OpenVPN их более 100 000. Это не просто вопрос безопасности (меньше кода — меньше багов), но и вопрос производительности процессора.

Из-за простоты архитектуры WireGuard практически не делает лишних ветвлений в исполнении. Сетевой стек просто «проглатывает» этот трафик, что позволяет эффективно использовать кэш CPU (L1 и L2), не тратя время на загрузку тяжелых инструкций.

🛡️ Часть 4. Рукопожатие и защита от DoS (Cookie Mechanism)

Вместо громоздких IKE-переговоров (как в IPsec), WireGuard использует паттерн Noise_IKpsk2. Рукопожатие укладывается в один RTT (round-trip time) вместо двух или трех. Это значит, что даже если у вас сменился IP (переход с Wi-Fi на 4G), WireGuard переподключится мгновенно, без ощутимых «фризов».

Кроме того, WireGuard имеет встроенный механизм защиты от DDoS-атак на этапе рукопожатия: Cookie Mechanism. Если сервер видит слишком много неавторизованных запросов, он не тратит ресурсы на криптографию, а просто отправляет клиенту «куки». Клиент обязан вернуть их в следующем пакете. Это отсекает огромный пласт дешевых атак, которые тратили бы и так небольшой CPU.

📦 Часть 5. MTU: Невидимый враг скорости

Стандартный MTU (Maximum Transmission Unit) в интернете — 1500 байт. Но когда вы добавляете криптографические заголовки WireGuard (около 80 байт), пакет становится слишком большим. Если не уменьшить MTU, начинается фрагментация — пакет разрывается на два маленьких, что приводит к потере 20-30% скорости.

Именно поэтому критически важно выставить MTU 1420 (а иногда и 1380 для двойного туннеля). В конфиге это делается одной строкой, и неопытные админы часто упускают этот момент, а затем жалуются на «медленный VPN», хотя вся проблема в фрагментации.

[Interface]
Address = 10.0.0.2/24
MTU = 1420
PrivateKey = <ваш_ключ>

📊 Сравнительная таблица производительности

Протокол Средняя скорость (1 Гбит/с канал) Задержка (Ping)
OpenVPN (TCP/UDP) ~300 Мбит/с +2-5 мс
IPsec/IKEv2 ~600 Мбит/с (с аппаратным ускорением) +1-3 мс
WireGuard ~950 Мбит/с +0.5 мс

🏁 Итог первой части

Итак, WireGuard быстрее всех не из-за магии, а из-за трех ключевых принципов: работа в ядре без контекстных переключений, использование UDP вместо TCP (что устраняет meltdown) и минимализм кода, который позволяет процессору работать эффективно. Но за всей этой скоростью стоит не менее мощная криптография.

📢 Анонс следующей статьи: Мы уже упомянули, что WireGuard использует алгоритмы ChaCha20 и Curve25519. В следующей части цикла мы детально разберем, как именно работает эта криптография на уровне математики: почему «кривые» (Elliptic Curves) позволяют защищаться от квантовых атак будущего, и почему ChaCha20 быстрее AES, но при этом абсолютно безопасен. Разберем это на пальцах, но без упрощений. Не пропустите!

Продолжение: Разбираем криптографию ChaCha20 и Curve25519 изнутри.

Комментарии

Популярные сообщения

🧬 ChaCha20 и Curve25519: Криптография под капотом WireGuard

Немного о том, зачем это нужно.

🔌 L2TP: протокол, который объединил лучшее от двух миров

⚡ ИИ-помощник (на OpenRouter)

Спросите про VPN, протоколы или настройку серверов.