OVPN / WG и несколько альтернативных маршрутов через разные таблицы маршрутизации

RIP, OSFP, BGP, MPLS/VPLS
Gamber
Сообщения: 5
Зарегистрирован: 27 сен 2024, 18:28

OVPN / WG и несколько альтернативных маршрутов через разные таблицы маршрутизации

Сообщение Gamber »

Добрый день.
Помогите пожалуйста решить задачу.

На Mikrotik подняты OVPN и WG серверы.
Клиенты, которые к ним подключаются разделены на два типа - доверенные и с ограниченным доступом.
Для этого создано два Interface List - VPN Trusted Zone и VPN Limited Zone.

Для WG поднято два отдельных интерфейса (с разными подсетями), условно wg-trusted и wg-limited, каждый из которых включен в свой Interface List, VPN Trusted Zone и VPN Limited Zone, соответственно.

Для OVPN созданы отдельные профили, которые так же раскидывают клиентов в нужный Interface List.

Код: Выделить всё

name="ovpn-sirius-trusted-onlyone" local-address=172.20.1.1 remote-address=ovpn-sirius bridge-learning=default use-ipv6=no use-mpls=no use-compression=default use-encryption=yes only-one=yes change-tcp-mss=yes use-upnp=no address-list="" 
interface-list=VPN Trusted Zone on-up="" on-down="" 

name="ovpn-sirius-limited-onlyone" local-address=172.20.1.1 remote-address=ovpn-sirius bridge-learning=default use-ipv6=no use-mpls=no use-compression=default use-encryption=yes only-one=yes change-tcp-mss=yes use-upnp=no address-list="" 
interface-list=VPN Limited Zone on-up="" on-down="" 
В одной из удаленных сетей (условно Филиал 1) есть два интернет канала, на разных железках. На каждой из железок подняты WG и OVPN клиенты подключающиеся к Mikrotik. Клиенты (OVPN и WG) приходящие на серверную сторону от одной железки отнесены в доверенную зону, от другой - в зону с ограниченным доступом. Клиентам из других филиалов, нужно попадать в локальную сеть Филиал 1 (10.0.0.0/24), находящуюся за VPN клиентами на этих двух железках Филиал 1. Кто-то из клиентов других филиалов в доверенной зоне, кто-то в ограниченной. Клиенты из доверенной зоны могут попасть в локальную сеть Филиала 1 четырьмя маршрутами (через обе железки), из ограниченной только двумя (через одну из железок).

Создана дополнительная таблица маршрутизации - route-vpn-limited-zone.
Создано два правила Mangle в prerouting, первое помечает соединения для всех входящих интерфейсов отнесенных к Interface List - Limited, второе помечает маршрут для направления в таблицу - route-vpn-limited-zone.

Код: Выделить всё

chain=prerouting action=mark-connection new-connection-mark=route-vpn-limited-zone passthrough=yes connection-mark=no-mark in-interface-list=VPN Limited Zone log=no log-prefix="" 

chain=prerouting action=mark-routing new-routing-mark=route-vpn-limited-zone passthrough=yes connection-mark=route-vpn-limited-zone log=no log-prefix="" 
Создано правило маршрутизации, для того чтобы закрыть клиентов из Limited в соответствующей таблице:

Код: Выделить всё

dst-address=10.0.0.0/24 routing-mark=route-vpn-limited-zone action=lookup-only-in-table table=route-vpn-limited-zone 
Условно маршруты на Mikrotik в Филиал 1 выглядят так:

Код: Выделить всё

# - DST - GW - DISTANCE - TABLE
1 - 10.0.0.0/24 - 172.20.1.10 (OVPN - Trusted) - 1 - Main
2 - 10.0.0.0/24 - 172.20.1.20 (OVPN - Limited) - 2 - Main
3 - 10.0.0.0/24 - 172.21.1.10 (WG - Trusted) - 3 - Main
4 - 10.0.0.0/24 - 172.22.1.20 (WG - Limited) - 4 - Main
5 - 10.0.0.0/24 - 172.20.1.20 (OVPN - Limited) - 1 - route-vpn-limited-zone
6 - 10.0.0.0/24 - 172.22.1.20 (WG - Limited) - 2 - route-vpn-limited-zone
В Filters присутствует соответствующее правило:

Код: Выделить всё

chain=forward action=accept dst-address=10.0.0.0/24 log=no log-prefix="" 
C таблицей route-vpn-limited-zone вроде бы все OK.
Если удаленный клиент OVPN (пир WG), которому нужно попасть в 10.0.0.0/24 попадает в Interface List - VPN Limited Zone, он может ходить в эту сеть только через два маршрута - 5 и 6. При их неактивности маршруты из Main ему недоступны. Клиентам из Interface List - VPN Trusted Zone недоступны уже маршруты из таблицы route-vpn-limited-zone. Тут все логично.

