WireGuard — это бесплатное программное приложение с открытым исходным кодом и протокол связи, который реализует методы виртуальной частной сети для создания безопасных соединений «точка-точка» в маршрутизируемых или мостовых конфигурациях.

1. Настройка соединения P-T-P.

1.1. Настраиваем сначала соединение типа Point-to-Point.

2. Настройка главного сервера.

2.1. Включаем Forwarding:

# echo "net.ipv4.ip_forward=1" | tee -a /etc/sysctl.d/99-sysctl.conf
# echo "net.ipv4.conf.all.forwarding=1" | tee -a /etc/sysctl.d/99-sysctl.conf
# echo "net.ipv6.conf.all.forwarding=1" | tee -a /etc/sysctl.d/99-sysctl.conf
# sysctl -p

2.2. Добавим подмену ip адреса:

# firewall-cmd --permanent --zone=public --add-masquerade
# firewall-cmd --reload

2.3. Добавляем в файл конфигурации /etc/wireguard/wg0.conf в параметр AllowIPs подсеть со стороны второго сервера. Например второй сервер связан с подсетью 172.16.0.0/24. Тогда запись будет следующая:

AllowedIPs = 172.16.30.2/32, 172.16.0.0/24

2.4. И в конечном итоге он получается такой:

# nano /etc/wireguard/wg0.conf

[Interface]
Address = 172.16.30.1/24
# Отключаем перезапись конфига клиентом
SaveConfig = false
ListenPort = 41321
# Private Key основного сервера
PrivateKey = SMWUid073s000000000tvGgeN/Ow4BX9gsLqXFY=

[Peer]
# Public Key второго узла
PublicKey = vQyGpGrx00000000000000000cTieq/yIJJ3Y=
AllowedIPs = 172.16.30.2/32, 172.16.0.0/24

2.5. Запускаем наш интерфейс:

# wg-quick up wg0

2.6. Смотрим настройки интерфейса:

# wg show wg0

interface: wg0
  public key: RAalpQD0000Z7fP5L000000000006ugguVupB8ig=
  private key: (hidden)
  listening port: 41321

2.7. Проверяем, появился ли интерфейс, и доступен ли порт:

# ip a
# ss -nltup

3. Настройка второстепенного сервера.

3.1. Установка производится аналогичным образом.

3.2. Включаем Forwarding:

# echo "net.ipv4.ip_forward=1" | tee -a /etc/sysctl.d/99-sysctl.conf
# echo "net.ipv4.conf.all.forwarding=1" | tee -a /etc/sysctl.d/99-sysctl.conf
# echo "net.ipv6.conf.all.forwarding=1" | tee -a /etc/sysctl.d/99-sysctl.conf
# sysctl -p

3.3. Добавим подмену ip адреса:

# firewall-cmd --permanent --zone=public --add-masquerade
# firewall-cmd --reload

3.4. И так же добавляем в пире в параметр AllowIPs подсеть со стороны основного сервера. Например основной сервер связан с подсетью 172.16.5.0/24. Тогда запись будет следующая:

AllowedIPs = 172.16.30.2/32, 172.16.5.0/24

3.5. И в конечном итоге он получается такой:

# nano /etc/wireguard/wg0.conf

[Interface]
Address = 172.16.30.2/24
SaveConfig = true
ListenPort = 41321
# Private Key второго узла
PrivateKey = SNtUeP3cn7Y26zy0000Z00000000Di4MC1nl8AoR28=

[Peer]
# Public Key основного сервера
PublicKey = RAalpQDMWkMZ7f0000sz00000000000gguVupB8ig=
AllowedIPs = 172.16.30.1/32, 172.16.5.0/24
# Внешний IP основного сервера
Endpoint = 93.78.115.123:41321

3.6. Запускаем наш интерфейс командой управления wireguard:

# wg-quick up wg0

3.7. Далее проверяем канал с первого сервера:

# ping 172.16.30.2 -c 3

3.8. Поднимаем интерфейс на втором сервере:

# ping 172.16.30.1 -c 3

3.9. И проверяем маршрутизацию пропинговав любой адрес с противоположной стороны. Если пинги идут, то останется только настроить маршруты на основных роутерах в подсетях 172.16.0.0/24 и 172.16.5.0/24 указав в качестве шлюзов ip адреса данных серверов (в каждой подсети свой шлюз), чтобы все устройства могли видеть остальных.