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

RIP, OSFP, BGP, MPLS/VPLS
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

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

Сообщение 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
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Ну, если хочется через Route Rules делать - тогда просто добавить выше правило

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

add action=lookup src-address=192.168.3.0/24 dst-address=192.168.0.0/22 table=main
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

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

Сообщение evgeniy7676 »

а как сделать через mangl
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение 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
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

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

Сообщение evgeniy7676 »

Спасибо
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

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

Сообщение 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
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение 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
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

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

Сообщение evgeniy7676 »

спасибо все получилось
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

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

Сообщение evgeniy7676 »

Еще вопрос при переключении на резервного ISP у меня скрипт отключает постоянный не маркированный маршрут и последнее правило маркировки нужно ли сбрасывать маркированные соединения ?
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

У вас, похоже, много знаков препинания потерялось... В чём именно вопрос?
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

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

Сообщение evgeniy7676 »

нужно ли сбрасывать маркированные соединения ? при переключении на другого прова
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Что значит "сбрасывать"? Размаркировывать? Удалять из ConnTrack?

В принципе, если соединение не сможет продолжить работать через нового прова - оно будет сброшено клиентом :)
evgeniy7676
Сообщения: 58
Зарегистрирован: 19 май 2016, 14:52

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

Сообщение evgeniy7676 »

foreach i in=[/ip firewall connection find] do={/ip firewall connection remove $i}
Аватара пользователя
Chupaka
Сообщения: 4086
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск

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

Сообщение Chupaka »

Проще, наверное,

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

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

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