Перейти к содержимому
Калькуляторы

PBR на Микротике

Есть маршрутизатор с такой настройкой:

eth1 - интернет-подключение по умолчанию через PPPoE

eth2/vlan100 - статикой прописан белый IP aa.aa.aa.80/25

eth2/vlan30 - статикой прописан серый IP 10.1.144.3/24

eth3,eth4,wifi1 - объединены в bridge, локальная сеть 192.168.1.254/24

eth5 - резервное интернет-подключение, DHCP-клиент

 

Далее на нем настроены:

- дефолтный маршрут через PPPoE (в настройках PPPoE-подключения выбран пункт Add default route)

- маршрут на aa.aa.aa.0/22 через eth2/100

- маршрут на некоторые хосты через eth2/100

- маршрут на 10.1.0.0/16 через eth2/30

- маршрут на 10.102.0.0/16 через eth2/30

- в правилах NAT сделан dstnat на некоторые сервисы в локальной сети

 

Но тут есть некоторая нестыковка.

Допустим у меня есть публичный сервис http://aa.aa.aa.80:80, который через dstnat проброшен на 192.168.1.1:80.

При внешнем обращении на этот сервис с aa.aa.aa.0/22 все работает нормально.

При внешнем обращении на этот сервис с других подсетей входящий пакет до маршрутизатора доходит, транслируется, сервис дает ответ, а наружу ответ уходит через PPPoE, т.к. это дефолтный маршрут.

Как мне настроить PBR таким образом, чтобы все что прошло через определенные dstnat сразу маркировалось какой-то меткой и в дальнейшем исходящие пакеты уходили через eth2/100?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что-то не пойму, как PBR работает в RouterOS.

 

Есть такое правило маршрутизации — должно роутить через eth2/100 все, что имеет метку pubsvc:

/ip route add distance=10 gateway=vlan100 routing-mark=pubsvc

Есть такое mangle-правило — оно должно ставить метку pubsvc на все icmp-пакеты, адресованные наружу (acl-bogon содержит списки всех приватных IP):

/ip firewall mangle add action=mark-routing chain=prerouting dst-address-list=!acl-bogon new-routing-mark=pubsvc passthrough=yes protocol=icmp routing-mark=main

Но делаю трассировку с использованием icmp — пакеты ходят через шлюз по умолчанию (pppoe-подключение).

 

8 минут назад, EugeneTV сказал:

У меня не failover, мне нужно часть сервисов вывести фиксированно через ISP2.

Все что касается маркировки и маршрутизации у меня сделано, но почему-то трафик не перенаправляется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

пинг откуда делаете с микротика?

 

попробуйте в правиле убрать routing-mark=main

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пинг делаю через Tools - Traceroute, выбрав протокол icmp.

routing-mark=main убирал, все равно не роутит (трасировка ходит через pppoe).

 

Судя по счетчикам, правило срабатывает.

Но эффекта не вижу, пакеты ходят через pppoe, а не через vlan100.

Если для трассировки вручную задать интерфейс vlan100, тогда трассировка вообще не проходит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2 часа назад, alibek сказал:

У меня не failover, мне нужно часть сервисов вывести фиксированно через ISP2

так там отдельно и написано как пришпилить входящее соединение к определенному интерфейсу

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Выполняю команду /tool traceroute protocol=icmp max-hops=4 count=1 8.8.8.8 — ходит через pppoe.

Выполняю команду /tool traceroute protocol=icmp routing-table=vlan100-route max-hops=4 count=1 8.8.8.8 — ходит через vlan100 (то есть таблица маршрутизации работает).

Делаю mangle-правило с действием new-routing-mark — судя по счетчику, правило срабатывает, однако трассировка ходит через pppoe (если не задавать вручную routing-table).

 

5 минут назад, EugeneTV сказал:

так там отдельно и написано как пришпилить входящее соединение к определенному интерфейсу

Мне ничего пришпиливать не надо. Тем более речь не о входящих соединениях, а об исходящем трафике.

Мне для начала нужно, чтобы icmp всегда ходил через определенный интерфейс с помощью PBR.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

PBR странно работает, или я чего не дочитал, в вашем случае должно помочь

/ip route rule add routing-mark=pubsvc action=lookup table=pubsvc

и двинуть это правило в самый верх

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Поставил, ничего не поменялось — трассировка все также идет через pppoe.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

если вы будете делать трассировку не с миктротика, то будет работать, если хотите с микротика добавьте правило для output

/ip firewall mangle add action=mark-routing chain=output dst-address-list=!acl-bogon new-routing-mark=pubsvc passthrough=yes protocol=icmp routing-mark=main

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, так работает.

Странно, я думал что цепочка prerouting действует на все пакеты, не только транзитные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Что-то у латышей все не как у людей.

