скрипт автоматической подмены маркировки роута

Обсуждение ПО и его настройки
Ответить
dym69
Сообщения: 45
Зарегистрирован: 03 дек 2012, 14:29

Есть манглы в firewall:
[admin@MikroTik] /ip firewall mangle> print
Flags: X - disabled, I - invalid, D - dynamic
0 ;;; Вторая группа (По умолчанию groupB)
chain=prerouting action=mark-routing new-routing-mark=groupB passthrough=no src-address=192.168.0.192/26
1 ;;; Первая группа (По умолчанию GroupA)
chain=prerouting action=mark-routing new-routing-mark=groupA passthrough=yes src-address=192.168.0.102-192.168.0.191

Таким образом маркируется трафик от разных подсетей в направлении разных GW
Когда падает один провайдер (как правило второй) мне достаточно просто поменять new-routing-mark с одного на другой. Роутинг моментально отрабатывает и компьютеры послушно уходят в сеть по другому каналу.
Вопрос: Какой надо скрипт, чтобы автоматом понимать, что провайдер умер (либо провод оборван нет carier, либо где-то беда у него и физически он включен, но инета нет) и автоматом поменять маркировку роута. и как автоматом вернуть назад, когда все заработает?

Отдельный вопрос, можно ли проверять скорость канала и в зависимости от нее менять маркировку тоже?


Аватара пользователя
simpl3x
Модератор
Сообщения: 1532
Зарегистрирован: 19 апр 2012, 14:03

viewtopic.php?f=3&t=3199
почитайте тут. задача:
проверка яндекса на пинге и если потери, то переключение на резерв. при восстановлении возврат.

определить скорость в канале сложно, я бы сказал не возможно. для этого нужна удаленная сторона, которая будет принимать или генерировать трафик.


dym69
Сообщения: 45
Зарегистрирован: 03 дек 2012, 14:29

Идея понравилась! Но, у меня шлюз провайдера доступен всегда (почти) его пинговать бессмысленно. Действительно пинговать яндекс или еще что.
Однако Яндекс надо пинговать таким образом, чтобы было два пинга. через оба шлюза. И тогда выбирать рабочий и ставить ему маркер для роута. а если оба рабочих, то оставлять основной.
Как заставить пинги ходить через оба шлюза сразу?


Аватара пользователя
simpl3x
Модератор
Сообщения: 1532
Зарегистрирован: 19 апр 2012, 14:03

через роутмарки.
т.е. сначала метим пакет от мтика одним роутмарком посылая его одним маршрутом, потом вторым роутмарком и посылаем его вторым маршрутом.


dym69
Сообщения: 45
Зарегистрирован: 03 дек 2012, 14:29

В общем делюсь!
Маркирую роут в зависимости от доступности dns

[admin@MikroTik] /system> scheduler print
Flags: X - disabled
# NAME START-DATE START-TIME INTERVAL ON-EVENT RUN-COUNT
0 ChannalChanging startup 45s ChanChang 3

[admin@MikroTik] /system> script print
Flags: I - invalid
0 name="ChanChang" owner="admin" policy=ftp,reboot,read,write,policy,test,winbox,password,sniff,sensitive,api last-started=feb/28/2013 17:44:40 run-count=11
source=
:global pingcount 3;
:global checkip1 212.1.230.111;
:global checkip2 212.1.224.6;
:global testip1 [/ping $checkip1 count=$pingcount];
:global testip2 [/ping $checkip2 count=$pingcount];
:global currentmark [ /ip firewall mangle get 0 new-routing-mark];
:if (($testip1=0) && ($testip2=0) && ($currentmark="groupB")) do={ /ip firewall mangle set 0 new-routing-mark="groupA"; :log error "chanal DOWN"}
:if (($testip1=3) && ($testip2=3) && ($currentmark="groupA")) do={ /ip firewall mangle set 0 new-routing-mark="groupB"; :log error "chanal UP"}

Проверяю доступность каждые 45 секунд
Если пинги проходят ничего не делаю или возвращаю в исходное. Если проблема- меняю маркер
В зависимости от маркера выбирается роут на провайдера.
Скрипт можно еще больше универсализировать

Задачу решил. Спасибо всем кто участвовал!!! Но все же интересно, как заставить мтик пинговать через второй интерфейс lte
Это не дефолтный маршрут и оба сделать дефолтными я не смог :(


Ответить