-
Notifications
You must be signed in to change notification settings - Fork 1
AmneziaWG installing
Для начала необходимо узнать версию системы и ядра.
Для этого в консоли нужно ввести команду hostnamectl:
root@user:~# hostnamectl
Operating System: Ubuntu 22.04.4 LTS
Kernel: Linux 5.15.0-118-generic
Architecture: x86-64`
Если у вас устаревшее ядро (например 5.4), то настоятельно рекомендую обновить систему и ядро, т.к. на старом ядре драйвер AWG у меня в dmesg вываливал ошибки.
Далее все команды выполнятся от рута. Поэтому если вы не под рутом, то имеет смысл выполнить команду:
sudo su
cd ~
Подключаем к системе полный список всех доступных репозиторив с исходниками системы (Ubuntu/Debian).
Для этого в файл /etc/apt/sources.list разблокируем доп. репозитории с исходными кодами:
cp -f /etc/apt/sources.list /etc/apt/sources.list.backup
sed "s/# deb-src/deb-src/" /etc/apt/sources.list.backup > /etc/apt/sources.list
Обновляем систему:
apt update -y && apt upgrade -y
Заранее разрешаем маршрутизацию трафика для драйвера AWG:
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/00-amnezia.conf
Перезагружаемся:
reboot
Перед установкой модулей AWG убедитесь, что на диске свободно как минимум 1,5GB пространства.
Для этого выполните команду: df -h
После перезагрузки не забываем войти под рутом (если ещё нет):
sudo su
После обновления системы можно приступать к установке модулей AmneziaWG.
Создаём новую директорию и переходим в неё:
mkdir -p ~/awg
cd ~/awg
Устанавливаем все пакеты AmneziaWG:
add-apt-repository -y ppa:amnezia/ppa
apt install -y amneziawg
Проверяем версию установленного пакета AWG:
root@user:~/awg# awg --version
wireguard-tools v1.0.20210914 - https://git.zx2c4.com/wireguard-tools/
(разрабы AWG забыли в исходниках свою версию проставить и названия изменить)
Проверяем наличие в системе всех необходимых драйверов:
root@user:~/awg# lsmod | grep amnezia
amneziawg 98304 0
curve25519_x86_64 36864 2 amneziawg,wireguard
libchacha20poly1305 16384 2 amneziawg,wireguard
libcurve25519_generic 49152 3 amneziawg,curve25519_x86_64,wireguard
ip6_udp_tunnel 16384 2 amneziawg,wireguard
udp_tunnel 20480 2 amneziawg,wireguard
Если у вас не "проглядывается" драйвер amneziawg, то попробуйте выполнить команду: modprobe amneziawg
Проверяем актуальность установленной версии драйвера AWG:
root@user:~/awg# modinfo amneziawg | grep ver
version: 1.0.0
srcversion: 5C0E002076C0223605D8472
vermagic: 5.15.0-118-generic SMP mod_unload modversions
Теперь приступим к установке доп. утилит.
Устанавливаем питон и т.п.:
apt install curl wget python3 python3-pip
Проверяем версию установленного питона:
root@user:~/awg# python3 --version
Python 3.10.12
Примечание: нужна версия питона не ниже 3.8
Устанавливаем доп. модули для питона:
pip3 install qrcode
Скачиваем спец. скрипт для работы с конфигами AWG:
mkdir -p ~/awg
cd ~/awg
wget -O awgcfg.py https://gist.githubusercontent.com/remittor/8c3d9ff293b2ba4b13c367cc1a69f9eb/raw/awgcfg.py
Примечание: исходники этой утилиты находятся тут: https://gist.github.com/remittor/8c3d9ff293b2ba4b13c367cc1a69f9eb
Заранее выбираем номер UDP-порта, который будет прослушивать AWG. Например: 49666
Так же выбираем подсеть. Например: 10.9.9.1/24
Генерируем основной конфиг AWG (значения ключей i
и p
поменяйте на свои):
root@user:~/awg# python3 awgcfg.py --make /etc/amnezia/amneziawg/awg0.conf -i 10.9.9.1/24 -p 49666
Make AWG server config: "/etc/amnezia/amneziawg/awg0.conf"...
Main network iface: "ens3"
Tunnel iface: "awg0"
AWG server config file "/etc/amnezia/amneziawg/awg0.conf" created!
Генерируем конфиг-шаблон, который будет использоваться для создания клиентских конфигов и QR-кодов:
root@user:~/awg# python3 awgcfg.py --create
Create template for client configs: "_defclient.config"...
External IP-Addr: "XXX.XXX.XXX.XXX"
Server IP-Addr: "XXX.XXX.XXX.XXX"
Template client config file "_defclient.config" created!
Примечание: за место XXX.XXX.XXX.XXX вы должны увидеть внешний IP-адрес вашего VDS-сервера.
Добавляем пару клиентов в основной конфиг AWG:
root@user:~/awg# python3 awgcfg.py -a "my_phone"
Add new client config "my_phone"...
New client "my_phone" added! IP-Addr: "10.9.9.2/32"
==== OK =====
root@user:~/awg# python3 awgcfg.py -a "my_router"
Add new client config "my_router"...
New client "my_router" added! IP-Addr: "10.9.9.3/32"
==== OK =====
Генерируем клиентские конфиги:
root@user:~/awg# python3 awgcfg.py -c -q
Generate client configs...
Generate QR codes...
==== OK =====
После этого в директории "~/awg" появятся клиентские конфиги и QR-коды:
root@user:~/awg# find . -name '*.conf'
./my_phone.conf
./my_router.conf
Поднимаем туннельный интерфейс AWG:
root@user:~/awg# awg-quick up awg0
[#] ip link add awg0 type amneziawg
[#] awg setconf awg0 /dev/fd/63
[#] ip -4 address add 10.9.9.1/24 dev awg0
[#] ip link set mtu 1420 up dev awg0
[#] iptables -A INPUT -p udp --dport 49666 -m conntrack --ctstate NEW -j ACCEPT --wait 10 --wait-interval 50; iptables -A FORWARD -i ens3 -o awg0 -j ACCEPT --wait 10 --wait-interval 50; iptables -A FORWARD -i awg0 -j ACCEPT --wait 10 --wait-interval 50; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE --wait 10 --wait-interval 50; ip6tables -A FORWARD -i awg0 -j ACCEPT --wait 10 --wait-interval 50; ip6tables -t nat -A POSTROUTING -o ens3 -j MASQUERADE --wait 10 --wait-interval 50
Проверяем созданный основной AWG-конфиг:
awg showconf awg0
Примечание: команда должна выполнится без ошибок и показать отпарсенный AWG-конфиг.
Проверяем созданный AWG-интерфейс:
root@user:~/awg# awg show
interface: awg0
public key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
private key: (hidden)
listening port: 49666
jc: XX
jmin: XX
jmax: XXX
s1: XX
s2: XXX
h1: XXXXXXXXXX
h2: XXXXXXXXXX
h3: XXXXXXXXXX
h4: XXXXXXXXXX
peer: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
allowed ips: 10.9.9.2/32
peer: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
allowed ips: 10.9.9.3/32
Выключаем туннельный интерфейс AWG:
awg-quick down awg0
Добавляем в автозагрузку поднятие AWG-интерфейса:
systemctl enable --now awg-quick@awg0
systemctl restart awg-quick@awg0.service
Проверяем статус созданного сервиса awg-quick@awg0.service
:
root@user:~/awg# systemctl status awg-quick@awg0.service
● awg-quick@awg0.service - WireGuard via wg-quick(8) for awg0
Loaded: loaded (/etc/systemd/system/awg-quick@.service; enabled; vendor preset: enabled)
Active: active (exited) since Sun 2024-08-11 11:42:40 CEST; 41s ago
Docs: man:awg-quick(8)
man:awg(8)
Process: 12734 ExecStart=/usr/bin/awg-quick up awg0 (code=exited, status=0/SUCCESS)
Main PID: 12734 (code=exited, status=0/SUCCESS)
CPU: 200ms
Aug 11 11:42:39 user systemd[1]: Starting WireGuard via wg-quick(8) for awg0...
Aug 11 11:42:39 user awg-quick[12734]: [#] ip link add awg0 type amneziawg
Aug 11 11:42:39 user awg-quick[12734]: [#] awg setconf awg0 /dev/fd/63
Aug 11 11:42:39 user awg-quick[12734]: [#] ip -4 address add 10.9.9.1/24 dev awg0
Aug 11 11:42:40 user awg-quick[12734]: [#] ip link set mtu 1420 up dev awg0
Aug 11 11:42:40 user awg-quick[12734]: [#] iptables -A INPUT -p udp --dport 49666 -m conntrack --ctstate NEW -j ACCEPT --wait 10 --wait-interval 50; iptabl>
Ещё раз проверяем статус AWG:
awg show
На этом настройка AWG на VDS-сервере завершена.
Скачайте с сервера файл ~/awg/my_phone.conf
и перешлите его на целевое Android-устройство.
Установите на Android-устройстве приложение AmneziaWG и добавьте новый интерфейс через импорт файла my_phone.conf
Примечание: за место файла my_phone.conf
можно использовать файл my_phone.png
(это QR-код).
Активируйте только что добавленный интерфейс и проверьте в браузере ваш внешний IP-адрес (сервис 2ip.ru).
На VDS-сервере создайте новый конфиг под ваш OpenWRT-роутер (если ранее этого не сделали):
python3 awgcfg.py -a "my_router" -c -q
И перезапустите AWG на VDS-сервере (если создали новый клиентский конфиг):
systemctl restart awg-quick@awg0.service
Скопируйте файл ~/awg/my_router.conf
куда-либо (этот файл содержит настройки для OpenWRT).
Если у вас на роутере установлена версия OpenWrt ниже чем 23.05, то следует обновиться!
Скачайте необходимые IPK-пакеты по любой из ссылок:
- https://github.com/lolo6oT/awg-openwrt/releases
- https://github.com/Slava-Shchipunov/awg-openwrt/releases
Нужно скачать 3 файла под вашу платформу (архитектура процессора, который установлен в роутере):
kmod-amneziawg.ipk
amneziawg-tools.ipk
luci-proto-amneziawg.ipk (либо luci-app-amneziawg.ipk)
Откройте в браузере панель управления вашим OpenWRT-роутером и залогиньтесь.
Перейдите на вкладку System/Software
и нажмите на "Update lists..."
. Дождитесь обновления списка пакетов.
На той же вкладке System/Software
нажмите на "Upload Package..."
и последовательно установите все 3 ранее скаченные IPK-файла.
Перезагрузите роутер.
После входа в LuCI должен появится новый раздел Status/AmneziaWG
(либо VPN/AmneziaWG
).
Переходим в раздел Network/Interfaces
и нажимаем кнопку Add new interface...
В появившемся окне указываем название AWG
и тип AmneziaWG VPN
. После нажатия кнопки Create Interface
появится окно Interfaces/AWG
.
В окне Interfaces/AWG
перейдите на закладку General Settings
.
- Значение "Protocol" = "AmneziaWG VPN"
- Значение "Bring up on boot" =
enabled
- Значение "Private Key" возьмите из файла
my_router.conf
(параметр "Interfaces/PrivateKey"). - Значение "Public Key" возьмите из файла
my_router.conf
(параметр "Interfaces/_PublicKey"). - Значение "Listen Port" не указывайте (пусть порт на клиенте будет случайным).
- Значение "IP-Addresses" возьмите из файла
my_router.conf
(параметр "Interfaces/Address") вместе с маской. - Значение "No Host Routes" =
not active
(это заставит абсолютно весь трафик идти через туннель AWG)
Примечание: Если вы планируете использовать частичное перенаправление трафика (например при помощи RuAntiBlock
, либо podkop), то значение параметра No Host Routes
должно быть enabled
(это заставит AWG не создавать маршруты для перенаправления трафика).
Переходим на вкладку Advanced Settings
.
- Значение "MTU" = 1420
- Значение "Use default gateway" =
enabled
- Значение "Use custom DNS servers" = "8.8.8.8" (будем работать в обход провайдерского DNS).
Переходим на вкладку AmneziaWG Settings
.
- Значение "Jc" возьмите из файла
my_router.conf
(параметр "Interfaces/Jc"). - Значение "Jmin" возьмите из файла
my_router.conf
(параметр "Interfaces/Jmin"). - Значение "Jmax" возьмите из файла
my_router.conf
(параметр "Interfaces/Jmax"). - Значение "S1" возьмите из файла
my_router.conf
(параметр "Interfaces/S1"). - Значение "S2" возьмите из файла
my_router.conf
(параметр "Interfaces/S2"). - Значение "H1" возьмите из файла
my_router.conf
(параметр "Interfaces/H1"). - Значение "H2" возьмите из файла
my_router.conf
(параметр "Interfaces/H2"). - Значение "H3" возьмите из файла
my_router.conf
(параметр "Interfaces/H3"). - Значение "H4" возьмите из файла
my_router.conf
(параметр "Interfaces/H4").
Переходим на вкладку Peer
и нажимаем кнопку Add Peer
, что бы появилось окно Interfaces/AWG/Peers
.
В появившемся окне Interfaces/AWG/Peers
указываем:
- Значение "Peer disabled" = not active
- Значение "Description" = "my_router" (можете любое название указать).
- Значение "Peer disabled" =
not active
- Значение "Public Key" возьмите из файла
my_router.conf
(параметр "Peer/PublicKey"). - Значение "Private Key" не указывайте ничего.
- Значение "Preshared Key" не указывайте ничего.
- Значение "Allowed IPs" = "0.0.0.0/0"
- Значение "Route Allowed IPs" =
not active
- Значение "Endpoint Host" возьмите из файла
my_router.conf
(параметр "Peer/Endpoint") только IP-адрес. - Значение "Endpoint Port" возьмите из файла
my_router.conf
(параметр "Peer/Endpoint") только номер порта. - Значение "Persistent Keep Alive" = 60 (можете указать иное значение).
После нажатия кнопки "Save" в списке Peers появится новая строка с именем, которое было указано в поле "Description".
Далее снова нажимайте "Save", что бы интерфейс AWG
создался.
В текущем окне Network/Interfaces
нажмите кнопку Save & Apply
, что бы ваши настройки сохранились и применились.
После добавления нового интерфейса AWG на страничке Status/AmneziaWG
(либо на VPN/AmneziaWG
) появится новое соединение с именем "my_router".
При правильной настройке и работающем VDS-сервере сражу же должны появиться удачные рукопожатия (Latest handshake).
Для проверки работоспособности можно в терминале ввести команду ping -I AWG facebook.com
Теперь нужно перейти на вкладку Network/Firewall/General Settings
и нажать кнопку "Add" (в разделе Zones
).
В появившемся окне Firewall - Zone settings
нужно заполнить поля на вкладке General Settings
:
- Значение "Name" = "awg"
- Значение "Input" = "reject"
- Значение "Output" = "accept"
- Значение "Forward" = "reject"
- Значение "Masquerading" = enabled
- Значение "MSS clamping" = enabled
- Значение "Covered networks" = "AWG"
- Значение "Allow forward to destination zones" = пусто
- Значение "Allow forward from source zones" = "lan"
Нажимаем кнопку "Save".
В окне "Network/Firewall"
нажимаем кнопку "Save & Apply", что бы ваши настройки сохранились и применились.
Теперь в разделе Zones
можно наблюдать новые правила для трафика.
После этого можно приступать к настройке RuAntiBlock
, либо к настройке podkop'а.