AmneziaWG — различия между версиями

Материал из База знаний
Перейти к: навигация, поиск
 
(не показаны 2 промежуточные версии этого же участника)
Строка 1: Строка 1:
 +
[[category:Linux]]
  
 +
== Хитрый VPN сервер на основе WireGuard ==
 +
AmneziaWG - это Wireguard, но допиленный на имитацию себя под обычный трафик. Wireguard могут блокировать различные провайдеры, этот пока обходит блокировки.
  
https://docs.amnezia.org/ru/documentation/amnezia-wg
+
Информация отсюда:
  
https://github.com/openwrt-xiaomi/awg-openwrt/wiki/AmneziaWG-installing
+
- https://docs.amnezia.org/ru/documentation/amnezia-wg
  
 +
- https://github.com/openwrt-xiaomi/awg-openwrt/wiki/AmneziaWG-installing
  
 +
=== Краткое изложение: ===
  
  #!/bin/bash
+
Обновляемся и разрешаем маршрутизацию трафика для драйвера AWG:
 +
  apt update
 +
apt upgrade -y
 +
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf
 +
reboot
  
  # https://github.com/openwrt-xiaomi/awg-openwrt/wiki/AmneziaWG-installing
+
Устанавливаем пакеты:
 +
  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
  
if [ "$1" == "" ]; then
+
Проверяем созданный основной AWG-конфиг:
  echo -e "\n VPN Client configs:"
+
awg showconf awg0
  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
+
Проверяем созданный AWG-интерфейс:
python3 awgcfg.py -a $1 2>/dev/null
+
  awg show
python3 awgcfg.py -c
+
 
 +
Выключаем туннельный интерфейс AWG:
 
  awg-quick down awg0
 
  awg-quick down awg0
awg-quick up awg0
 
  
  echo -e "\nClient config for AmneziaWG:"
+
Добавляем в автозагрузку поднятие AWG-интерфейса:
echo -e "==================================\n"
+
systemctl enable --now awg-quick@awg0
cat /etc/amnezia/clients/$1.conf
+
systemctl restart awg-quick@awg0.service
echo -e "==================================\n"
+
 
 +
Ещё раз проверяем статус 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 код прямо в консоли для настройки клиента.
 +
<pre>
 +
#!/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
 
qrencode -t ansiutf8 -r $1.conf
 
rm -f *.conf
 
rm -f *.conf
 +
</pre>

Текущая версия на 13:44, 6 декабря 2025


Хитрый 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