Скрипты в MikrotikOS

Все о специализированных сетевых программных продуктах
Аватара пользователя
BuTaMuH

 
Сообщения: 422
Зарегистрирован:
05 фев 2005, 13:56
Откуда: Кишинёв, Ботаника

Скрипты в MikrotikOS

Сообщение BuTaMuH 12 мар 2009, 16:46

Пора раскрутить тему скриптов.

есть скрипт
Код: Выделить всё
{
/queue simple
:for i from=2 to=80 do=  {
add name=("192.168.1." . $i . "_mdA")  target-addresses=("192.168.1." . $i )  max-limit=2500000/5000000
}
}

добавил 80 квайсов.
Меняю скорости скриптом
Код: Выделить всё
{
/queue simple
:for i from=2 to=80 do=  {
set [find name=("192.168.1." . $i . "_mdA")] max-limit=1024000/4500000
}
}

Работает.
Потом меняю в ручную имя одного из квайса,например 10го, на 192.168.1.10_mdB (клиент пакета B)
и запускаю другой скрипт
Код: Выделить всё
{
/queue simple
:for i from=2 to=80 do=  {
set [find name=("192.168.1." . $i . "_mdB")] max-limit=2048000/8000000
}
}

Не работает.
Причём если запустить второй скрипт то он прорабатывает только до 10го. Т.Е. он работает только с квайсами которые были ранее созданы через оператор add и пока не дойдёт до изменённого. Почему?

п.с. версия 2.9.27
и3вЕNUтЕ зА NеРоВнbIй n04Ерk! (HiComNet)

Аватара пользователя
Igoras
Moderator
Moderator
 
Сообщения: 3248
Зарегистрирован:
22 окт 2003, 20:27
Откуда: Кишинев, Starushka.net

Re: Скрипты в MikrotikOS

Сообщение Igoras 05 май 2009, 22:56

Нашел бажок в скриптинге микротика... версия 3.22... давно хотел сделать, чтобы при смене IP-адреса у мтк, автоматически менялся и dst-address в dst-nat правилах, которые относятся к этому интерфейсу.

При написании уперся в то, что следующий код возвращает вместо адреса хоста адрес подсети.
Код: Выделить всё
set  [find dst-address=$old_ip] dst-address=[/ip dhcp-client get MTC1 address]

После чего попробовал такой вариант:
Код: Выделить всё
set  [find dst-address=$old_ip] dst-address=[/ip address get [find network="92.114.187.0"] address]

Результат был одинаковый - в поле dst-address всегда попадал network/mask вместо address/mask.

Имхо баг... где трекер? куда заносить? Судя по тому, что написано на сайте микротика, суппорт осуществляет дилер...
aitec, надеюсь на вас :)

Кстати, не знаю с чего вы решили что мтк привязал ипы, у меня полмесяца не работал ДХЦП опять, а сегодня начались странные глюки типа 2 минуты пинг есть, а 2 - нет, вырубил все ипы на интерфейсе, включил ДХЦП - за 2 секунды получило, причем другой адрес.. уже потом подумал, что мой текущий наверное кому-то отдало...

Аватара пользователя
Igoras
Moderator
Moderator
 
Сообщения: 3248
Зарегистрирован:
22 окт 2003, 20:27
Откуда: Кишинев, Starushka.net

Re: Скрипты в MikrotikOS

Сообщение Igoras 05 май 2009, 23:04

BuTaMuH,
скорее всего все просто - не находит queue с названием 192.168.1.10_mdА и вылетает из цикла с ошибкой...

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

в твоем случае, кстати, если у всех клиентов типа А стоит уже одна скорость, то можно делать что-то типа такого:
Код: Выделить всё
set [find max-limit=2500000/5000000] max-limit=1024000/4500000

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

Аватара пользователя
BuTaMuH

 
Сообщения: 422
Зарегистрирован:
05 фев 2005, 13:56
Откуда: Кишинёв, Ботаника

Re: Скрипты в MikrotikOS

Сообщение BuTaMuH 06 май 2009, 11:05

спасибо... попробую...

вот недавно человек спросил можно ли сделать так чтоб внешка до определоённого времени шла по каналу1 а после 20.00 и до 8.00 по каналу2...

На сколько я понял можно сделать это путём скрипта который будет отключать рутинг внешки на канал1 и выполнять последующее правило которое будет указывать что рутинг внешки пойдёт по каналу2.
С шедулером ещё не работал в мтике но думаю что не трудно сделать, как мне находить это правило в мангле ? Возможно по коментарию над ним? Можно ли работать над Гейтом и менять его или естьк акой-то другой более удачный и простой вариант?
и3вЕNUтЕ зА NеРоВнbIй n04Ерk! (HiComNet)

