Статья составлена и проверена на 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 без подтверждения и устанавливаем пакет amneziawgadd-apt-repository -y ppa:amnezia/ppaapt install -y amneziawg
Проверяем загруженные модули ядра, фильтруя по “amnesia”, загружаем модуль ядра amneziawg и снова проверяем загруженные модулиlsmod | grep amnesiamodprobe amneziawg && lsmod | grep amnezia
Устанавливаем стандартные утилиты и Python 3 с pip, устанавливаем Python-библиотеки для генерации QR-кодов и обработки изображений, обновляемся и контрольно переходим в папку awgapt install curl wget python3 python3-pip -yapt install python3-qrcode python3-pil -yapt 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 userpython3 awgcfg.py -c -q
Включаем и запускаем системный сервис, systemctl enable --now awg-quick@awg0systemctl 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 -Fiptables -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 ACCEPTiptables -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 -vsudo iptables -t nat -L -n -vsudo iptables -L FORWARD -n -v
awg showsystemctl status awg-quick@awg0.service
Набор команд для проверкиawg showsystemctl status awg-quick@awg0.servicesudo iptables -L -n -vsudo iptables -t nat -L -n -vsudo iptables -L FORWARD -n -v
sudo iptables -D INPUT 4
iptables -Fiptables -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