Подскажите, что не так?

Хочу настроить RDP, чтобы он всегда работал через vlan100.

 

1. Делаю разрешающее правило:

/ip firewall filter add action=accept chain=input dst-port=65200-65535 in-interface=vlan100 protocol=tcp

Подключаюсь на tcp/65200, в логах вижу, что пакет приходит и правило отрабатывает.

 

2. Добавляю трансляцию:

/ip firewall nat add action=dst-nat chain=dstnat dst-port=65200 in-interface=vlan100 protocol=tcp src-address=aa.bb.cc.dd to-addresses=192.168.1.9 to-ports=3389

Подключаюсь по RDP на порт 65200, в логах вижу, что пакет транслируется и передается на 192.168.1.9.

 

3. Навешиваю метку:

/ip firewall mangle add action=mark-connection chain=forward in-interface=vlan100 new-connection-mark=vlan100-fwd out-interface=bridge-lan passthrough=no src-address=aa.bb.cc.dd
/ip firewall mangle add action=mark-routing chain=prerouting connection-mark=vlan100-fwd new-routing-mark=vlan100-route passthrough=no

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

Однако RDP не работает и в IP - Firewall - Connections я не вижу соединения с навешенной меткой.

 

Что же ему надо?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, alibek сказал:

1. Делаю разрешающее правило:

в input не нужно, нужно разрешать forward

 

а в таблице маршрутизации есть маршрут с меткой vlan100-route?

 

добавьте в в фильтр логирующее правило на forward с src-address 192.168.1.9, в логах будет виден out interface? а так вроде все правильно, маркируем соединение, а потом навешиваем метку маршрута

 

попробуйте тот же финт с ip rule, добавить првавило

 

счетчики на правилах тикают?

Изменено пользователем .None

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

3 часа назад, .None сказал:

в input не нужно, нужно разрешать forward

Я всякое пробовал, прежде чем спрашивать.

Если правило делать в цепочке forward, то оно вообще не срабатывает (счетчик не изменяется).

А вот в цепочке input попытки подключиться к внешнему опубликованному порту (tcp:65200) на счетчиках отражаются.

 

3 часа назад, .None сказал:

а в таблице маршрутизации есть маршрут с меткой vlan100-route?

Разумеется, прежде чем начать создание правил для транзитного трафика я обкатал PBR на локальном трафике (с самого микротика).

 

3 часа назад, .None сказал:

попробуйте тот же финт с ip rule, добавить првавило

В каком смысле? ip rule для метки pubsvc и действием lookup в pubsvc я создавал ранее.

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

 

3 часа назад, .None сказал:

счетчики на правилах тикают?

Да, счетчики растут, если в правилах включаю логгирование, то в логах вижу пакеты (с правильными in/out интерфейсами и IP-адресами).

С виду все правильно, но не работает, RDP не запускается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@alibek 

Вот три  рабочих правила (443 порт для SSTP), с направлением в сторону нужного провайдера

 

/ip firewall filter 
add action=accept chain=forward dst-port=443 in-interface=WAN protocol=tcp
/ip firewall nat
add action=dst-nat chain=dstnat dst-port=443 in-interface=WAN protocol=tcp to-addresses=192.168.1.3 to-ports=443
/ip firewall mangle
add action=mark-routing chain=prerouting dst-address-list=!intra in-interface=bridge new-routing-mark=WAN-route passthrough=no protocol=tcp src-address=192.168.1.3 src-port=443

Разрешающее правило в цепочке forward (в стандартном конфиге в forward drop all есть исключение для dst-nat),

dst-nat на локальный адрес, у меня на внешке один и динамический адрес - не указываю,

и mark-routing пакетов наружу(!intra) в сторону нужного провайдера   со стороны локальной сети(bridge)  с данного IP/tcp/порта.

 

+ Если есть правило fasttrack, надо поставить там !dstnat, иначе часть пакетов будет не туда уходить, mark-routing c fasttrack-ом не работает.

 

 

Изменено пользователем McSea

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

11 часов назад, alibek сказал:

В каком смысле? ip rule для метки pubsvc и действием lookup в pubsvc я создавал ранее.

а в 

/ip firewall mangle add action=mark-routing chain=prerouting connection-mark=vlan100-fwd new-routing-mark=vlan100-route passthrough=no

у вас new-routing-mark=vlan100-route

может там поставить new-routing-mark=pubsvc?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А, в этом смысле.

Нет, я просто pubsvc переименовал в vlan100-route.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не видно всей картины, нужно видеть и ip route и ip rule и ip firewall filter/nat/mangle, если все вроде настроено правильно дебажить log правилами и разбираться почему не так ходит

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.