Страница 1 из 2
Взять статус маршрута\правила\итд
Добавлено: 10 окт 2017, 11:44
KARaS'b
Господа, что-то не понимаю я как взять "статус" того или иного правила в фаерволе или например маршрута. Под статусом я подразумеваю включено оно или выключено.
Для примера зачем оно:
Проверяем, например, маршрут, если включен, то ничего не делаем, если выключен, то включаем.
Вот как получить это состояние маршрута, включен он, или выключен?
Re: Взять статус маршрута\правила\итд
Добавлено: 10 окт 2017, 20:58
podarok66
Смотря что вы имеете ввиду под включен. Если активен или нет, то:
Код: Выделить всё
[podarok66@MikroTik] > :put [/ip route get [find comment="For WiveRTNL"] active ]
true
Если выключен или нет совсем, то:
Код: Выделить всё
:put [/ip route get [find comment="For WiveRTNL"] disabled ]
false
Re: Взять статус маршрута\правила\итд
Добавлено: 10 окт 2017, 21:20
KARaS'b
Шикарно, то что надо! Спасибо)
Re: Взять статус маршрута\правила\итд
Добавлено: 15 июн 2020, 09:26
Chai
Спасибо, где только ни искал, здесь только нашел.
Re: Взять статус маршрута\правила\итд
Добавлено: 28 авг 2020, 23:25
mrsam510
Приветствую.
Продолжу тему:
А если хочется управлять этим правилом по условию?
что-то типа:
Если пришёл запрос на address:port (как отследить этот запрос?)
/ip route get [find comment="For WiveRTNL"] = disabled
Re: Взять статус маршрута\правила\итд
Добавлено: 29 авг 2020, 21:03
podarok66
mrsam510 писал(а): ↑28 авг 2020, 23:25
Если пришёл запрос на address:port (как отследить этот запрос?)
/ip route get [find comment="For WiveRTNL"] = disabled
Ни фига не понял ваших желаний

. Если можно, перефразируйте, я попробую разобраться.
Re: Взять статус маршрута\правила\итд
Добавлено: 29 авг 2020, 21:28
podarok66
Ааааа, кажись разобрался в ваших желаниях.
Вы хотите по обращению из вне к определённому адресу по определённому порту происходило определённое событие. Это достаточно кривое задание, я бы никогда не взялся за его реализацию. Но в целом описать порядок действий могу.
В том же Mangle есть такой вариант в action, как log. То есть событие просто логируется. Далее пишем скрипт, в котором парсим лог на предмет записи с заранее определённым перфиксом. При нахождении записи скрипт реагирует заданным образом. В конце работы скрипта обязательная очистка логов.
Придётся учитывать, что логи в memory у вас будут стираться. Это говорит, что вам останется для полноценного контроля только текстовый лог . Не всякий админ с таким согласится. Ну или можно сохранять логи на сервер, у меня часть железок именно так работает.
Ссылки по упоминаемым вопросам
https://forum.nag.ru/index.php?/topic/1 ... u-v-logah/
https://flammlin.com/blog/2020/04/05/cl ... -mikrotik/
Или изучаем более сложные варианты парсинга
https://wiki.mikrotik.com/wiki/Log_Pars ... ger_Script
Re: Взять статус маршрута\правила\итд
Добавлено: 31 авг 2020, 10:47
mrsam510
Добрый день.
Перефразирую задачу:
При переходе в браузере на address:port, должно включаться определённое правило.
А если то же самое проделать через add-dst-to-address-list.
Добавляем адрес в адрес лист на короткое время. Скриптом проверяем наличие адреса в списке и включаем/выключаем правило.
Как получить адрес из адреслиста?
Re: Взять статус маршрута\правила\итд
Добавлено: 01 сен 2020, 11:22
Sertik
Тема неоднократно обсуждалась.
Сделайте, как Вы и хотели правило, которое помещает в адрес-лист mylist адрес.
Скрипт приведенный ниже вставьте в планировщик с исполнением через нужный интервал времени.
Скрипт будет искать все адреса в адрес-листе, всем новым найденным записям в комментарий ставить отметку "executed" и если новые адрес/aдреса найдены в интервале времени исполнения, то выполняется действие в предпоследней строке (# /system script run muzic - замените, на нужное Вам.
Код: Выделить всё
:local listaddress [:toarray ""]
:local myaddresslist "mylist"
:foreach i in=[/ip firewall address-list find where list=$myaddresslist] do={:if ([:len [/ip firewall address-list get $i comment]]=0) do={
:set listaddress ($listaddress, [/ip firewall address-list get $i address])
/ip firewall address-list set $i comment="executed"}};
:if ([:len $listaddress]!=0) do={
:log warning "Sheduller <monitor_addresslist> follow steps ..."
# /system script run muzic
}
Re: Взять статус маршрута\правила\итд
Добавлено: 01 сен 2020, 21:32
podarok66
Оу! Отличный способ. Только нужно учитывать, что если соединение проходит с одного и того же адреса ( при add src-address-list), вторично в адрес лист этому адресу не попасть, нужно при отработке скрипта стирать запись. Septik, великолепная идея, как я о ней не вспомнил! Спасибо!