Страница 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
Ни фига не понял ваших желаний :du_ma_et: . Если можно, перефразируйте, я попробую разобраться.

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, великолепная идея, как я о ней не вспомнил! Спасибо!