bigov
@bigov
сисадмин, программист

FreeBSD v.14 — как настроить запуск сервиса wireguard?

Это вопрос не про создание клиентских пиров и не про генерацию ключей. Вопрос про запуск сервиса при загрузке операционной системы.

В последнем релизе FreeBSD мета-пакет приложений wireguard признан устаревшим, небезопасным и с начала этого года больше не поддерживается. В качестве рекомендуемого решения предложено использовать модуль ядра `if_wg.ko`` и драйвер ``wg``.

Чтобы все заработало "искаробки" можно использовать конфиги (все работает как надо):

# cat /boot/loader.conf | grep wg
# Загрузка модуля ядра при старте системы
if_wg_load="YES"
#
# cat /etc/rc.conf | grep wg
# включение интерфейса и настройка адреса 
cloned_interfaces="wg"
ifconfig_wg0="inet 192.168.68.1 netmask 255.255.255.240"
#
# cat /etc/wireguard/wg0.conf
# Конфигурационный файл (типовой)
[Interface]
PrivateKey = ****************************************=
ListenPort = 45045

[Peer]
# HomeDesktop
PublicKey = *****************************************=
AllowedIPs = 192.168.68.2/32

[Peer]
# HomePad
PublicKey = ...


Но мне не удалось найти в документации как через "rc.conf" загрузить конфигурационный файл интерфейса (с ключами и пирами). Поэтому я использую хук devd:

# cat /etc/devd/wireguard.conf
notify 0 {
    match "system"    "IFNET";
    match "type"      "LINK_UP";
    media-type        "unknown";
    action ". /etc/rc.subr
            . /etc/network.subr
            load_rc_config network
            if autoif $subsystem && [ -r /etc/wireguard/$subsystem.conf ]
            then
                    grep -vE '^[[:space:]]*(Address|DNS|MTU|Table|PreUp|PostUp|PreDown|PostDown)[[:space:]]*=' /etc/wireguard/$subsystem.conf |
                            wg setconf $subsystem /dev/stdin
            fi";
};


Способ работает, но очевидно, что написание такого хука для загрузки конфигурации wg, довольно сложно повторить самостоятельно, это неудобно.

ВОПРОС: есть ли более простой способ загрузить конфигурацию интерфейса, например указав параметры в rc.conf? Мне такой способ найти пока не удалось.
  • Вопрос задан
  • 472 просмотра
Решения вопроса 1
bigov
@bigov Автор вопроса
сисадмин, программист
Можно установить только wireguard-tool. Он позволит выполнить настройки в "традиционном" стиле, без применения хука.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы