alibek Posted May 28, 2018 · Report post Есть маршрутизатор с такой настройкой: 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? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
EugeneTV Posted May 29, 2018 · Report post https://habr.com/post/313342/ Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted May 29, 2018 · Report post Что-то не пойму, как 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 сказал: https://habr.com/post/313342/ У меня не failover, мне нужно часть сервисов вывести фиксированно через ISP2. Все что касается маркировки и маршрутизации у меня сделано, но почему-то трафик не перенаправляется. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
.None Posted May 29, 2018 · Report post пинг откуда делаете с микротика? попробуйте в правиле убрать routing-mark=main Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted May 29, 2018 · Report post Пинг делаю через Tools - Traceroute, выбрав протокол icmp. routing-mark=main убирал, все равно не роутит (трасировка ходит через pppoe). Судя по счетчикам, правило срабатывает. Но эффекта не вижу, пакеты ходят через pppoe, а не через vlan100. Если для трассировки вручную задать интерфейс vlan100, тогда трассировка вообще не проходит. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
EugeneTV Posted May 29, 2018 · Report post 2 часа назад, alibek сказал: У меня не failover, мне нужно часть сервисов вывести фиксированно через ISP2 так там отдельно и написано как пришпилить входящее соединение к определенному интерфейсу Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted May 29, 2018 · Report post Выполняю команду /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. Если из ссылки убрать привязку к соединениям, то все действия я уже сделал, но они не работают. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
.None Posted May 29, 2018 · Report post PBR странно работает, или я чего не дочитал, в вашем случае должно помочь /ip route rule add routing-mark=pubsvc action=lookup table=pubsvc и двинуть это правило в самый верх Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted May 29, 2018 · Report post Поставил, ничего не поменялось — трассировка все также идет через pppoe. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
.None Posted May 29, 2018 · Report post если вы будете делать трассировку не с миктротика, то будет работать, если хотите с микротика добавьте правило для 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 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted May 29, 2018 · Report post Да, так работает. Странно, я думал что цепочка prerouting действует на все пакеты, не только транзитные. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted May 29, 2018 · Report post Что-то у латышей все не как у людей. Подскажите, что не так? Хочу настроить 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 я не вижу соединения с навешенной меткой. Что же ему надо? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
.None Posted May 29, 2018 (edited) · Report post 1 час назад, alibek сказал: 1. Делаю разрешающее правило: в input не нужно, нужно разрешать forward а в таблице маршрутизации есть маршрут с меткой vlan100-route? добавьте в в фильтр логирующее правило на forward с src-address 192.168.1.9, в логах будет виден out interface? а так вроде все правильно, маркируем соединение, а потом навешиваем метку маршрута попробуйте тот же финт с ip rule, добавить првавило счетчики на правилах тикают? Edited May 29, 2018 by .None Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted May 29, 2018 · Report post 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 не запускается. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
McSea Posted May 29, 2018 (edited) · Report post @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 May 29, 2018 by McSea Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
.None Posted May 30, 2018 · Report post 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? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted May 30, 2018 · Report post А, в этом смысле. Нет, я просто pubsvc переименовал в vlan100-route. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
.None Posted May 30, 2018 · Report post не видно всей картины, нужно видеть и ip route и ip rule и ip firewall filter/nat/mangle, если все вроде настроено правильно дебажить log правилами и разбираться почему не так ходит Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...