Почему не работает: "Advanced Routing Failover without Scripting"?

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Zillah
Сообщения: 1
Зарегистрирован: 04 авг 2017, 07:20

vqd писал(а):"check gateway ping" вам особо ничего не даст ибо чаще проблемы случаются за его пределами

Ну, будем ручками и при наличии звонка от пострадавших, а тем временем искать искать что-то вменяемое в свободное время... :nez-nayu:

PS до кучи я забыл что у меня там еще и GRE+IPSEC, потому проблем может возникнуть больше нежели чем с просто.


enzain
Сообщения: 291
Зарегистрирован: 26 дек 2017, 22:30

Я один не вижу дефолт роута в ип роутер адд?

Откуда он взялся тогда в принте не понятно ...


Zillah
Сообщения: 1
Зарегистрирован: 04 авг 2017, 07:20

enzain писал(а):Я один не вижу дефолт роута в ип роутер адд?
Откуда он взялся тогда в принте не понятно ...


Собственно это оно:

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

/ip route
add distance=1 gateway=10.20.1.1 routing-mark=toISP1
add distance=2 gateway=10.20.2.2 routing-mark=toISP1
add distance=1 gateway=10.20.1.1 routing-mark=toISP2
add distance=2 gateway=10.20.2.2 routing-mark=toISP2
...

dst-address по дефолту 0.0.0.0/0, если вы об этом.


enzain
Сообщения: 291
Зарегистрирован: 26 дек 2017, 22:30

Zillah писал(а):
enzain писал(а):Я один не вижу дефолт роута в ип роутер адд?
Откуда он взялся тогда в принте не понятно ...


Собственно это оно:

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

/ip route
add distance=1 gateway=10.20.1.1 routing-mark=toISP1
add distance=2 gateway=10.20.2.2 routing-mark=toISP1
add distance=1 gateway=10.20.1.1 routing-mark=toISP2
add distance=2 gateway=10.20.2.2 routing-mark=toISP2
...

dst-address по дефолту 0.0.0.0/0, если вы об этом.


Действительно :)

Подтупил что то ....

Тогда таблица main без дефолт роута.

на исп1 уберите метку роутинг-марк.
Или принудительно загоняйте в какую то таблицу траффик.

например весь с интерфейса ether2
/ip firewall mangle add in-interface=ether2 routing-mark==toISP1


Zillah
Сообщения: 1
Зарегистрирован: 04 авг 2017, 07:20

enzain писал(а):Тогда таблица main без дефолт роута.
на исп1 уберите метку роутинг-марк.
Или принудительно загоняйте в какую то таблицу траффик.
например весь с интерфейса ether2
/ip firewall mangle add in-interface=ether2 routing-mark==toISP1


Угу, потихоньку начинаю "догонять" :-)
Попробую еще энтот вариант:
http://hak786.blogspot.fr/2013/10/dual- ... lover.html
Выглядит наиболее полным в контексте задачи, да и простой канала на 10-20 сек для меня не критично. :-):


enzain
Сообщения: 291
Зарегистрирован: 26 дек 2017, 22:30

Zillah писал(а):
enzain писал(а):Тогда таблица main без дефолт роута.
на исп1 уберите метку роутинг-марк.
Или принудительно загоняйте в какую то таблицу траффик.
например весь с интерфейса ether2
/ip firewall mangle add in-interface=ether2 routing-mark==toISP1


Угу, потихоньку начинаю "догонять" :-)
Попробую еще энтот вариант:
http://hak786.blogspot.fr/2013/10/dual- ... lover.html
Выглядит наиболее полным в контексте задачи, да и простой канала на 10-20 сек для меня не критично. :-):


Мне например он уже не нравится ....

Почему блин, new-connection-mark=WAN1_mark, при том что new-routing-mark=to_ISP1
В плане читабельности, как то не очень ... ну в одном стиле б сделали то_исп, фром_исп

Но - если вам нужен файловер только то все это лишнее, без маркировки таблиц маршрутизации оба шлюза ставите и при падении одного у вас второй активируется. То же что описано тут это больше для балансировки


