Сборка и установка AmneziaWG на Debian из исходного кода
AmneziaWG состоит из двух частей: модуля ядра Linux, утилит awg и awg-quick для управления туннелями. В официальном репозитории Debian отсутствует AmneziaWG. Для установки можно использовать сторонний репозиторий ppa, но я покажу в статье полностью ручной процесс сборки. Это даст контроль и безопасность, ведь неизвестно, собран ли в репозитории пакет из исходного кода с github'а или нет.
В статье принято следующее обозначение: если перед командой находится символ $, её можно выполнять от имени обычного пользователя; если перед командой находится символ #, её необходимо выполнять от имени пользователя root или с использованием sudo.
<- выполнять от обычного пользователя<- выполнять от root-пользователя или с его привилегиями через sudo1. Подготовка к сборке и установке AmneziaWG
1.1. Установка необходимых утилит
Устанавливаем утилиту git для клонирования репозиториев с github, компилятор gcc, сборщик make и необходимые библиотеки
apt install git make gcc build-essential1.2. Установка заголовков ядра
Для сборки модуля необходимы заголовки ядра Linux установленной системы
apt install linux-headers-$(uname -r)Чтобы заголовки ядра автоматически загружались при обновлении ядра, можно установить мета-пакет с указанием архитектуры компьютера
apt install linux-headers-amd642. Модуль ядра AmneziaWG
2.1. Загрузка исходного кода модуля ядра AmneziaWG
Создаем для удобства каталог git в домашней директории пользователя и переходим в него
mkdir -p ~/git && cd ~/gitКлонируем репозиторий amneziawg-linux-kernel-module
git clone https://github.com/amnezia-vpn/amneziawg-linux-kernel-module.git
2.2. Сборка и установка модуля ядра через DKMS
Заходим под root-пользователем или выполняем команды через sudo
sudo -i2.2.1. Установка DKMS
Dynamic Kernel Module Support (DKMS) используется для того чтобы при обновлении ядра Linux до новой версии, происходила автоматическая сборка дополнительных моделей ядра из исходных кодов.
Устанавливаем DKMS
apt install dkmsДожидаемся окончания установки.
2.2.2. Подготовка исходного кода для DKMS
Создаем каталог amneziawg-1.0.0 в каталоге /usr/src/
mkdir -p /usr/src/amneziawg-1.0.0/Переходим в каталог клонированного репозитория amneziawg-linux-kernel-module
cd amneziawg-linux-kernel-moduleКопируем содержимое каталога src в каталог /usr/src/amneziawg-1.0.0/ который ранее создали
cp -r src/* /usr/src/amneziawg-1.0.0/
2.2.3. Сборка и установка модуля ядра
Добавляем модуль ядра amneziawg в DKMS
dkms add -m amneziawg -v 1.0.0Собираем модуль ядра amneziawg через DKMS
dkms build -m amneziawg -v 1.0.0Устанавливаем модуль ядра amneziawg через DKMS
dkms install -m amneziawg -v 1.0.0
Модуль ядра amneziawg теперь будет автоматически собиратся при каждом обновлении ядра Linux.
2.3. Сборка и установка модуля ядра вручную
2.3.1. Сборка модуля ядра
Переходим в каталог клонированного репозитория amneziawg-linux-kernel-module
cd amneziawg-linux-kernel-moduleПереходим в каталог src
cd srcСобираем модуль ядра amneziawg
makeДожидаемся окончания сборки, если все успешно будет выведено true.
2.3.2. Установка модуля ядра
Устанавливаем модуль ядра amneziawg
make installЗагружаем модуль ядра amneziawg
modprobe amneziawgПроверяем что модуль amneziawg загружен
lsmod | grep amneziawg3. Утилиты awg и awg-quick для управления AmneziaWG
Для управления собранным модулем ядра AmneziaWG необходимы утилиты с той же модификацией протокола WireGuard, что и модуль ядра.
Утилиты имеют имена awg, awg-quick и они по командам, способом управления аналогичны утилитам wg, wg-quick из WireGuard.
3.1. Загрузка исходного кода утилит AmneziaWG
Создаем для удобства каталог git в домашней директории пользователя и переходим в него
mkdir -p ~/git && cd ~/gitКлонируем репозиторий amneziawg-tools
git clone https://github.com/amnezia-vpn/amneziawg-tools.git
3.2. Сборка утилит awg и awg-quick
Переходим в каталог клонированного репозитория amneziawg-tools
cd amneziawg-toolsПереходим в каталог src
cd srcЗапускаем процесс сборки утилит awg и awg-quick
make
Дожидаемся окончания сборки.
3.3. Установка утилит awg и awg-quick
Заходим под root-пользователем или выполняем команды через sudo
sudo -iУстанавливаем утилиты awg и awg-quick
sudo make installmake install
- в каталог /usr/bin/ будут скопированы утилиты awg и awg-quick;
- в каталог /usr/share/bash-completion/completions/ будут скопированы скрипты для bash-окружения;
- в каталог /usr/lib/systemd/system/ будут скопированы файлы для работы AmneziaWG в качестве службы systemd.
4. Конфигурация AmneziaWG и перенос файлов WireGuard
В AmneziaWG каталог с конфигурационными файлами находится по пути /etc/amnezia/amneziawg/ и утилита awg-quick будет искать там файлы для создания туннеля.
Если необходимо скопировать конфигурационные файлы WireGuard в AmneziaWG используем следующею команду
cp /etc/wireguard/*.conf /etc/amnezia/amneziawg/Переходим в каталог конфигурации AmneziaWG
cd /etc/amnezia/amneziawg/Создадим, например, файл конфигурации с именем awg0-client.conf или откроем любой из перенесенных файлов конфигураций
nano awg0-client.confНастройка, конфигурация и управление AmneziaWG происходит аналогично Wireguard. Можно использовать статью Настройка VPN сервера WireGuard в Linux (Debian/Ubuntu), только вместо команды wg использовать awg, a вместо wg-quick использовать awg-quick.
5. Удаление AmneziaWG
Если возникнет необходимость удалить AmneziaWG, нужно удалить модуль ядра и утилиты с их файлами.
Удаляем модуль ядра amneziawg через DKMS
dkms remove -m amneziawg -v 1.0.0 --allУдаляем каталог /usr/src/amneziawg-1.0.0/
rm -rf /usr/src/amneziawg-1.0.0/Утилиты awg и awg-quick устанавливались простым копированием, поэтому удаляем их с их файлами по списку
rm -v /usr/bin/awg /usr/share/man/man8/awg.8 /usr/share/bash-completion/completions/awg /usr/bin/awg-quick /usr/share/man/man8/awg-quick.8 /usr/share/bash-completion/completions/awg-quick /usr/lib/systemd/system/awg-quick.target /usr/lib/systemd/system/awg-quick@.service