Я создал довольно обширный скрипт, используя идеи из других скриптов, которые видел. Этот скрипт выполняет несколько задач. Он пингует хост заданное количество раз и меняет метрику указанного маршрута с 1 на 3, если не возвращается нужное количество пингов. [То есть, если из 10 пингов пришло меньше 8, считаем маршрут недоступным.] На мой взгляд, это намного лучше, чем просто черно-белый тест по пингу. [То есть, просто проверять, есть ли хоть один ответ — и считать канал живым.] Также, задавая значение RTT [интервала], можно делать грубую оценку задержки и считать канал недоступным, если из x из y пакетов вернулись с временем больше указанного RTT. [Нельзя определить среднее RTT, но можно задать, например, 300 мс. Если пакет не возвращается быстрее 300 мс — это считается «пропущенным» пингом. Таким образом, если 300 мс — ваш минимально приемлемый RTT, вы узнаете, что либо ответ ICMP пришел позже, либо не пришел вообще.] Скрипт устанавливает основному маршруту метрику 3, когда он недоступен, и возвращает метрику 1, когда «включён» — это позволяет продолжать проверять маршрут, чтобы увидеть, восстановился ли он, не выводя маршрут из работы и не отключая интерфейс. [Это также полезно, если вы, как и я, собираете статистику по внешним интерфейсам с помощью чего-то вроде smokeping — интерфейс продолжит отвечать, даже если официально он «вне строя». Это позволяет проводить тесты, искать проблемы и собирать статистику, даже когда интерфейс считается «включенным».] Запасной маршрут следует задавать с метрикой 2. Скрипт отправляет вам письмо со статусом, когда указанный маршрут пропадает или восстанавливается. Опционально он обновит DynDNS запись с новым IP текущего маршрута по умолчанию. [Это позволяет перенаправлять VPN-туннели и т.п. на основе DNS-записи. (У меня почти готов скрипт для переподключения IPSec туннеля на ROS.)] Код хорошо документирован, я провёл много тестов — должен работать стабильно. Он пишет состояние IP на SD или флеш для сохранения между перезагрузками. [Похоже на мой DynDNS скрипт.] Изменения в DynDNS делаются только если IP сменился [что происходит при потере маршрута]. Запись во флеш происходит только при изменении состояния маршрута (вверх или вниз). Поэтому частые запуски не будут сильнее нагружать флеш, чем редкие. Скрипт создан для ROS 5.12, тестировался на 450G. Должен работать и на других устройствах и, возможно, других версиях ROS, но точной гарантии нет. **Если вы используете этот скрипт, буду признателен за обратную связь. Работает ли? Если нет, какие возникали проблемы? На каком железе запускали? Какая версия ROS? Комментарии, вопросы. Если вы изменяли код, не могли бы прислать изменения обратно, чтобы я мог их интегрировать? И, наконец, хорошая карма не помешает.** 2012-03-21 — обновление до v1.0.0.8 [Если у вас старая версия — пожалуйста, возьмите новую, в старой был критический баг.] 2012-03-26 — обновление до v1.0.2.4 — МНОГО изменений. — Скрипт создаёт нужные файлы для dyndns обновлений, если их нет, чтобы пользователю не пришлось создавать их вручную. — Добавлена документация по созданию правила mangle и изменению скрипта для этого правила — теперь ping трафик продолжит идти по основному соединению, когда оно «пропало», чтобы тестировать «упавшее» соединение, пока оно не поднимется и не изменит метрику. — Добавлена возможность использовать FQDN в качестве цели пинга. — Команды :resolve перенесены в конец скрипта, чтобы ошибки не ломали важные части скрипта. — Много других исправлений и улучшений. Скрипт должен быть очень надёжным. Я провёл много тестов. В коде осталось достаточно :puts для отладки — возможно, позже я их уберу, но старался минимизировать :log вывод, оставляя только полезный. Логи вряд ли изменятся сильно. **** Обновление 2012/04/01 **** v1.0.2.5 Небольшие доработки. Для тех, у кого была предыдущая версия, обновление не нужно. Лучше поддержка новичков в части инициализации файлов. Комментарии в начале кода получились очень длинными — извините, но так нужно для документации. По крайней мере, они не такие короткие, как man-страницы! Пожалуйста, дайте знать, как у вас работает. Добавления, комментарии, изменения в коде приветствуются. Карма не помешает! netwatch-1.0.2.5-pub.txt (22.4 KB)
Скрипт в стиле Netwatch
Скрипт в стиле Netwatch, RouterOS
|
14.03.2012 21:24:00
|
|
|
|
|
|
22.01.2015 09:51:00
Кто-нибудь уже использовал этот скрипт на версии 6.x?
|
|
|
|
|
|
26.05.2022 20:29:00
последнее изменение — 25 марта 2012 года, версия 1.0.2.4. Проверено только с ROS 5.12 и на RB450G.
|
||||
|
|
|
|||
Читают тему