Аватара пользователя
podarok66
Модератор
Сообщения: 4358
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

ISP1 имеет шлюз 82.200.69.73 и выдает нам адрес 82.200.69.74 через ether1
ISP1 имеет шлюз 195.82.156.33 и выдает нам адрес 195.82.156.62 через ether2
Сначала маркируем входящие соединения на интерфейсах и метим маршруты на выходе:

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

/ip firewall mangle
add action=mark-connection chain=input in-interface=ether1 \
    new-connection-mark=Input/ISP1
add action=mark-routing chain=output connection-mark=Input/ISP1 \
    new-routing-mark=ISP1 passthrough=no
add action=mark-connection chain=input in-interface=ether2 \
    new-connection-mark=Input/ISP2
add action=mark-routing chain=output connection-mark=Input/ISP2 \
    new-routing-mark=ISP2 passthrough=no



Теперь правилами маршрутизации ограничиваем маркированные маршруты своими таблицами

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

/ip route rule
add action=lookup-only-in-table routing-mark=ISP1 table=ISP1
add action=lookup-only-in-table routing-mark=ISP2 table=ISP2



Далее задаем маршруты с учетом применения параметра scope=10, разной дистанции для разных провайдеров и отдельного маршрута для маркированного трафика. В целом это уже обеспечит переключение каналов при обрыве.

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

/ip route
add distance=1 gateway=82.200.69.73 routing-mark=ISP1
add distance=1 gateway=195.82.156.33 routing-mark=ISP2
add distance=1 dst-address=8.8.4.4/32 gateway=195.82.156.33 scope=10
add distance=1 dst-address=8.8.8.8/32 gateway=82.200.69.73 scope=10
add check-gateway=ping distance=1 gateway=8.8.8.8 target-scope=30
add check-gateway=ping distance=2 gateway=8.8.4.4 target-scope=30



Но хотелось бы, чтобы ответы отправлялись через те интерфейсы, с которых пришли. Делаем адрес-лист со списком всех возможных локальных сетей.

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

/ip firewall address-list
add list="BOGONS" address=0.0.0.0/8
add list="BOGONS" address=10.0.0.0/8
add list="BOGONS" address=100.64.0.0/10
add list="BOGONS" address=127.0.0.0/8
add list="BOGONS" address=169.254.0.0/16
add list="BOGONS" address=172.16.0.0/12
add list="BOGONS" address=192.0.0.0/24
add list="BOGONS" address=192.0.2.0/24
add list="BOGONS" address=192.168.0.0/16
add list="BOGONS" address=198.18.0.0/15
add list="BOGONS" address=198.51.100.0/24
add list="BOGONS" address=203.0.113.0/24
add list="BOGONS" address=224.0.0.0/3



Маркируем на выходе все маршруты, отданные не локальными сетями

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

/ip firewall mangle
add action=mark-routing chain=output dst-address-list=!BOGONS \
    new-routing-mark=ISP1 src-address=82.200.69.74
add action=mark-routing chain=output dst-address-list=!BOGONS \
    new-routing-mark=ISP2 src-address=195.82.156.62


Теперь очередь маркировки соединений на входящих интерфейсах, и затем маршрутов по этим меткам, но теперь в цепочке prerouting, это важно!!!

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

/ip firewall mangle
add action=mark-connection chain=prerouting in-interface=ether1 \
    new-connection-mark=Forward/ISP1
add action=mark-routing chain=prerouting connection-mark=Forward/ISP1 \
    in-interface=!ether1 new-routing-mark=ISP1 passthrough=no
add action=mark-connection chain=prerouting in-interface=ether2 \
    new-connection-mark=Forward/ISP2
add action=mark-routing chain=prerouting connection-mark=Forward/ISP2 \
    in-interface=!ether2 new-routing-mark=ISP2 passthrough=no


Насколько я помню, этот вариант переключается почти мгновенно, адаптировал под ваши данные, только имена интерфейсов не знал, вставил ether1 и ether2


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Zillah
Сообщения: 1
Зарегистрирован: 04 авг 2017, 07:20