А вот с Main проблема. Если удаленный клиент OVPN (пир WG) относится к доверенной зоне и направляется в основную таблицу, то корректно работают только маршруты 1,3,4. Т.е. в сеть 10.0.0.0/24 успешно можно попасть через обеих WG клиентов и через OVPN клиента Филиала 1, который попадает на Mikrotik в Interface List - VPN Trusted Zone. Через маршрут 2, ping до любого узла в сети 10.0.0.0/24 начинает выглядеть вот так:

Код: Выделить всё

Обмен пакетами с 10.0.0.15 по с 32 байтами данных:
Ответ от 10.0.0.15: число байт=32 время=55мс TTL=117
Превышен интервал ожидания для запроса.
Ответ от 10.0.0.15: число байт=32 время=60мс TTL=117
Превышен интервал ожидания для запроса.
Ответ от 10.0.0.15: число байт=32 время=55мс TTL=117
Превышен интервал ожидания для запроса.
Ответ от 10.0.0.15: число байт=32 время=66мс TTL=117
Превышен интервал ожидания для запроса.
Ответ от 10.0.0.15: число байт=32 время=54мс TTL=117
Превышен интервал ожидания для запроса.
Никак не могу понять, почему на Limited интерфейс WG трафик проходит корректно, а c OVPN начинаются спецэффекты.
Буду очень признателен, если поможете разобраться.
Аватара пользователя
Chupaka
Сообщения: 4098
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: OVPN / WG и несколько альтернативных маршрутов через разные таблицы маршрутизации

Сообщение Chupaka »

Gamber писал(а): 27 сен 2024, 20:29 Создано два правила Mangle в prerouting, первое помечает соединения для всех входящих интерфейсов отнесенных к Interface List - Limited, второе помечает маршрут для направления в таблицу - route-vpn-limited-zone.

Код: Выделить всё

chain=prerouting action=mark-connection new-connection-mark=route-vpn-limited-zone passthrough=yes connection-mark=no-mark in-interface-list=VPN Limited Zone log=no log-prefix="" 

chain=prerouting action=mark-routing new-routing-mark=route-vpn-limited-zone passthrough=yes connection-mark=route-vpn-limited-zone log=no log-prefix="" 
Здравствуйте.

Пока не было времени погрузиться полностью в детали вопроса, но уже возникли некоторые сомнения.

Вы намеренно маркируете сначала соединение, а только потом роутинг, или просто потому, что так в Интернетах увидели? Соединение - это пакеты в обе стороны (т.е. отмаркировали исходящий - входящие пакеты тоже будут иметь такую же conection mark. И вторым правилом вы маркируете роутинг для всех пакетов в обе стороны. Это осознанно было сделано? Просто обычно в таких случаях маркируют роутинг только для пакетов, например, с интерфейсов клиентов (чтобы как раз-таки только исходящие задело), а у вас не вижу такого деления...
Gamber
Сообщения: 5
Зарегистрирован: 27 сен 2024, 18:28

Re: OVPN / WG и несколько альтернативных маршрутов через разные таблицы маршрутизации

Сообщение Gamber »

или просто потому, что так в Интернетах увидели?
Не то чтобы в Интернетах, скорее на скорую руку скопировал схему с DualWAN, в части маркировки. Перемудрил.

Переделал маркировку и убрал Routing Rules. Вроде бы все взлетело как хотел изначально.
В правилах маркировки, убрал маркировку соединений, добавил еще одно правило на маркировку маршрута для Interface List - VPN Trusted Zone.

Код: Выделить всё

chain=prerouting action=mark-routing new-routing-mark=route-vpn-limited-zone passthrough=yes in-interface-list=VPN Limited Zone log=no log-prefix="" 

chain=prerouting action=mark-routing new-routing-mark=route-vpn-trusted-zone passthrough=yes in-interface-list=VPN Trusted Zone log=no log-prefix="" 
Добавил таблицу маршрутизации - route-vpn-trusted-zone.

Статические маршруты привел к следующему виду:

Код: Выделить всё

# - DST - GW - DISTANCE - TABLE
1 - 10.0.0.0/24 - 172.20.1.10 (OVPN - Trusted) - 1 -  route-vpn-trusted-zone
2 - 10.0.0.0/24 - 172.20.1.20 (OVPN - Limited) - 2 - route-vpn-trusted-zone
3 - 10.0.0.0/24 - 172.21.1.10 (WG - Trusted) - 3 - route-vpn-trusted-zone
4 - 10.0.0.0/24 - 172.22.1.20 (WG - Limited) - 4 - route-vpn-trusted-zone
5 - 10.0.0.0/24 - 172.20.1.20 (OVPN - Limited) - 1 - route-vpn-limited-zone
6 - 10.0.0.0/24 - 172.22.1.20 (WG - Limited) - 2 - route-vpn-limited-zone
Аватара пользователя
Chupaka
Сообщения: 4098
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: OVPN / WG и несколько альтернативных маршрутов через разные таблицы маршрутизации

Сообщение Chupaka »

Gamber писал(а): 29 сен 2024, 18:51 Вроде бы все взлетело как хотел изначально.
С чем и поздравляю! Нередко самый простой вариант - самый рабочий :)
Gamber
Сообщения: 5
Зарегистрирован: 27 сен 2024, 18:28

