Страница 1 из 1

маршрутизация сетей

Добавлено: 16 авг 2018, 14:38
evgeniy7676
Необходимо выпусить 192.168.3.0/24 через gateway=3.3.3.3,но так чтобы был доступ в другие локальные сети 192.168.1.0/24 и 192.168.2.0/24


/ip firewall mangle
add action=mark-connection chain=input in-interface=ISP1 new-connection-mark=\
ISP1_in passthrough=yes
add action=mark-routing chain=output connection-mark=ISP1_in \
new-routing-mark=ISP1_rout passthrough=no
add action=mark-connection chain=input in-interface=ISP2 new-connection-mark=\
ISP2_in passthrough=yes
add action=mark-routing chain=output connection-mark=ISP2_in \
new-routing-mark=ISP2_rout passthrough=no
add action=mark-connection chain=input in-interface=ISP3 new-connection-mark=\
ISP3_in passthrough=yes
add action=mark-routing chain=output connection-mark=ISP3_in \
new-routing-mark=ISP3_rout passthrough=no
add action=mark-connection chain=forward in-interface=ISP1 \
new-connection-mark=ISP1_for passthrough=no
add action=mark-routing chain=prerouting connection-mark=ISP1_for \
new-routing-mark=ISP1_rout passthrough=yes src-address-list=LocalNet
add action=mark-connection chain=forward in-interface=ISP2 \
new-connection-mark=ISP2_for passthrough=no
add action=mark-routing chain=prerouting connection-mark=ISP2_for \
new-routing-mark=ISP2_rout passthrough=yes src-address-list=LocalNet
add action=mark-connection chain=forward in-interface=ISP3 \
new-connection-mark=ISP3_for passthrough=no
add action=mark-routing chain=prerouting connection-mark=ISP3_for \
new-routing-mark=ISP3_rout passthrough=yes src-address-list=LocalNet


/ip route
add comment=ISP1_rout distance=1 gateway=1.1.1.1 routing-mark=ISP1_rout
add comment=ISP2_rout distance=1 gateway=2.2.2.2 routing-mark=ISP2_rout
add comment=ISP3_rout distance=1 gateway=3.3.3.3 routing-mark=ISP3_rout
add comment=GW1 distance=1 gateway=1.1.1.1
add comment=GW2 distance=2 gateway=2.2.2.2
add comment=GW3 distance=3 gateway=3.3.3.3


/ip firewall address-list
add address=192.168.1.0/24 disabled=yes list=LocalNet
add address=192.168.2.0/24 disabled=yes list=LocalNet
add address=192.168.3.0/24 disabled=yes list=LocalNet

/ip route rule
add action=lookup-only-in-table routing-mark=ISP1_rout table=ISP1_rout
add action=lookup-only-in-table routing-mark=ISP2_rout table=ISP2_rout
add action=lookup-only-in-table routing-mark=ISP3_rout table=ISP3_rout


add action=lookup-only-in-table src-address=192.168.3.0/24 table=ISP3_rout

Re: маршрутизация сетей

Добавлено: 16 авг 2018, 14:51
Chupaka
Ну, если хочется через Route Rules делать - тогда просто добавить выше правило

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

add action=lookup src-address=192.168.3.0/24 dst-address=192.168.0.0/22 table=main

Re: маршрутизация сетей

Добавлено: 16 авг 2018, 15:08
evgeniy7676
а как сделать через mangl

Re: маршрутизация сетей

Добавлено: 16 авг 2018, 16:22
Chupaka
Аналогично:

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

/ip firewall mangle
add chain=prerouting src-address=192.168.3.0/24 dst-address=!192.168.0.0/22 \
  action=mark-routing new-routing-mark=ISP3_rout passthrough=no

Re: маршрутизация сетей

Добавлено: 16 авг 2018, 16:40
evgeniy7676
Спасибо

Re: маршрутизация сетей

Добавлено: 17 авг 2018, 09:07
evgeniy7676
еще вопрос при последней маркировки Hairpin NAT неработает как поправить спасибо
/ip firewall nat
add chain=srcnat src-address=192.168.3.0/24 dst-address=192.168.3.2 protocol=tcp dst-port=80 out-interface=LAN3 action=masquerade

Re: маршрутизация сетей

Добавлено: 17 авг 2018, 11:12
Chupaka
https://wiki.mikrotik.com/wiki/Manual:Packet_Flow

Правила Mangle отрабатывают до Dst-NAT, поэтому пакеты от 192.168.3.0/24 ко внешнему адресу роутера маркируются ISP3_rout. После этого Dst-NAT меняет dst-address, но пакеты уже помечены - и улетают в Интернет, а не обратно в локалку.

Можно в правило Mangle добавить больше исключений:

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

/ip firewall address-list
add list=local-addresses address=192.168.0.0/16
add list=local-addresses address=ВНЕШНИЙ_АДРЕС

/ip firewall mangle
add chain=prerouting src-address=192.168.3.0/24 dst-address-list=!local-addresses \
  action=mark-routing new-routing-mark=ISP3_rout passthrough=no

Re: маршрутизация сетей

Добавлено: 17 авг 2018, 13:01
evgeniy7676
спасибо все получилось

Re: маршрутизация сетей

Добавлено: 17 авг 2018, 13:13
evgeniy7676
Еще вопрос при переключении на резервного ISP у меня скрипт отключает постоянный не маркированный маршрут и последнее правило маркировки нужно ли сбрасывать маркированные соединения ?

Re: маршрутизация сетей

Добавлено: 17 авг 2018, 13:21
Chupaka
У вас, похоже, много знаков препинания потерялось... В чём именно вопрос?

Re: маршрутизация сетей

Добавлено: 17 авг 2018, 14:27
evgeniy7676
нужно ли сбрасывать маркированные соединения ? при переключении на другого прова

Re: маршрутизация сетей

Добавлено: 17 авг 2018, 19:14
Chupaka
Что значит "сбрасывать"? Размаркировывать? Удалять из ConnTrack?

В принципе, если соединение не сможет продолжить работать через нового прова - оно будет сброшено клиентом :)

Re: маршрутизация сетей

Добавлено: 19 авг 2018, 20:52
evgeniy7676
foreach i in=[/ip firewall connection find] do={/ip firewall connection remove $i}

Re: маршрутизация сетей

Добавлено: 19 авг 2018, 23:00
Chupaka
Проще, наверное,

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

/ip firewall connection remove [find]
После этого все пакеты уже установленных tcp-соединений будут иметь connection-state=invalid. Их обычно просто drop'ают, поэтому сильно ли оно поможет...

Другой момент, что если соединение инициировано роутером (например, DNS-запросы, если они идут через DNS-сервер роутера), то оно может "залипнуть" со старым src-адресом. Тогда провайдер может заблокировать это — а пользователи на какое-то время останутся без DNS. В таком случае лучше "почистить" Connection Tracking