Недоступная подсеть маршрутизатора MikroTik через WireGuard на VPS

Вопрос или проблема

Моя цель – настроить соединение WireGuard от моего домашнего роутера к VPS и подключаться снаружи через это соединение к моим различным домашним сетям (здесь изображена только одна сеть).

Я использую роутер MikroTik. Он подключается к VPS через следующие правила/конфигурацию:

/interface/wireguard/export
/interface wireguard
add listen-port=36857 mtu=1420 name=wg-xxx-it
add disabled=yes listen-port=13231 mtu=1420 name=wireguard
/interface wireguard peers
add allowed-address=0.0.0.0/0 client-address=192.168.7.1/24 endpoint-address=wg.xxx-it.de endpoint-port=51820 interface=wg-xxx-it name=peer-wg-xxx-it persistent-keepalive=30m preshared-key="xxxx" public-key=\
    "xxxx"

/ip address
add address=192.168.0.1/24 comment="xxx-net" interface="bridge" network=192.168.0.0
add address=192.168.7.1/24 comment=VPN interface=wg-xxx-it network=192.168.7.0

Соответствующая конфигурация для (мобильного) клиента выглядит следующим образом:

[Interface]
PrivateKey = xxx
Address = 192.168.7.10/24
DNS = 192.168.7.1

[Peer]
PublicKey = xxx
PresharedKey = xxx
AllowedIPs = 192.168.7.0/24, 192.168.0.0/24
PersistentKeepalive = 0
Endpoint = wg.xxx-it.de:51820

Когда роутер и мой клиент подключаются к VPS через WireGuard, они могут видеть друг друга (ping, traceroute). Это здорово. Роутер получает IP 192.168.7.1/24, клиент 192.168.7.10/24, как я и хотел.

Однако сейчас я сталкиваюсь с трудностями при подключении с клиента к другим частям домашней сети. Что касается сервера WireGuard, я использую wg-easy с следующими переменными окружения в конфигурации docker-compose:

environment:
  - WG_ALLOWED_IPS=192.168.7.0/24, 192.168.0.0/24
  - WG_DEFAULT_ADDRESS=192.168.7.x
  - WG_DEFAULT_DNS=192.168.7.1
  - WG_POST_UP=ip route add 192.168.0.0/24 via 192.168.7.1
  - WG_POST_DOWN=ip route rm 192.168.0.0/24 via 192.168.7.1

Когда я выполняю traceroute с клиента на какое-либо устройство в домашней сети, я оказываюсь в бесконечных переходах (недоступно).

Мне кажется, что маршрут на VPS не работает правильно, однако маршрут существует:

xxx:/app# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         docker-xx-xxxxx 0.0.0.0         UG    0      0        0 eth0
10.8.0.0        *               255.255.255.0   U     0      0        0 wg0
172.28.0.0      *               255.255.0.0     U     0      0        0 eth0
192.168.0.0     192.168.7.1     255.255.255.0   UG    0      0        0 wg0
192.168.7.1     *               255.255.255.255 UH    0      0        0 wg0
192.168.7.10    *               255.255.255.255 UH    0      0        0 wg0

Не хватает какой-либо конфигурации на роутере или на VPS?

Вы уже проверили настройки вашего брандмауэра?

Добавьте правило вроде этого и попробуйте достучаться до других устройств в вашей сети.

Где угодно на eth0 РАЗРЕШИТЬ FWD ваш_wireguard_VLan на wg0

Ответ или решение

Для решения проблемы с недоступной подсетью на вашем MikroTik маршрутизаторе через WireGuard на VPS, нужно учесть несколько ключевых аспектов настройки и конфигурации как на стороне маршрутизатора, так и на стороне VPS. Рассмотрим ваш случай детально, опираясь на предоставленную информацию.

1. Модель и архитектура вашей сети

Вы настроили WireGuard на MikroTik и используете VPS с Docker-контейнером (wg-easy) в качестве WireGuard-сервера. У вас настроены следующие IP-адреса:

  • MikroTik: 192.168.0.1/24 для локальной сети (xxx-net).
  • WireGuard: 192.168.7.1/24 для VPN.
  • Клиент: 192.168.7.10/24.

2. Верный маршрут и спецификация IP

Судя по вашему описанию, маршруты на VPS настроены корректно:

  • Подсеть 192.168.0.0/24 доступна через 192.168.7.1, что указывает на то, что VPS «знает» о маршруте к внутренней сети вашего MikroTik.

Тем не менее, проблема может заключаться в правилах маршрутизации, возникших в результате конфигурации брандмауэра. Необходимо убедиться, что ваши правила NAT и маршрутизации позволяют трафику проходить между VPN и локальной сетью.

3. Проверка брандмауэра

Проверка настроек брандмауэра на MikroTik и VPS является критически важной. Вам необходимо добавить конкретные правила для разрешения трафика:

На MikroTik:

/ip firewall filter add chain=forward protocol=ip src-address=192.168.7.0/24 dst-address=192.168.0.0/24 action=accept comment="Разрешить трафик с WireGuard к локальной сети"

На VPS, в зависимости от используемой операционной системы, можно использовать следующие команды для iptables:

# Разрешить пересылку пакетов
iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o wg0 -m state --state ESTABLISHED,RELATED -j ACCEPT

4. Настройка маршрутов и правил NAT на VPS

Если вы используете Docker, вам может потребоваться настроить NAT между интерфейсами. Убедитесь, что пакеты пересылаются из WireGuard-интерфейса в вашу локальную сеть через NAT.

Дополните вашу Docker-композицию следующими переменными окружения:

- WG_POST_UP="iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE"
- WG_POST_DOWN="iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE"

5. Перезапуск сервисов и очередная проверка соединения

После выполнения всех вышеперечисленных шагов необходимо перезапустить WireGuard на обеих сторонах (MikroTik и VPS) и убедиться, что все маршруты и разрешения активны. Используйте команды ping и traceroute для проверки доступности устройств как внутри локальной сети, так и между клиентом и MikroTik.

Заключение

Следуя этим рекомендациям, вы должны устранить проблему с недоступной подсетью. Помните, что важную роль играет строгая настройка брандмауэра. Если проблема сохраняется, имеет смысл обратить внимание на журналы доступа и ошибки в MikroTik и VPS для более глубокого анализа. Удачи в настройке вашей сети!

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

Капча загружается...