awax Posted January 8, 2016 Здравствуйте, тема наверное уже затертая, перечитал много информации, но ответа для себя не нашел . Есть 2 провайдера со статикой и балансировкой ECMP. Возникло пару вопросов: 1. что нужно поправить в маршрутах что-бы 77.88.8.1 строго пинговался с 83.220.110.1, соответственно 77.88.8.8 с 81.177.200.9, сейчас этого не происходит как я понимаю из за add dst-address=0.0.0.0/0 gateway=81.177.200.9, 83.220.110.1, 83.220.110.1, 83.220.110.1 # DST-ADDRESS PREF-SRC GATEWAY DISTANCE ROUTING MARK 0 A S 0.0.0.0/0 83.220.110.1 1 ISP1 out 1 A S 0.0.0.0/0 81.177.200.9 1 ISP2 out 2 A S 0.0.0.0/0 81.177.200.9 1 83.220.110.1 83.220.110.1 83.220.110.1 3 A S 77.88.8.1/32 83.220.110.1 1 4 A S 77.88.8.8/32 81.177.200.9 1 5 ADC 83.220.110.0/24 83.220.110.190 ISP1 0 6 ADC 81.177.200.0/24 81.177.200.20 ISP2 0 7 ADC 192.168.0.0/24 192.168.0.1 LAN1 0 2. Как правильно реализовать средствами Netwath отключение упавшего канала, ну и включение соответственно после восстановления связи ? UP /ip route enable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1 and distance >= 1 DOWN /ip route disable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1 and distance >= 1 Понятно что без первого не получиться второго, как автоматизировать процесс ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
fiskunt Posted January 8, 2016 По моему опыту Netwath никогда не работала нормально. Обычно реагировала только на физический обрыв, а вот если проблема за железкой провайдера, то Netwath на это пофиг. Может конечно пофиксили это дело в последних версиях ОСи, но все равно по мне так лучше пользоваться скриптами и шедулером. Вот там без проблем можно указать с какого конкретно интерфейса пинговать тот или иной ресурс. По сути скрипт довольно простенький получается под это дело. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
awax Posted January 9, 2016 fiskunt может черкнешь скриптик для отключения и включения машрутов : # DST-ADDRESS PREF-SRC GATEWAY DISTANCE ROUTING MARK 0 A S 0.0.0.0/0 83.220.110.1 1 ISP1 out 1 A S 0.0.0.0/0 81.177.200.9 1 ISP2 out через проверку : 3 A S 77.88.8.1/32 83.220.110.1 1 4 A S 77.88.8.8/32 81.177.200.9 1 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
fiskunt Posted January 9, 2016 (edited) может черкнешь скриптик для отключения и включения машрутов : Способов много, вот один из простых. Получается тот же нетватч только через шедулер Скрипт 1: /:local ping [/ping 77.88.8.1 count=3 interface=интерфейс с адресом 83.220.110.XXX]; /:if ($ping >= 2) do={/ip route enable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1 and distance >= 1]}; /:if ($ping <= 1) do={/ip route disable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1 and distance >= 1]}; Скрипт 2: /:local ping2 [/ping 77.88.8.8 count=3 interface=интерфейс с адресом 81.177.200.XXX]; /:if ($ping2 >= 2) do={/ip route enable [find dst-address=0.0.0.0/0 and gateway=81.177.200.9 and distance >= 1]}; /:if ($ping2 <= 1) do={/ip route disable [find dst-address=0.0.0.0/0 and gateway=81.177.200.9 and distance >= 1]}; Отдельный для каждого интерфейса. Поставь интервал срабатывания в пару минут и все будет ОК. Скрипт не проверял и мог где нибудь ошибиться, так что пиши если что. Edited January 9, 2016 by fiskunt Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
awax Posted January 9, 2016 fiskunt скрипты отрабатывают, но в соединениях пинга нет, цифры интефейсы перепроверил 3 раза... и второе, если даже вручную погасить маршрут, ну или первого ISP A S 0.0.0.0/0 81.177.200.9 1 ISP2 out то он все равно остается активным тут, гаситься только если отключить интерфейса A S 0.0.0.0/0 81.177.200.9 1 83.220.110.1 83.220.110.1 83.220.110.1 есть какие мысли ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
fiskunt Posted January 9, 2016 (edited) fiskunt скрипты отрабатывают, но в соединениях пинга нет, цифры интефейсы перепроверил 3 раза... и второе, если даже вручную погасить маршрут, ну или первого ISP A S 0.0.0.0/0 81.177.200.9 1 ISP2 out то он все равно остается активным тут, гаситься только если отключить интерфейса A S 0.0.0.0/0 81.177.200.9 1 83.220.110.1 83.220.110.1 83.220.110.1 есть какие мысли ? Значит убери в критериях поиска все кроме шлюза, вот так оставь /:if ($ping <= 1) do={/ip route disable [find gateway=81.177.200.9]}; Он так должен вырубить все маршруты через этот шлюз, сколько бы их не было. Ну и в других строках так же Edited January 9, 2016 by fiskunt Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
fiskunt Posted January 9, 2016 (edited) Вот я балда =) А как он будет пинговать если маршрут отключится? Значит только те что до 0.0.0.0/0 /local ping [/ping 77.88.8.1 count=3 interface=интерфейс с адресом 83.220.110.XXX]; /if ($ping >= 2) do={/ip route enable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1}; /if ($ping <= 1) do={/ip route disable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1}; И зачем у тебя столько маршрутов вообще? Для проверки скрипта забей имя интерфейса и вставь его целиком в командную строку микротика. Там увидишь что и как отработало Edited January 9, 2016 by fiskunt Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
awax Posted January 9, 2016 И зачем у тебя столько маршрутов вообще? нулевой и первый - доступ к тику с любого ISP второй - балансировка третий и четвертый - хотел указать что с чего пинговать для netwatch, но это не катит, если шлюз одного из ISP недоступен, то ломиться через второго... вот спросил что поправить в маршрутах. Оба ISP одновременно нормально работают, только вот как реализовать отключение упавшего канала ? скрипты отрабатывают в терминале нормально пинг идет, но если в скрипт вставить левый айпишник для пинга, отключение маршрута не происходит... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
fiskunt Posted January 9, 2016 Пришли скрин терминала с отработавшим скриптом. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
divxl Posted January 9, 2016 второй - балансировка И как отрабатывает балансировка, успешно? Проблем с online играми, skype - нет ? Хотел себе когда то так сделать, но потом отказался и выбрал вариант с часть абонетов на один ISP, часть на другой. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
fiskunt Posted January 9, 2016 Не надо скрин нашел ошибку. Просто квадратную скобку не закрыл =) /local ping [/ping 77.88.8.1 count=3 interface=интерфейс с адресом 83.220.110.XXX]; /if ($ping >= 2) do={/ip route enable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1]}; /if ($ping <= 1) do={/ip route disable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1]}; Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
awax Posted January 9, 2016 divxl там где стоит железка это не нужно... fiskunt сейчас потестю отпишусь, тестю удаленно... Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
awax Posted January 9, 2016 (edited) отключает только этот маршрут A S 0.0.0.0/0 81.177.200.9 1 ISP2 out а можно как то шлюз (шлюзы) скриптом выпиливать из этого маршрута ? A S 0.0.0.0/0 81.177.200.9 1 83.220.110.1 83.220.110.1 83.220.110.1 Edited January 9, 2016 by awax Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
fiskunt Posted January 9, 2016 (edited) отключает только этот маршрут A S 0.0.0.0/0 81.177.200.9 1 ISP2 out а можно как то шлюз скриптом выпиливать из этого маршрута ? A S 0.0.0.0/0 81.177.200.9 1 83.220.110.1 83.220.110.1 83.220.110.1 Конечно. Сделай к этому маршруту комент (например balance) и по нему вноси изменения Скрипт 1: :local ping [/ping 77.88.8.1 count=3 interface=интерфейс с адресом 83.220.110.XXX]; :if ($ping >= 2) do={ /ip route set [find comment="balance"] gateway=83.220.110.1,83.220.110.1,83.220.110.1,81.177.200.9 /ip route enable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1] } :if ($ping <= 1) do={ /ip route set [find comment="balance"] gateway=81.177.200.9 /ip route disable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1] } Скрипт 2: :local ping2 [/ping 77.88.8.1 count=3 interface=интерфейс с адресом 81.177.200.XXX]; :if ($ping2 >= 2) do={ /ip route set [find comment="balance"] gateway=83.220.110.1,83.220.110.1,83.220.110.1,81.177.200.9 /ip route enable [find dst-address=0.0.0.0/0 and gateway=81.177.200.9] } :if ($ping2 <= 1) do={ /ip route set [find comment="balance"] gateway=83.220.110.1,83.220.110.1,83.220.110.1 /ip route enable [find dst-address=0.0.0.0/0 and gateway=81.177.200.9] } Проверь не перепутал ли я адреса, а то башка совсем не варит сегодня Edited January 9, 2016 by fiskunt Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
awax Posted January 9, 2016 (edited) сейчас буду тестить вроде работает.... в данный момент не могу первый ISP проверить, но в любом случае ОГРОМНОЕ СПАСИБО за помощь Edited January 9, 2016 by awax Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
fiskunt Posted January 9, 2016 Эммммм, ну да) Так даже вернее Удачи. Обращайся если что Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Saab95 Posted January 9, 2016 Зачем вообще маршруты отключать? Есть другие варианты - сделайте 2 маршрута и дайте им метки, в манглах маркируйте трафик по адрес листам или любым способом, при проблемах просто редактируйте правило мангла где маркировка пакетов, что бы исключать прохождение трафика по определенным меткам маршрутов. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
fiskunt Posted January 9, 2016 Зачем вообще маршруты отключать? Есть другие варианты - сделайте 2 маршрута и дайте им метки, в манглах маркируйте трафик по адрес листам или любым способом, при проблемах просто редактируйте правило мангла где маркировка пакетов, что бы исключать прохождение трафика по определенным меткам маршрутов. Ты вообще читал что написано выше? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
fiskunt Posted January 11, 2016 В одном скрипте: :local ping1 [/ping 77.88.8.1 count=3 interval=0.2 interface=ISP1]; :local ping2 [/ping 77.88.8.8 count=3 interval=0.2 interface=ISP2]; :if (($ping1 + $ping2) <= 3) do={ :if ($ping1 <= 1) do={ /ip route set [find comment="balance"] gateway=81.177.200.9 /ip route disable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1 and distance >= 1] /ip route enable [find dst-address=0.0.0.0/0 and gateway=81.177.200.9 and distance >= 1] } else={ /ip route set [find comment="balance"] gateway=83.220.110.1 /ip route disable [find dst-address=0.0.0.0/0 and gateway=81.177.200.9 and distance >= 1] /ip route enable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1 and distance >= 1] } } else={ /ip route set [find comment="balance"] gateway=83.220.110.1,83.220.110.1,83.220.110.1,81.177.200.9 /ip route enable [find dst-address=0.0.0.0/0 and gateway=81.177.200.9 and distance >= 1] /ip route enable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1 and distance >= 1] }; Интервал пингов уменьшен до 200мс дабы ускорить скрипт. Время работы менее 2 секунд Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
fiskunt Posted January 11, 2016 (edited) В довершение для тех кому интересно тот же скрипт но с оповещением на емейл о падении канала. :global my васяпупкин@gmail.com; :local ping1 [/ping 77.88.8.1 count=3 interval=0.2 interface=ISP1]; :local ping2 [/ping 77.88.8.8 count=3 interval=0.2 interface=ISP2]; :if (($ping1 + $ping2) <= 3) do={ :if ($ping1 <= 1) do={ /ip route set [find comment="balance"] gateway=81.177.200.9 /ip route disable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1 and distance >= 1] /ip route enable [find dst-address=0.0.0.0/0 and gateway=81.177.200.9 and distance >= 1] /tool e-mail send server=74.125.136.109 port=587 user=$my password=password start-tls=yes to=$my from=$my subject=Mikrotik body="Upal kanal nomer 1" } else={ /ip route set [find comment="balance"] gateway=83.220.110.1 /ip route disable [find dst-address=0.0.0.0/0 and gateway=81.177.200.9 and distance >= 1] /ip route enable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1 and distance >= 1] /tool e-mail send server=74.125.136.109 port=587 user=$my password=password start-tls=yes to=$my from=$my subject=Mikrotik body="Upal kanal nomer 2" } } else={ /ip route set [find comment="balance"] gateway=83.220.110.1,83.220.110.1,83.220.110.1,81.177.200.9 /ip route enable [find dst-address=0.0.0.0/0 and gateway=81.177.200.9 and distance >= 1] /ip route enable [find dst-address=0.0.0.0/0 and gateway=83.220.110.1 and distance >= 1] }; Настройки сервера указаны для гугловской почты gmail.com Если у вас включена двухэтапная аутентификация то для микротика надо создать специальный пароль в настройках почты. Вот здесь: https://security.google.com/settings/security/apppasswords Edited January 11, 2016 by fiskunt Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
awax Posted January 11, 2016 fiskunt Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...