podarok66 писал(а):Насколько я помню, этот вариант переключается почти мгновенно, адаптировал под ваши данные, только имена интерфейсов не знал, вставил ether1 и ether2

Это действительно то что нужно и почти все понятно! Спасибо! :co_ol:

podarok66 писал(а):Далее задаем маршруты с учетом применения параметра scope=10, разной дистанции для разных провайдеров и отдельного маршрута для маркированного трафика. В целом это уже обеспечит переключение каналов при обрыве.

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

/ip route
add distance=1 gateway=82.200.69.73 routing-mark=ISP1
add distance=1 gateway=195.82.156.33 routing-mark=ISP2
add distance=1 dst-address=8.8.4.4/32 gateway=195.82.156.33 scope=10
add distance=1 dst-address=8.8.8.8/32 gateway=82.200.69.73 scope=10
add check-gateway=ping distance=1 gateway=8.8.8.8 target-scope=30
add check-gateway=ping distance=2 gateway=8.8.4.4 target-scope=30

Тут хочу адаптировать таки под 4 хоста(2 гугло и 2 яндекс) для проверки, как то был случай когда гуглоДНС некоторое время не отвечал.
Это не слишком параноидально? :-):
Хм, только вот придется городить с виртуальным хопом похоже...

podarok66 писал(а):Но хотелось бы, чтобы ответы отправлялись через те интерфейсы, с которых пришли. Делаем адрес-лист со списком всех возможных локальных сетей.
*скипнуто*

Маркируем на выходе все маршруты, отданные не локальными сетями

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

/ip firewall mangle
add action=mark-routing chain=output dst-address-list=!BOGONS \
    new-routing-mark=ISP1 src-address=82.200.69.74
add action=mark-routing chain=output dst-address-list=!BOGONS \
    new-routing-mark=ISP2 src-address=195.82.156.62


Вот тут есть пара вопросов.
1) встречал вариант с "dst-address-type=!local" вместо "dst-address-list=!BOGONS",
но судя по доке, "local" это все адреса назначенные интерфейсам рутера, т.е. по идее туда попадает и WAN адрес.
Значит такой вариант неправильный или я не так понял доку? :-):

2) Правильно ли я понимаю, если указать "in-interface=wan2" вместо "src-address=195.82.156.62" и для wan1 соответственно,
то ничего не изменится или таки можно наступить на грабли?

И до кучи, вы пропустили?:

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

/ip firewall nat
add action=masquerade chain=srcnat out-interface=wan1
add action=masquerade chain=srcnat out-interface=wan2


PS кстати часто обращаюсь к вашему блогу в ЖЖ, только вот тамошний вариант для двух провайдеров плохо понял, тут вышло более понятно. :-):
PPS теперь осталось разобраться с GRE+IPSEC тунелями в нагрузку ко всему этому... :sh_ok:


enzain
Сообщения: 291
Зарегистрирован: 26 дек 2017, 22:30

Zillah писал(а):PPS теперь осталось разобраться с GRE+IPSEC тунелями в нагрузку ко всему этому... :sh_ok:


Тут тоже надо будет учесть что провайдеров несколько :)

Главное вообще понять, как работает этот слосчастный полиси базед роутинг, и так далее ....
И в общем то ничего сложного в итоге получится... но когда только вникаешь - да, выглядит все странно :)


Zillah
Сообщения: 1
Зарегистрирован: 04 авг 2017, 07:20

enzain писал(а):Тут тоже надо будет учесть что провайдеров несколько :)

Главное вообще понять, как работает этот слосчастный полиси базед роутинг, и так далее ....
И в общем то ничего сложного в итоге получится... но когда только вникаешь - да, выглядит все странно :)


Угу, вот и думаю по этому поводу, но пока 100% понимания "магии" нет... :nez-nayu:
попробовал потестить(на FW отключал/включал входящие от 8.8.8.8), таймаут максимум около 20 сек.

