Соединяем две локальные сети через VPS с помощью VPN Wireguard

Задача была следующей: соединить между собой две сети, не имеющие «белого» IP-адреса. Одна сеть выходит в интернет через роутер Mikrotik, вторая сеть выходит через Zyxel Speedster. В качестве связующего звена было решено использовать VPS с установленным Wireguard VPN.

Получилась такая схема:

LAN0 (192.168.0.0/24) -> Mikrotik -> Internet -> VPS <- Internet <- Zyxel <- LAN1 (192.168.2.0/24)

1. Настраиваем Wireguard на VPS

Подробно останавливаться на установке Wireguard , наверное, большого смысла нет, инструкций по установке более чем достаточно. Покажу лишь конфиг:

root@vpn-vps:~# cat /etc/wireguard/wg0.conf_x000D_[Interface]_x000D_Address = 10.36.36.1/24,fd42:24:24::1/64_x000D_ListenPort = 54073_x000D_PrivateKey = (hidden)_x000D_PostUp = iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;_x000D_PostDown = iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE;_x000D__x000D_### Client router-mikrotik_x000D_[Peer]_x000D_PublicKey = <...skipped...>_x000D_PresharedKey = <...skipped...>_x000D_AllowedIPs = 10.36.36.2,192.168.0.0/24,fd42:24:24::2/128_x000D__x000D_### Client router-zyxel_x000D_[Peer]_x000D_PublicKey = <...skipped...>_x000D_PresharedKey = <...skipped...>_x000D_AllowedIPs = 10.36.36.3,192.168.2.0/24,fd42:24:24::3/128_x000D_

И интерфейс:

root@vpn-vps:~# wg show wg0_x000D_interface: wg0_x000D_ public key: <...skipped...>_x000D_ private key: (hidden)_x000D_ listening port: 54073_x000D__x000D_peer: <...skipped...>_x000D_ preshared key: (hidden)_x000D_ endpoint: xx.xx.xx.xx:21371_x000D_ allowed ips: 10.36.36.2/32, 192.168.0.0/24, fd42:24:24::2/128_x000D_ latest handshake: 1 minute, 6 seconds ago_x000D_ transfer: 231.14 MiB received, 11.05 GiB sent_x000D__x000D_peer: <...skipped...>_x000D_ preshared key: (hidden)_x000D_ endpoint: yy.yy.yy.yy:56043_x000D_ allowed ips: 10.36.36.3/32, 192.168.2.0/24, fd42:24:24::3/128_x000D_ latest handshake: 1 minute, 5 seconds ago_x000D_ transfer: 11.02 GiB received, 230.29 MiB sent_x000D_

На что здесь нужно обратить внимание? На разрешённые подсети в параметрах allowed-ips.

Также не лишним будет проверить, что в /etc/sysctl.conf раскомментирован форвардинг пакетов:

net.ipv4.ip_forward=1

2. Настраиваем Mikrotik

В Mikrotik RouterOS Wireguard поддерживается «из коробки». Для настройки нужно зайти в раздел Wireguard, добавить новое соединение:


Соединяем две локальные сети через VPS с помощью VPN Wireguard

Далее добавляем peer:


Соединяем две локальные сети через VPS с помощью VPN Wireguard

И правило в маршруты для доступа в подсеть LAN1:


Соединяем две локальные сети через VPS с помощью VPN Wireguard

После этого роутер Microtik будет соединяться с VPN сервером, если мы захотим из сети 192.168.0.0/24 пойти на адреса сети 192.168.2.0/24

3. Настраиваем Zyxel Speedster

Добавим соединение с Wireguard


Соединяем две локальные сети через VPS с помощью VPN Wireguard

и настроим peer. В отличие от Mikrotik’а в Zyxel это делается в одном месте:


Соединяем две локальные сети через VPS с помощью VPN Wireguard

После этого настраиваем маршрутизацию:


Соединяем две локальные сети через VPS с помощью VPN Wireguard

И в настройках файрвола разрешаем доступ из сети LAN0 и VPN:


Соединяем две локальные сети через VPS с помощью VPN Wireguard

На этом настройка закончена.

Теперь из сети 192.168.0.0/24 можно заходить на устройства в сети 192.168.2.0/24, также как и наоборот. При этом в интернет из этих сетей клиенты идут через основной выход, а не через VPN.

Итого — мы имеем доступ из двух этих сетей друг к другу.

EnglishRussianUkrainian