Jump to content
Калькуляторы

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?

 

Share this post


Link to post
Share on other sites

Что-то не пойму, как 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.

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

Share this post


Link to post
Share on other sites

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

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

 

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Выполняю команду /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.

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

если вы будете делать трассировку не с миктротика, то будет работать, если хотите с микротика добавьте правило для 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

 

Share this post


Link to post
Share on other sites

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

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

Хочу настроить 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 я не вижу соединения с навешенной меткой.

 

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

Share this post


Link to post
Share on other sites

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

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

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

 

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

 

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

 

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

 

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

Edited by .None

Share this post


Link to post
Share on other sites

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 не запускается.

Share this post


Link to post
Share on other sites

@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-ом не работает.

 

 

Edited by McSea

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.