notby.NET Logo

Сборка и установка AmneziaWG на Debian из исходного кода

AmneziaWG состоит из двух частей: модуля ядра Linux, утилит awg и awg-quick для управления туннелями. В официальном репозитории Debian отсутствует AmneziaWG. Для установки можно использовать сторонний репозиторий ppa, но я покажу в статье полностью ручной процесс сборки. Это даст контроль и безопасность, ведь неизвестно, собран ли в репозитории пакет из исходного кода с github'а или нет.

В статье принято следующее обозначение: если перед командой находится символ $, её можно выполнять от имени обычного пользователя; если перед командой находится символ #, её необходимо выполнять от имени пользователя root или с использованием sudo.

<- выполнять от обычного пользователя
<- выполнять от root-пользователя или с его привилегиями через sudo

1. Подготовка к сборке и установке AmneziaWG

1.1. Установка необходимых утилит

Устанавливаем утилиту git для клонирования репозиториев с github, компилятор gcc, сборщик make и необходимые библиотеки

apt install git make gcc build-essential

1.2. Установка заголовков ядра

Для сборки модуля необходимы заголовки ядра Linux установленной системы

apt install linux-headers-$(uname -r)

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

apt install linux-headers-amd64

2. Модуль ядра 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
Репозиторий amneziawg-linux-kernel-module скопирован с github командой “git clone https://github.com/amnezia-vpn/amneziawg-linux-kernel-module.git” в консоли Debian, выведены сообщения процесса клонирования репозитория

2.2. Сборка и установка модуля ядра через DKMS

Заходим под root-пользователем или выполняем команды через sudo

sudo -i

2.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/
В консоли Debian последовательно выполнены команды: “cd /home/user/git/”, “mkdir -p /usr/src/amneziawg-1.0.0/”, “cd amneziawg-linux-kernel-module”, “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 успешно собран и установлен при помощи DKMS в Debian, использовались следующие команды в терминале: “dkms add -m amneziawg -v 1.0.0”, “dkms build -m amneziawg -v 1.0.0”, “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 amneziawg

3. Утилиты 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
Репозиторий amneziawg-tools скопирован с github командой “git clone https://github.com/amnezia-vpn/amneziawg-tools.git” в консоли Debian, выведены сообщения процесса клонирования репозитория

3.2. Сборка утилит awg и awg-quick

Переходим в каталог клонированного репозитория amneziawg-tools

cd amneziawg-tools

Переходим в каталог src

cd src

Запускаем процесс сборки утилит awg и awg-quick

make
В консоли Debian последовательно выполнены команды: “cd amneziawg-tools”, “cd src”, “make”. Показан процесс сборки утилиты из исходного кода.

Дожидаемся окончания сборки.

3.3. Установка утилит awg и awg-quick

Заходим под root-пользователем или выполняем команды через sudo

sudo -i

Устанавливаем утилиты awg и awg-quick

sudo make install
make install
Утилиты awg и awg-quick успешно установлены при помощи команды “sudo make install” в терминале операционной системе Debian, выведен список установленных файлов и их пути
  • в каталог /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