Re: OVPN / WG и несколько альтернативных маршрутов через разные таблицы маршрутизации

Сообщение Gamber »

Chupaka писал(а): 29 сен 2024, 21:40
Gamber писал(а): 29 сен 2024, 18:51 Вроде бы все взлетело как хотел изначально.
С чем и поздравляю! Нередко самый простой вариант - самый рабочий :)
Благодарю за наводку )
Можете подсказать еще один момент?
Как корректнее организовать доступ 10.0.0.0/24 из LAN сегмента самого Mikrotik (там где крутятся сами OVPN/WG сервера)? Все кто, в этой подсети должны иметь доступ в 10.0.0.0/24 через все возможные маршруты, так же как и VPN клиенты попадающие в доверенную зону.
Вижу два варианта:
1. Добавить 4 маршрута в таблицу Main, по аналогии как это сделано для таблицы - route-vpn-trusted-zone.
2. Убрать таблицу route-vpn-trusted-zone, перенести ее маршруты до 10.0.0.0/24 в Main, вернуть Routing Rules:

Код: Выделить всё

dst-address=10.0.0.0/24 routing-mark=route-vpn-limited-zone action=lookup-only-in-table table=route-vpn-limited-zone 
Сейчас сделал по второму варианту, без Connection Mark из первого сообщения, все вроде бы работает как надо.
Аватара пользователя
Chupaka
Сообщения: 4098
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: OVPN / WG и несколько альтернативных маршрутов через разные таблицы маршрутизации

Сообщение Chupaka »

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

Но вообще традиционным способом ограничения доступов является firewall filter, а не mangle. Почему возникают проблемы с 10.0.0.0/24?
Gamber
Сообщения: 5
Зарегистрирован: 27 сен 2024, 18:28

Re: OVPN / WG и несколько альтернативных маршрутов через разные таблицы маршрутизации

Сообщение Gamber »

Chupaka писал(а): 01 окт 2024, 16:56 Как я выше писал, в сам сетап не погружался, уж больно он сложным выглядит для человека с улицы.

Но вообще традиционным способом ограничения доступов является firewall filter, а не mangle. Почему возникают проблемы с 10.0.0.0/24?
Проблемы нет. На данный момент удалось добиться того, что хотел изначально.

Firewall filter безусловно используется, люди из доверенной зоны VPN имеют большее количество forwarding правил в большее количество филиалов, из ограниченной зоны - только в сеть одного филиала в ту самую 10.0.0.0/24.

Разделять доступ в 10.0.0.0/24 нужно потому что там два интернет канала (медленный безлимит и быстрый лимитированный). Та железка филиала, которая подключается к VPN серверам Mikrotik через безлимит должна давать доступ в "сеть за собой - 10.0.0.0/24" для ограниченной зоны, а та железка, которая ходит через быстрый канал - для доверенной. Если падает медленный безлимитный канал, то ограниченная зона остается без доступа в сеть филиала (для тех кто в ней находится - это некритично), а если падает быстрый канал, то те, кто ходил через него (доверенная зона) должны пойти через резервные маршруты по медленному безлимиту.

Всегда считал, что без Mangle в этой ситуации не получится. Мне же надо как-то определить принадлежность трафика к дополнительной таблице маршрутизации, для входящих соединений с определенной группы интерфейсов. В моем случае для Interface List - VPN Limited Zone.

В целом все работает. Наведу еще порядки в комментах ко всем листам/правилам, чтобы не запутаться и пусть шуршит )
Аватара пользователя
Chupaka
Сообщения: 4098
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

Re: OVPN / WG и несколько альтернативных маршрутов через разные таблицы маршрутизации

Сообщение Chupaka »

Не забудьте сохранить бэкап и /export show-sensitive :)
Gamber
Сообщения: 5
Зарегистрирован: 27 сен 2024, 18:28

Re: OVPN / WG и несколько альтернативных маршрутов через разные таблицы маршрутизации

Сообщение Gamber »

Chupaka писал(а): 04 окт 2024, 08:42 Не забудьте сохранить бэкап и /export show-sensitive :)
:D