Задача была следующей: соединить между собой две сети, не имеющие «белого» 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, добавить новое соединение:
Далее добавляем 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.
Итого — мы имеем доступ из двух этих сетей друг к другу.