MikroTik Failover (2 провайдера, автоматическое переключение)
После продолжительных ручных переключений на резервный канал, я задумался, а почему бы не сделать автоматическое переключение на резерв, если есть MikroTik?
Есть два провайдер, которые предоставляют доступ в интернет через статический ip-адрес. На входе используется оборудование фирмы MikroTik. Для реализации задачи будем производить мониторинг состояния DNS Google, а проще говоря 8.8.8.8. В случае не доступности DNS будет производится переход на резерв.
В моем примере, у нас два настроенных интерфейса, которые имеют статический адрес и постоянно доступны.
В Route List добавляем маршрут до 8.8.8.8 с первого интерфейса (указываем именно внешний адрес, а не интерфейс!).
В Firewall создаем запрещающее правило пинговать 8.8.8.8 со второго интерфейса.
В Netwatch создаем задачу на пинг 8.8.8.8 со следующими параметрами:
UP
1 2 3 |
/ip route set [/ip route find dst-address=0.0.0.0/0] gateway=0.0.0.0 :log error "Main channel activate" /tool e-mail send to="sender@domain.ru" subject="Main channel activate" start-tls=yes |
DOWN
1 2 3 |
/ip route set [/ip route find dst-address=0.0.0.0/0] gateway=0.0.0.0 :log error "Backup channel activate" /tool e-mail send to="sender@domain.ru" subject="Backup channel activate" start-tls=yes |
В случае переключения происходит подмена шлюза и интернет работает на резерве. Так же происходит отправка сообщения через почту и запись в логи.
Ещё не забываем добавить правило в Firewall в раздел NAT, которое будет делать masquerade.
1 2 |
/ip firewall nat add action=masquerade chain=srcnat out-interface=ether2 |
Теперь резерв настроен. В случае не доступности 8.8.8.8 происходит переключение на резерв. Так как пинг до 8.8.8.8 закрыт со второго интерфейса, то будет происходит ожидание ответа с первого. В случае успешного ответа, резерв будет заменяться основным каналом.
А теперь тематика, если у вас на борту Asterisk. После такого резерва, не всегда адекватно чувствуют себя транки, решается это следующим кодом в разделе DOWN:
1 2 3 4 5 6 |
/ip route set [/ip route find dst-address=0.0.0.0/0] gateway=0.0.0.0 :log error "Backup channel activate" /tool e-mail send to="sender@domain.ru" subject="Backup channel activate" start-tls=yes /interface disable ether1 :delay 30 /interface enable ether1 |
Как показал практика, достаточно отключить первый интерфейс и сделать задержку перед его включением. В итоге транки довольны, мы довольны, пользователи не замечают как меняется интернет!
2 комментария
Юрий
Всё клёво, но лучше через маркировку коннекшнов и рекурсивный роутинг)
Вадим
коротко і зрозуміло,
дякую!