AmneziaWG — различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
| (не показаны 2 промежуточные версии этого же участника) | |||
| Строка 1: | Строка 1: | ||
| + | [[category:Linux]] | ||
| + | == Хитрый VPN сервер на основе WireGuard == | ||
| + | AmneziaWG - это Wireguard, но допиленный на имитацию себя под обычный трафик. Wireguard могут блокировать различные провайдеры, этот пока обходит блокировки. | ||
| − | + | Информация отсюда: | |
| − | https:// | + | - 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-quick down awg0 | ||
| − | |||
| − | echo -e "\nClient config for AmneziaWG:" | + | Добавляем в автозагрузку поднятие 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 код прямо в консоли для настройки клиента. | ||
| + | <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