AmneziaWG: установка и рабочий VPN Print

  • AmneziaWG, debian, ubuntu, vpn, vps
  • 0

Когда тебе нужен безопасный доступ к своим серверам, панели, репозиториям и админке из любой сети, обычный “открыл порт и зашёл” быстро превращается в риск. AmneziaWG решает задачу проще: ты поднимаешь свой VPN на VPS, подключаешь ноутбук и телефон, и дальше работаешь так, будто сидишь в одной локалке с инфраструктурой. Важно сразу не попасть в ловушку: AmneziaWG нормально живёт на KVM-VPS с публичным IPv4, а в контейнерах (LXC/OpenVZ) часто не взлетает из-за модулей ядра и TUN. 

Перед стартом: быстрые проверки

На сервере проверь виртуализацию и IPv4:

systemd-detect-virt || true
ip -4 addr show scope global | awk '{print $2}' | head -n1

Если видишь lxc/openvz и нет нормального публичного IPv4, не трать время на “починить магией”. Проще взять KVM-VPS. На HSTQ это как раз штатный сценарий: честные vCPU/NVMe, нормальная сеть и при необходимости аренда IPv4.

Быстрый способ: поставить через готовый GitHub-установщик в Docker

Если хочешь поднять AmneziaWG быстро и удобно управлять пользователями через Web UI, самый простой путь это awg-easy (AmneziaWG + админка). Репозиторий рассчитан на Docker и запускается одной командой. 

  1. Ставим Docker на Debian 12/Ubuntu 24.04:

sudo apt update
sudo apt install -y ca-certificates curl
curl -sSL https://get.docker.com | sh
sudo usermod -aG docker "$USER"
newgrp docker
  1. Запускаем контейнер так, чтобы он сам подхватил внешний интерфейс, а админка была доступна только через SSH-туннель (так ты обходишься без паролей и не светишь Web UI в интернет):

SERVER_IP="$(ip -4 addr show scope global | awk '{print $2}' | cut -d/ -f1 | head -n1)"
WG_DEV="$(ip -4 route show default | awk '{print $5}' | head -n1)"

docker run -d \
  --name=amnezia-wg-easy \
  -e LANG=ru \
  -e WG_HOST="$SERVER_IP" \
  -e WG_DEVICE="$WG_DEV" \
  -e PORT=51821 \
  -e WG_PORT=51820 \
  -e WEBUI_HOST=127.0.0.1 \
  -v ~/.amnezia-wg-easy:/etc/wireguard \
  -p 51820:51820/udp \
  -p 127.0.0.1:51821:51821/tcp \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --sysctl="net.ipv4.ip_forward=1" \
  --device=/dev/net/tun:/dev/net/tun \
  --restart unless-stopped \
  ghcr.io/yokitoki/awg-easy

Открывать наружу нужно только UDP 51820. В Web UI заходи через туннель с компьютера:

ssh -L 51821:127.0.0.1:51821 root@SERVER_IP

После этого открой в браузере http://127.0.0.1:51821, создай клиента, скачай конфиг или QR и подключи устройство.

Проверка, что туннель поднялся:

docker logs --tail=80 amnezia-wg-easy
docker exec -it amnezia-wg-easy sh -lc 'awg show 2>/dev/null || true; wg show 2>/dev/null || true'

Ручной способ: установка модуля AmneziaWG и запуск через awg-quick

Если ты не хочешь Docker и предпочитаешь “по-серверному”, ставишь модуль ядра AmneziaWG и инструменты, затем поднимаешь интерфейс сервисом. Для Debian и Ubuntu есть готовые пакеты. 

Debian 12:

sudo apt-get update
sudo apt-get full-upgrade -y
sudo apt-get install -y software-properties-common python3-launchpadlib gnupg2 linux-headers-$(uname -r)

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 57290828
echo "deb https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu focal main" | sudo tee -a /etc/apt/sources.list
echo "deb-src https://ppa.launchpadcontent.net/amnezia/ppa/ubuntu focal main" | sudo tee -a /etc/apt/sources.list

sudo apt-get update
sudo apt-get install -y amneziawg

Включаем форвардинг:

echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-awg.conf
sudo sysctl -p /etc/sysctl.d/99-awg.conf

Генерируем ключи и поднимаем первый серверный конфиг без плейсхолдеров:

sudo mkdir -p /etc/amnezia/amneziawg
cd /etc/amnezia/amneziawg
sudo sh -lc 'umask 077; awg genkey | tee server.key | awg pubkey > server.pub'
sudo sh -lc 'umask 077; awg genkey | tee client1.key | awg pubkey > client1.pub'
SERVER_PRIV="$(sudo cat /etc/amnezia/amneziawg/server.key)"
CLIENT1_PUB="$(sudo cat /etc/amnezia/amneziawg/client1.pub)"
WG_DEV="$(ip -4 route show default | awk "{print \$5}" | head -n1)"

sudo tee /etc/amnezia/amneziawg/awg0.conf >/dev/null <<EOF
[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
PrivateKey = $SERVER_PRIV
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.66.66.0/24 -o $WG_DEV -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.66.66.0/24 -o $WG_DEV -j MASQUERADE

[Peer]
PublicKey = $CLIENT1_PUB
AllowedIPs = 10.66.66.2/32
EOF

Стартуем сервис:

sudo systemctl enable --now awg-quick@awg0
sudo systemctl status awg-quick@awg0 --no-pager

Клиентский конфиг собирается так же автоматически:

SERVER_PUB="$(sudo cat /etc/amnezia/amneziawg/server.pub)"
CLIENT1_PRIV="$(sudo cat /etc/amnezia/amneziawg/client1.key)"
SERVER_IP="$(ip -4 addr show scope global | awk "{print \$2}" | cut -d/ -f1 | head -n1)"

cat <<EOF
[Interface]
PrivateKey = $CLIENT1_PRIV
Address = 10.66.66.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = $SERVER_PUB
Endpoint = $SERVER_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF

Частые поломки и быстрые фиксы

Если видишь “Unknown device type” или “Protocol not supported”, почти всегда причина в виртуализации контейнером или в том, что модуль не подхватился. На контейнерах это ожидаемо, на KVM проверь, что пакет встал, заголовки ядра совпадают, а сервис запускается без ошибок. 

Если клиент подключился, но “интернет не идёт”, это почти всегда форвардинг или NAT. Проверь sysctl net.ipv4.ip_forward и наличие правил iptables из PostUp.

Если подключение отваливается в публичных сетях, добавь PersistentKeepalive = 25 на клиентах, это стабилизирует NAT-сессии.

HSTQ здесь полезен тем, что ты берёшь KVM-VPS с нормальным IPv4 и без сюрпризов по диску и CPU, а дальше либо поднимаешь AmneziaWG сам по инструкции выше, либо мы делаем установку под ключ и оставляем тебе готовые конфиги и проверку “подключился, ходит трафик, автозапуск включён”.

Оформите услугу на сайте hstq.net, и мы поможем вам развернуть AmneziaWG на VPS, настроить клиентов и довести всё до состояния, когда VPN работает стабильно и без ручной возни.


Was this answer helpful?

« Back

Knowledgebase