AmneziaWG

Материал из База знаний
Версия от 13:44, 6 декабря 2025; Admin (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск


Хитрый VPN сервер на основе WireGuard

AmneziaWG - это Wireguard, но допиленный на имитацию себя под обычный трафик. Wireguard могут блокировать различные провайдеры, этот пока обходит блокировки.

Информация отсюда:

- https://docs.amnezia.org/ru/documentation/amnezia-wg

- https://github.com/openwrt-xiaomi/awg-openwrt/wiki/AmneziaWG-installing

Краткое изложение:

Обновляемся и разрешаем маршрутизацию трафика для драйвера AWG:

apt update
apt upgrade -y
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf
reboot

Устанавливаем пакеты:

add-apt-repository -y ppa:amnezia/ppa
apt install -y amneziawg curl wget python3 python3-qrcode libxcb-xinerama0 libxcb-cursor0 qrencode
mkdir /etc/amnezia/clients
cd /etc/amnezia/clients
wget -O awgcfg.py https://gist.githubusercontent.com/remittor/8c3d9ff293b2ba4b13c367cc1a69f9eb/raw/awgcfg.py

Предположим, что мы выбрали номер UDP-порта: 49666, подсеть vpn: 10.9.9.1/24

Генерируем основной конфиг AWG:

python3 awgcfg.py --make /etc/amnezia/amneziawg/awg0.conf -i 10.9.9.1/24 -p 49666

Генерируем конфиг-шаблон, который будет использоваться для создания клиентских конфигов и QR-кодов:

python3 awgcfg.py --create

В строке вывода должны быть указаны реальные адреса. В случае ошибки, можно поправить руками в файле _defclient.config. Так же рекомендую заменить в этом файле AllowedIPs на 0.0.0.0/0, если это не противоречит настройкам. Чем меньше получится сам файл, тем компактнее будет qr-код ;)

Поднимаем туннельный интерфейс AWG:

awg-quick up awg0

Проверяем созданный основной AWG-конфиг:

awg showconf awg0

Проверяем созданный AWG-интерфейс:

awg show

Выключаем туннельный интерфейс AWG:

awg-quick down awg0

Добавляем в автозагрузку поднятие AWG-интерфейса:

systemctl enable --now awg-quick@awg0
systemctl restart awg-quick@awg0.service

Ещё раз проверяем статус AWG:

awg show

Рекомендую отдельно вынести команды по изменению Firewall по поднятию и опусканию интерфейса. Это можно сделать в файле /etc/amnezia/amneziawg/awg0.conf:

PostUp = /etc/amnezia/amneziawg/awg-up.sh
PostDown = /etc/amnezia/amneziawg/awg-down.sh

В этих файлах прописать все необходимые команды, например так:

/etc/amnezia/amneziawg/awg-up.sh:

iptables -I INPUT -p udp --dport 49666 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD -i awg0 -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
ip6tables -I FORWARD -i awg0 -j ACCEPT
ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

/etc/amnezia/amneziawg/awg-down.sh

iptables -D INPUT -p udp --dport 49666 -m conntrack --ctstate NEW -j ACCEPT
iptables -D FORWARD -i awg0 -j ACCEPT
iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ip6tables -D FORWARD -i awg0 -j ACCEPT
ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Для создания пользователей предлагаю такой скрипт. Он умеет показывать уже созданных пользователей, а так же создает новых. Так же показывает конфиг и QR код прямо в консоли для настройки клиента.

#!/bin/bash

if [ "$1" == "" ]; then
  echo -e "\n VPN Client configs:"
  cat /etc/amnezia/amneziawg/awg0.conf | grep "_Name" | sed "s/^.* = /\t/"
  echo -e "=================================="
  echo -e "\n\tUsage: $0 <UserName>\n"
  exit 1
fi

cd /etc/amnezia/clients
python3 awgcfg.py -a $1 2>/dev/null
python3 awgcfg.py -c
awg-quick down awg0
awg-quick up awg0

echo -e "\nClient config for AmneziaWG:"
echo -e "==================================\n"
cat /etc/amnezia/clients/$1.conf
echo -e "==================================\n"

qrencode -t ansiutf8 -r $1.conf
rm -f *.conf