В статье описана настройка клиента и сервера.

На момент осени 2024 года не получается подключиться к зарубежным серверам через российских провайдеров домашнего интернета. Однако, можно соединять сервера, находящиеся в датацентрах или цепляться к серверам, находящимся в датацентрах РФ.


Часть 1. Настройка wireguard-сервера

1. Протокол wireguard поддерживается "из коробки" в версиях 14.x, в конфиг ядра добавлять ничего не надо. 

2. Сама программа находится в /usr/ports/net/wireguard-tools. Для удобства дальнейшего удобства отметьте опцию WGQUICK.

3. В /etc/rc.conf добавьте строки
wireguard_enable="YES"
wireguard_interfaces=”wg0”

Перейдите в каталог /usr/local/etc/wireguard и создайте ключи для сервера и клиентов:
# cd /usr/local/etc/wireguard
# wg genkey > wg-server.private
# wg pubkey < wg-server.private > wg-server.public

# wg genkey > wg-client1.private
# wg pubkey < wg-client1.private > wg-client1.public

# wg genkey > wg-client2.private
# wg pubkey < wg-client2.private > wg-client2.public
...

Создаём конфиг сервера и пишем туда:
# edit wg0.conf

[Interface]
Address = 192.168.80.1/24
PrivateKey = содержимое wg-server.private
ListenPort = 53820

# Client1
[Peer]
PublicKey = содержимое wg-client1.public
AllowedIPs = 192.168.80.2
Endpoint = ip-адрес-wg-сервера:53820

# Client2
[Peer]
PublicKey = содержимое wg-client2.public
AllowedIPs = 192.168.80.3
Endpoint = ip-адрес-wg-сервера:53820
...

Запускаем сервер
# cd /usr/local/etc/rc.d
# ./wireguard start

Если вам надо через ваш wireguard-сервер выйти в интернет, то необходимо:

В /etc/rc.conf добавить строку gateway_enable="YES"

Если у вас фаерволом стоит packet filter, то в /etc/pf.conf добавьте 
 nat on vtnet0 from wg0:network to any -> (vtnet0)


Часть 2. Настройка wireguard-клиента

 Выполните 2 и 3-й пункты из первой части.

Создаём конфиг клиента и пишем туда:
# cd /usr/local/etc/wireguard
# edit wg0.conf

[Interface]
PrivateKey = содержимое wg-client1.private
Address = 192.168.80.2/24 # Это если вам не нужен доступ в интернет через этот сервер
Address = 0.0.0.0/8 # Это если нужен доступ в интернет через этот сервер
DNS = 1.1.1.1,8.8.8.8 # или любые другие DNS-сервера

[Peer]
PublicKey = содержимое wg-server.public
AllowedIPs = 192.168.80.0/24
Endpoint = ip-адрес-wg-сервера:53820
PersistentKeepalive = 600

Запускаем клиента
# cd /usr/local/etc/rc.d
# ./wireguard start

Проверяем: ping 192.168.80.1


Команды wg

wg show - посмотреть подключенных пользователей.