Соединяем две локальные сети через 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
[Interface]
Address = 10.36.36.1/24,fd42:24:24::1/64
ListenPort = 54073
PrivateKey = (hidden)
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;
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;

### Client router-mikrotik
[Peer]
PublicKey = <...skipped...>
PresharedKey = <...skipped...>
AllowedIPs = 10.36.36.2,192.168.0.0/24,fd42:24:24::2/128

### Client router-zyxel
[Peer]
PublicKey = <...skipped...>
PresharedKey = <...skipped...>
AllowedIPs = 10.36.36.3,192.168.2.0/24,fd42:24:24::3/128

И интерфейс:

root@vpn-vps:~# wg show wg0
interface: wg0
  public key: <...skipped...>
  private key: (hidden)
  listening port: 54073

peer: <...skipped...>
  preshared key: (hidden)
  endpoint: xx.xx.xx.xx:21371
  allowed ips: 10.36.36.2/32, 192.168.0.0/24, fd42:24:24::2/128
  latest handshake: 1 minute, 6 seconds ago
  transfer: 231.14 MiB received, 11.05 GiB sent

peer: <...skipped...>
  preshared key: (hidden)
  endpoint: yy.yy.yy.yy:56043
  allowed ips: 10.36.36.3/32, 192.168.2.0/24, fd42:24:24::3/128
  latest handshake: 1 minute, 5 seconds ago
  transfer: 11.02 GiB received, 230.29 MiB sent

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

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

net.ipv4.ip_forward=1

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

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


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


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


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

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

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


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


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


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


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

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

Итого — мы имеем доступ из двух этих сетей друг к другу. С момента настройки и до написания записи прошло около месяца, надеюсь, я ничего не забыл по пути. Но, как обычно, если есть вопрос, можно его написать в комментариях. Всем спасибо. 🙂

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *