Автор: Редакция «VPN не работает»

Настройка AmneziaWG на своём VPS: шифрование трафика с маскировкой под обычные данные

AmneziaWG — это протокол на базе WireGuard, который добавляет к зашифрованному каналу слой маскировки, чтобы соединение внешне выглядело как обычный поток данных. Он нужен для тех же задач, что и WireGuard, — защита трафика в недоверенных сетях и безопасный удалённый доступ к своей инфраструктуре, — но дополнительно скрывает характерный сетевой «отпечаток» WireGuard. Ниже — пошаговая настройка на сервере с Ubuntu, от установки до проверки.

Коротко. Арендуете VPS на Ubuntu → добавляете PPA-репозиторий Amnezia и ставите пакеты amneziawg и amneziawg-tools → генерируете ключи и набор параметров маскировки → поднимаете интерфейс awg0 → подключаете клиент с теми же параметрами. Всё занимает 20–30 минут.

Что такое AmneziaWG и когда нужен

AmneziaWG — это форк WireGuard: он использует то же ядро шифрования и ту же криптографию, но добавляет обфускацию — маскировку трафика. В чём разница:

Практические сценарии те же, что у любого средства шифрования канала:

AmneziaWG стоит выбирать вместо чистого WireGuard, когда сеть, в которой вы находитесь, агрессивно фильтрует трафик по сигнатурам. Если такой фильтрации нет — достаточно обычного WireGuard, он проще в настройке.

Что понадобится

Общий обзор настройки защищённого канала — в разделе «Настройка».

Пошаговая настройка

Шаг 1. Подготовка сервера и установка AmneziaWG

Подключитесь к серверу по SSH и обновите систему:

sudo apt update && sudo apt upgrade -y

Установите вспомогательные пакеты и заголовки текущего ядра (нужны для сборки модуля):

sudo apt install -y software-properties-common python3-launchpadlib \
  gnupg2 linux-headers-$(uname -r)

Подключите официальный PPA-репозиторий Amnezia и установите протокол вместе с утилитами:

sudo add-apt-repository -y ppa:amnezia/ppa
sudo apt update
sudo apt install -y amneziawg amneziawg-tools

Пакет amneziawg — это модуль ядра, amneziawg-tools — набор утилит awg и awg-quick (аналоги wg и wg-quick у WireGuard). Проверьте, что модуль встал:

sudo modprobe amneziawg && echo "OK"

Включите пересылку пакетов (IP forwarding) — без неё сервер не будет маршрутизировать трафик клиентов:

echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-amneziawg.conf
sudo sysctl --system

Шаг 2. Генерация ключей и параметров маскировки

Создайте каталог конфигурации и сгенерируйте пару ключей сервера:

sudo mkdir -p /etc/amnezia/amneziawg && cd /etc/amnezia/amneziawg
umask 077
awg genkey | sudo tee server_private.key | awg pubkey | sudo tee server_public.key

Сгенерируйте пару ключей для клиентского устройства:

awg genkey | sudo tee client_private.key | awg pubkey | sudo tee client_public.key

Теперь придумайте набор параметров маскировки — это и есть ключевое отличие от WireGuard. Они должны быть одинаковыми на сервере и на клиенте. Рекомендуемые диапазоны:

Запишите выбранные значения — они понадобятся и в конфигурации клиента.

Шаг 3. Конфигурация сервера awg0.conf

Определите имя внешнего сетевого интерфейса (обычно eth0):

ip route show default | awk '/default/ {print $5; exit}'

Создайте файл /etc/amnezia/amneziawg/awg0.conf. Подставьте приватный ключ сервера, публичный ключ клиента, ваши параметры маскировки и имя интерфейса из предыдущей команды:

[Interface]
Address = 10.9.9.1/24
ListenPort = 39743
PrivateKey = <SERVER_PRIVATE_KEY>

