AmneziaWG on Ubuntu 24.04

Статья составлена и проверена на Ubuntu 24.04 Владимиром, за что ему большое человеческое спасибо! Далее от себя.

Устанавливаем AWG сервер

Перед установкой обновляем сервер

apt update

apt upgrade

Теперь сам AWG

Копируем файл списка репозиториев APT в резервную копию с принудительным перезаписыванием.
cp -f /etc/apt/sources.list /etc/apt/sources.list.backup

С помощью команды sed раскомментируем строки с deb-src (удаляет # в начале) в резервной копии и результат записывает обратно в основной файл
sed "s/# deb-src/deb-src/" /etc/apt/sources.list.backup > /etc/apt/sources.list

Включаем пересылку IPv4 пакетов, записывая настройку в конфигурационный файл sysctl

echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/00-amnezia.conf

Перезагружаем систему для применения изменений
reboot

Создаём директорию awg в домашней папке и переходим в неё
mkdir -p ~/awg && cd ~/awg

Добавляем PPA репозиторий Amnezia без подтверждения и устанавливаем пакет amneziawg
add-apt-repository -y ppa:amnezia/ppa
apt install -y amneziawg

Проверяем загруженные модули ядра, фильтруя по “amnesia”, загружаем модуль ядра amneziawg и снова проверяем загруженные модули
lsmod | grep amnesia
modprobe amneziawg && lsmod | grep amnezia

Устанавливаем стандартные утилиты и Python 3 с pip, устанавливаем Python-библиотеки для генерации QR-кодов и обработки изображений, обновляемся и контрольно переходим в папку awg
apt install curl wget python3 python3-pip -y
apt install python3-qrcode python3-pil -y
apt update -y && apt upgrade -y

cd ~/awg

запомните команду выше, в данной директории будут находиться конфигурационные файлы клиентов, к ним чуть позже, продолжим

Загружаем Python-скрипт awgcfg.py по ссылке
wget -O awgcfg.py https://gist.githubusercontent.com/remittor/8c3d9ff293b2ba4b13c367cc1a69f9eb/raw/awgcfg.py

Запускаем скрипт для создания конфигурационного файла с указанием подсети и порта (можете указать свои)
python3 awgcfg.py --make /etc/amnezia/amneziawg/awg0.conf -i 192.168.3.0/24 -p 44300

Запускаем скрипт с опцией создания
python3 awgcfg.py --create

Добавляем пользователя через скрипт
python3 awgcfg.py -a user
python3 awgcfg.py -c -q

Включаем и запускаем системный сервис, 
systemctl enable --now awg-quick@awg0
systemctl restart awg-quick@awg0.service

Настраиваем фаервол (можно не настраивать)

После установки AWG сервера, в файл конфигурации iptables автоматически добавляется минимальный набор правил. Но, как показала практика, при перезагрузке сервера, данные правила добавляются повторно, происходит дублирование. Для исключения подобной ситуации, открываем на редактирование настройки конфигурации AWG

nano /etc/amnezia/amneziawg/awg0.conf

и комментируем правила создания правил в iptables

Устанавливаем

sudo apt install iptables iptables-persistent

В моем случае запускать отдельно службу фаервола и прописывать в автозагрузку не требовалось, но рекомендую всегда проверять статус

systemctl status iptables 

если служба не запущена

systemctl start iptables

для перезагрузки службы

systemctl restart iptables

сохранение правил

netfilter-persistent save

Если есть желание настроить с нуля, очищаем все листы, я не стал, а добавил настройки под себя к имеющимся

iptables -F
iptables -t nat -F

Позволяем входящий трафик от уже установленных соединений (ESTABLISHED) и связанных с ними потоков (RELATED), обеспечивая ответы на исходящие запросы сервера без открытия новых портов

sudo iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Следующее правило у меня было настроено при установке AWG сервера

iptables -A INPUT -p udp --dport 44300 -m conntrack --ctstate NEW -j ACCEPT

sudo iptables -A INPUT -s IP_адрес_источника_подключения -p tcp --dport 22 -j ACCEPT
можно указать несколько правил с разными адресами подключения

sudo iptables -P INPUT DROP

Настраиваем правила трафика туннелирования, аккуратно с названиями интерфейсов, они могут отличаться, я использовал правила настроенные при установке AWG сервера
iptables -A FORWARD -i eth0 -o awg0 -j ACCEPT
iptables -A FORWARD -i awg0 -o eth0 -j ACCEPT

Следующее правило не критично, но желательно

sudo iptables -P FORWARD DROP

Настраиваем NAT, я использовал правило настроенное при установке AWG сервера

sudo iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source IP_вашего_сервера

netfilter-persistent save

systemctl restart iptables

Проверяем

sudo iptables -L -n -v
sudo iptables -t nat -L -n -v
sudo iptables -L FORWARD -n -v

awg show
systemctl status awg-quick@awg0.service

Набор команд для проверки
awg show
systemctl status awg-quick@awg0.service
sudo iptables -L -n -v
sudo iptables -t nat -L -n -v
sudo iptables -L FORWARD -n -v

sudo iptables -D INPUT 4

iptables -F
iptables -t nat -F

Если необходимо удалить какое-либо правило, выводим список с номерами

sudo iptables -L --line-numbers

и удаляем конкретное правило в конкретной цепочке

sudo iptables -D INPUT 3

 

 

В конце вернусь к конфигурационному файлу клиента. Переходим в паку с файлом

cd ~/awg

командой

dir

посмотреть содержимое, файл конфигурации как правило называется user.conf его можно выгрузить или открыть для редактирования 

nano user.conf

скопировать содержимое и вставить в txt файл на компьютере для дальнейшей загрузки в Keenetic (мой случай). Но есть нюанс, при копировании файл содержал строку 

AllowedIPs = …. с длиннющим списком сетей оборванным в середине. Роутер не понял к чему это, замените строку на

AllowedIPs = 0.0.0.0/0

Leave a Reply