Кстати непонятно:

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

/ip route print detail 
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme,
B - blackhole, U - unreachable, P - prohibit
 0 A S  dst-address=0.0.0.0/0 gateway=82.200.69.73 gateway-status=82.200.69.73 reachable via  wan1 distance=1 scope=30 target-scope=10
        routing-mark=ISP1

 1   S  dst-address=0.0.0.0/0 gateway=195.82.156.33 gateway-status=195.82.156.33 unreachable distance=1 scope=30 target-scope=10
        routing-mark=ISP2

 2   S  dst-address=0.0.0.0/0 gateway=8.8.8.8 gateway-status=8.8.8.8 recursive via 82.200.69.73 wan1 check-gateway=ping distance=1 scope=30
        target-scope=30

 3   S  dst-address=0.0.0.0/0 gateway=8.8.4.4 gateway-status=8.8.4.4 unreachable check-gateway=ping distance=2 scope=30 target-scope=30

 4 X S  dst-address=0.0.0.0/0 gateway=77.88.8.8 gateway-status=77.88.8.8 inactive check-gateway=ping distance=1 scope=30 target-scope=30

 5 X S  dst-address=0.0.0.0/0 gateway=77.88.8.1 gateway-status=77.88.8.1 inactive check-gateway=ping distance=2 scope=30 target-scope=30

 6   S  dst-address=8.8.4.4/32 gateway=195.82.156.33 gateway-status=195.82.156.33 unreachable distance=1 scope=10 target-scope=10

 7 A S  dst-address=8.8.8.8/32 gateway=82.200.69.73 gateway-status=82.200.69.73 reachable via  wan1 distance=1 scope=10 target-scope=10

 8 ADC  dst-address=10.54.11.0/24 pref-src=10.54.11.4 gateway=lan gateway-status=lan reachable distance=0 scope=10

 9 X S  dst-address=77.88.8.1/32 gateway=195.82.156.33 gateway-status=195.82.156.33 inactive distance=1 scope=10 target-scope=10

10 X S  dst-address=77.88.8.8/32 gateway=82.200.69.73 gateway-status=82.200.69.73 inactive distance=1 scope=10 target-scope=10

11 ADC  dst-address=82.200.69.72/30 pref-src=82.200.69.74 gateway=wan1 gateway-status=wan1 reachable distance=0 scope=10

12  DC  dst-address=172.16.0.0/30 pref-src=172.16.0.1 gateway=gre-fab-wan1 gateway-status=gre-fab-wan1 unreachable distance=255 scope=10

13  DC  dst-address=195.82.156.32/27 pref-src=195.82.156.61 gateway=wan2 gateway-status=wan2 unreachable distance=255 scope=10


Если 8.8.8.8 перестает отвечать, пинги перестают ходить наружу, но дефрут 0-я строчка, активен

Задизабленные маршруты, это я попробовал добавить еще чек-хосты... вроде пашет... но насколько оно правильно - хз. :nez-nayu:
Выглядит так:

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

/ip route
add distance=1 gateway=82.200.69.73 routing-mark=ISP1
add distance=1 gateway=195.82.156.33 routing-mark=ISP2
add check-gateway=ping distance=1 gateway=8.8.8.8 target-scope=30
add check-gateway=ping distance=1 gateway=77.88.8.8 target-scope=30
add check-gateway=ping distance=2 gateway=8.8.4.4 target-scope=30
add check-gateway=ping distance=2 gateway=77.88.8.1 target-scope=30
add distance=1 dst-address=8.8.4.4/32 gateway=195.82.156.33 scope=10
add distance=1 dst-address=8.8.8.8/32 gateway=82.200.69.73 scope=10
add distance=1 dst-address=77.88.8.1/32 gateway=195.82.156.33 scope=10
add distance=1 dst-address=77.88.8.8/32 gateway=82.200.69.73 scope=10
/ip route rule
add action=lookup-only-in-table routing-mark=ISP1 table=ISP1
add action=lookup-only-in-table routing-mark=ISP2 table=ISP2


Ответить