Аватара пользователя
Igoras
Moderator
Moderator
 
Сообщения: 3248
Зарегистрирован:
22 окт 2003, 20:27
Откуда: Кишинев, Starushka.net

Re: Скрипты в MikrotikOS

Сообщение Igoras 06 май 2009, 13:14

Можно менять в мангле рутинг-марк, если у тебя есть какие-то рутинг-марки для канала1 и 2 в рутинге, а находить можно по комментарию :)

Аватара пользователя
Вадим

 
Сообщения: 621
Зарегистрирован:
20 июн 2005, 00:29
Откуда: Кишинёв

Re: Скрипты в MikrotikOS

Сообщение Вадим 07 май 2009, 11:48

а ещё можно в ip routes\ менять гейт :)

Аватара пользователя
Igoras
Moderator
Moderator
 
Сообщения: 3248
Зарегистрирован:
22 окт 2003, 20:27
Откуда: Кишинев, Starushka.net

Re: Скрипты в MikrotikOS

Сообщение Igoras 07 май 2009, 16:34

Лично мне не нравится идея создавать кучу маршрутов с разными метками в ip routes

Имхо, лучше иметь по 1, максимум 2 метки на каждый маршрут и раздавать эти метки в mangle, потому что там так или иначе делать это придется.

Аватара пользователя
BuTaMuH

 
Сообщения: 422
Зарегистрирован:
05 фев 2005, 13:56
Откуда: Кишинёв, Ботаника

Re: Скрипты в MikrotikOS

Сообщение BuTaMuH 09 май 2009, 03:13

выглядит примерно так
{
/ip firewall mangle

set [find comment="cannel1"] disable=yes

}


а ещё вопросик... выполнение раз в сутки - interval=1d00:00:00 ?
и ещё вопросик... а как выделить выходные? Например все выходные остаются за cannel2
-----------
аха похоже надо сделать 7 шедулеров соответсвующих каждому дню с интервалами выполнения 7дней - каждый
и3вЕNUтЕ зА NеРоВнbIй n04Ерk! (HiComNet)

Аватара пользователя
Igoras
Moderator
Moderator
 
Сообщения: 3248
Зарегистрирован:
22 окт 2003, 20:27
Откуда: Кишинев, Starushka.net

Re: Скрипты в MikrotikOS

Сообщение Igoras 09 май 2009, 09:25

Хм... или просто в ip firewall mangle extra time выставить время работы правила :)

Аватара пользователя
BuTaMuH

 
Сообщения: 422
Зарегистрирован:
05 фев 2005, 13:56
Откуда: Кишинёв, Ботаника

Re: Скрипты в MikrotikOS

Сообщение BuTaMuH 09 май 2009, 16:24

8) точно , даже и не замечал эти опции
спасибо, буду знать
и3вЕNUтЕ зА NеРоВнbIй n04Ерk! (HiComNet)

Аватара пользователя
BuTaMuH

 
Сообщения: 422
Зарегистрирован:
05 фев 2005, 13:56
Откуда: Кишинёв, Ботаника

Re: Скрипты в MikrotikOS

Сообщение BuTaMuH 13 май 2009, 13:53

Скрипт по аварийному рутингу. Т.е. если интернет пропадает на канале 1, то он рутится на запасной канал2

Код: Выделить всё
#
/ ip firewall mangle 
add chain=output dst-address=174.36.189.131 protocol=icmp action=mark-routing \
    new-routing-mark=cannel1 passthrough=yes comment="Rule for Bypass" \
    disabled=no 
add chain=prerouting in-interface=LAN \
    action=mark-routing new-routing-mark=cannel2 passthrough=yes \
    comment="Bypass_all_in_cannel2" disabled=no

/ tool netwatch 
\n/ip \t=174.36.189.131 timeout=1000ms interval=60s up-script="
\nset  \[find comment=\"Bypass_all_in_cannel2\"\] \
\nset  \rewall mangle 
\n}" comment="" \t=\"Bypass_all_in_cannel2\"\] disable=no
    disabled=no 

........
Если пинг до mikrotik.com с канала1 пропадает то весь интернет пойдёт по каналу2
Интервал проверки 1мин, событие - таймаут=1000мс
:roll:
Последний раз редактировалось BuTaMuH 13 май 2009, 18:28, всего редактировалось 1 раз.
и3вЕNUтЕ зА NеРоВнbIй n04Ерk! (HiComNet)

Аватара пользователя
Igoras
Moderator
Moderator
 
