Это вопрос не про создание клиентских пиров и не про генерацию ключей. Вопрос про запуск сервиса при загрузке операционной системы.
В последнем релизе 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? Мне такой способ найти пока не удалось.