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

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

su -

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/

Копируем скрипты загрузки исходных кодов ядра Linux для модуля AmneziaWG в каталог /usr/src/amneziawg-1.0.0/

install -m 755 kernel-tree-scripts/*-sources.sh /usr/src/amneziawg-1.0.0/

Копирование через утилиту install позволяет сразу установить необходимые права для выполнения скриптов.

В консоли 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/”, “install -m 755 kernel-tree-scripts/*-sources.sh /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.

Через встроенный скрипт он будет предварительно скачивать исходный код ядра Linux, а после сборки удалит скачанные и временные файлы.

2.3. Сборка и установка модуля ядра вручную

2.3.1. Загрузка исходного кода ядра Linux

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

Загружаем исходный код ядра Linux.

apt install linux-source

linux-source — это мета-пакет который включает исходный код ядра Linux текущей системы.

Исходный код будет загружен в каталог /usr/src/ в формате tar.xz архива.

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

cd /usr/src/

Находим имя архива с исходным кодом ядра (оно будет иметь имя в зависимости от версии ядра установленной системы)

ls | grep linux-source

Извлекаем содержимое архива (в моем случае это linux-source-6.1.tar.xz)

tar -xJf linux-source-6.1.tar.xz

2.3.2. Сборка модуля ядра

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

cd amneziawg-linux-kernel-module

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

cd src

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

ln -s /usr/src/linux-source-<версия ядра> kernel

Вместо <версия ядра> необходимо указать версию ядра Linux установленной системы.

Например, в моем случае это версия 6.1 и команда будет выглядеть следующим образом:

ln -s /usr/src/linux-source-6.1 kernel

Собираем модуль ядра amneziawg

make

Дожидаемся окончания сборки, если все успешно будет выведено true.

2.3.3. Установка модуля ядра

Устанавливаем модуль ядра 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

su -

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

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

Удаляем каталог /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