Сообщения: 3248
Зарегистрирован:
22 окт 2003, 20:27
Откуда: Кишинев, Starushka.net

Re: Скрипты в MikrotikOS

Сообщение Igoras 13 май 2009, 15:52

Код: Выделить всё
/ tool netwatch 
\n/ip \t=174.36.189.131 timeout=1000ms interval=60s up-script="
\nset  \[find comment=\"Bypass_all_in_cannel2\"\] \
\nset  \rewall mangle 
\n}" comment="" \t=\"Bypass_all_in_cannel2\"\] disable=no
    disabled=no 

Тут явно какая-то лажа.... криво скопипейстилось в консоли...

А глючить правило не будет?
например так: канал1 падает - нетвотч переключает все на канал 2, начинает пинговаться нужный хост- нетвотч считает что канал1 поднялся и перекд.чет все на канал1 назад :) и так до потери пульса :)

Аватара пользователя
BuTaMuH

 
Сообщения: 422
Зарегистрирован:
05 фев 2005, 13:56
Откуда: Кишинёв, Ботаника

Re: Скрипты в MikrotikOS

Сообщение BuTaMuH 13 май 2009, 16:50

Да, экспорт через конусоль так выдаёт :) .
ты прав... тогда можно прописать дополнительно в рутингах чтоб 174.36.189.131 грузился через канал 1, без маркировки. Может есть и более удачный вариант ... надо подумать. :roll: . В данном случае будет прослеживаться не только потеря физ.линка, но и выход на мир, т.к. не своевременная уплата за интернет может оставить работу интернета по MDix.
оно указывает что пинг с рутера на mikrotik.com работает через канал 1. По крайней мере отключение гэйта в рутингах канала 1 включало правило канала2, а обратное включение - отключала правило.


значит что касается нетвотча..

host=174.36.189.131
на режим UP скрипт
Код: Выделить всё
{
/ip firewall mangle 

set  [find comment="Bypass_all_in_cannel2"] disable=yes

}


на режим DOWN
Код: Выделить всё
{
/ip firewall mangle 

set  [find comment="Bypass_all_in_cannel2"] disable=no

}


естественно правило в манглах с коментарием="Bypass_all_in_cannel2" должно быть выше остальных
и3вЕNUтЕ зА NеРоВнbIй n04Ерk! (HiComNet)

Аватара пользователя
Igoras
Moderator
Moderator
 
Сообщения: 3248
Зарегистрирован:
22 окт 2003, 20:27
Откуда: Кишинев, Starushka.net

Re: Скрипты в MikrotikOS

Сообщение Igoras 13 май 2009, 18:50

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

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

Аватара пользователя
BuTaMuH

 
Сообщения: 422
Зарегистрирован:
05 фев 2005, 13:56
Откуда: Кишинёв, Ботаника

Re: Скрипты в MikrotikOS

Сообщение BuTaMuH 13 май 2009, 19:20

угу в последние месяцы были просто отключения внешки у разных провайдеров.... этот вариант как раз смотрит не на гейт а на внешний хост. Например при не уплате у мну на адсл пинг на гейт будет продолжать работать, и даже может быть вариант что весь MDix будет работать, а отключится только внешка. Этот вариант как раз будет проверять внешний хост.
С моим рутингом, который делит внешку на два канала по портам можно не заметить как пропадёт внешка на адсл-модеме, поэтому и нужен был этот алгоритм переключения полностью на внешку канала тмг. Вроде проверил и всё работает.
и3вЕNUтЕ зА NеРоВнbIй n04Ерk! (HiComNet)

Аватара пользователя
Igoras
Moderator
Moderator
 
Сообщения: 3248
Зарегистрирован:
22 окт 2003, 20:27
Откуда: Кишинев, Starushka.net

Re: Скрипты в MikrotikOS

Сообщение Igoras 02 июн 2009, 11:03

Написал письмо со своей проблемой со скриптом в микротик... ответили на следующий же день... оказывается надо было просто отрезать маску от получаемого из дхцп-клиента значения и потом уже присваивать ее в дст-аддресс. Полную версию скрипта приведу вечером :)

Аватара пользователя
BuTaMuH

 
Сообщения: 422
Зарегистрирован:
05 фев 2005, 13:56
Откуда: Кишинёв, Ботаника

Re: Скрипты в MikrotikOS

Сообщение BuTaMuH 04 июн 2009, 09:40

ну... и где ОНО? 8)
и3вЕNUтЕ зА NеРоВнbIй n04Ерk! (HiComNet)


Вернуться в Сетевое программное обеспечение

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 13

cron