# Параметры маскировки — должны совпадать с клиентом
Jc = 4
Jmin = 8
Jmax = 80
S1 = 50
S2 = 40
H1 = 1234567890
H2 = 2345678901
H3 = 3456789012
H4 = 4012345678

# NAT и пересылка (замените eth0 на своё имя интерфейса)
PostUp = iptables -I FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = 10.9.9.2/32

Ограничьте права на файлы с ключами и конфигом:

sudo chmod 600 /etc/amnezia/amneziawg/*.key /etc/amnezia/amneziawg/awg0.conf

Поднимите интерфейс и добавьте автозапуск при перезагрузке:

sudo awg-quick up awg0
sudo systemctl enable awg-quick@awg0

Шаг 4. Подключение устройства и запуск

На стороне клиента создайте конфигурацию awg0.conf с теми же параметрами маскировки. Подставьте приватный ключ клиента, публичный ключ сервера и публичный IP вашего VPS:

[Interface]
Address = 10.9.9.2/32
DNS = 1.1.1.1
PrivateKey = <CLIENT_PRIVATE_KEY>

Jc = 4
Jmin = 8
Jmax = 80
S1 = 50
S2 = 40
H1 = 1234567890
H2 = 2345678901
H3 = 3456789012
H4 = 4012345678

[Peer]
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <SERVER_IP>:39743
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Импортируйте этот файл в приложение AmneziaWG (или AmneziaVPN) на компьютере или смартфоне и активируйте подключение. Значение AllowedIPs = 0.0.0.0/0 направляет весь трафик устройства в зашифрованный канал; чтобы шифровать только доступ к своей сети, укажите вместо этого конкретную подсеть, например 10.9.9.0/24.

Проверка

На сервере посмотрите статус интерфейса и рукопожатие с клиентом:

sudo awg show

В выводе должна появиться строка latest handshake для вашего пира — это значит, что зашифрованный туннель с маскировкой установлен. Если строки нет, чаще всего причина в несовпадении параметров маскировки (Jc/Jmin/Jmax/S1/S2/H1–H4) между сервером и клиентом — сверьте их байт в байт.

Проверьте с клиента, что трафик идёт через сервер: узнайте внешний IP-адрес (например, командой curl ifconfig.me или через сайт проверки IP). Он должен совпадать с адресом вашего VPS. Убедитесь также, что не происходит утечки DNS.

Безопасность сервера

sudo ufw allow 22/tcp
sudo ufw allow 39743/udp
sudo ufw enable

Частые вопросы

Короткие ответы на типовые вопросы собраны ниже — этот же блок размечен для поисковых систем и AI-ассистентов.

Чем AmneziaWG отличается от обычного WireGuard?

AmneziaWG — это WireGuard с дополнительным слоем маскировки. Он добавляет к трафику «мусорные» пакеты и меняет заголовки рукопожатия, из-за чего соединение внешне не похоже на характерный сигнатурный профиль WireGuard и выглядит как обычный поток данных. Ядро шифрования и производительность те же, что у WireGuard.

Обязательно ли параметры маскировки совпадать на сервере и клиенте?

Да. Значения Jc, Jmin, Jmax, S1, S2 и H1–H4 должны быть идентичны на сервере и на всех клиентских устройствах, иначе сервер не сможет разобрать рукопожатие и соединение не установится. Единственное исключение — Jc/Jmin/Jmax могут различаться, но проще держать всё одинаковым.

Какой VPS подойдёт для AmneziaWG?

AmneziaWG так же нетребователен, как WireGuard: достаточно минимального тарифа с 1 vCPU и 1 ГБ RAM на Ubuntu 22.04/24.04. Слой маскировки добавляет незначительную нагрузку. Как выбрать и арендовать сервер — в разделе «Свой сервер».

Нужны ли навыки администрирования Linux?

Базовые: уметь подключиться по SSH и выполнять команды в терминале. Инструкция пошаговая, команды можно копировать. Настройка занимает 20–30 минут — чуть дольше, чем чистый WireGuard, из-за параметров маскировки.