Страница 1 из 1

RB2011UiAS-IN Добавление и удаление правил файрволла через терминал

Добавлено: 03 дек 2016, 18:40
hizor
Конечная задача отключать и включать интернет определенному пользователю в определенное время. Для этих целей для начала попытался добавить и удалить запрещающее правило вручную, но что-то пошло не так...

Код: Выделить всё

[admin@MikroTik] > /ip firewall filter add action=drop chain=forward src-address=192.168.1.86 place-before=1 comment="test";
[admin@MikroTik] > /ip firewall filter remove numbers=1;                                                                   
[admin@MikroTik] > /ip firewall filter add action=drop chain=forward src-address=192.168.1.86 place-before=1 comment="test";
item referred by 'place-before' does not exist (11)
[admin@MikroTik] > /ip firewall filter remove numbers=1;                                                                   
no such item (4)


После первой команды все нормально, запрещающее правило создается как надо. После ввода второй команды правило удаляется, но не то что должно, а следующее в списке под номером 2 (до выполнения первой команды у него был номер 1). Ну а дальше ошибки... Но если после каждой команды вводить

Код: Выделить всё

/ip firewall filter print

то правило добавляется и удаляется корректно.
Это я что-то делаю не так или это баг микротика?

Re: RB2011UiAS-IN Добавление и удаление правил файрволла через терминал

Добавлено: 03 дек 2016, 19:29
Vlad-2
Отвечу обобщённо:
1) с последних прошивок (с 6.37.х точно) в закладке Extra каждого правила есть пункт Time - где можно выставлять/настраивать время работы правил,
и возможно такая автоматизация будет логичная, правильная и более проще для Вас, как администратора.
2) по поводу Ваших правил и смещения нумерации: думаю тут как в таблице или в базе данных, у Вас есть список, с ним провели работу, в базе он изменился, но на экране у Вас
уже не актуальная копия, так и с правилами...Вы вывод сделали, видите правила и их номера, сделали над ними работу (удалили), правила сместились (внутри микротика),
но Вы пока это не видите, список ранее который у Вас был в консоле устарел. Так что скорее это не баг, а логичное поведение, хотя честно признаюсь, из консоли с файрволом не работаю.
3) Всё же чтобы правильно управлять правилами или нужными параметрами в микротике, обычно делают им уникальный комментарий, а уже потом через скрипт находят этот комментарий,
а значит и нужное и именно то правило/параметр который нужен для работы/включения/удаления/изменения, так что если Вас первый пункт не убедил, то надо
более уникально помечать правила и их обрабатывать, используя комментарий как ключ.

И последний вопрос/замечание: у меня роутер кроме осуществления доступа в Интернет, обрабатывает локальные каналы и локальную маршрутизацию,
поэтому не логично ограничивать юзера путём применения к нему команды ДРОП для цепочки правил Форвард.
Не хотите давать интернет, так отключите ему правила NAT и всё.
Но сразу говорю, по этому пункту лишь моё видение, может у Вас своя специфика, поэтому лишь частично мне этот метод и не понравился.

Re: RB2011UiAS-IN Добавление и удаление правил файрволла через терминал

Добавлено: 03 дек 2016, 19:33
KARaS'b
Не замарачивался такими игрищами через терминал, но если смотреть на вашу конечную задачу, то вы странно пытаетесь ее решить, точнее слишком уж вероломно.
Если пользователь всего один и выключение и включение должно происходить в одно и то же время, то в правиле есть опция (как указать через терминал не знаю) отработки по времени, т.е. (в винбоксе вкладка extra) ваше правило будет работать в определенное время, как по часам так и по дням недели. Если у вас партия таких людей, доступом которых надо управлять, то есть смысл собрать их в адрес лист и управлять их доступом всего одним правилом, со временем все так же как описал выше. Если же вам нужно рандомно ограничивать одного человека или группу, то не стоит удалять и добавлять правила, его можно оставить и выключать когда не надо, или включать когда нужно.

Re: RB2011UiAS-IN Добавление и удаление правил файрволла через терминал

Добавлено: 03 дек 2016, 20:03
algerka
hizor писал(а): но что-то пошло не так...

перед remove по номеру всегда надо сначала делать print !

Re: RB2011UiAS-IN Добавление и удаление правил файрволла через терминал

Добавлено: 03 дек 2016, 20:56
hizor
Vlad-2 писал(а):с последних прошивок (с 6.37.х точно) в закладке Extra каждого правила есть пункт Time

Версия 6.32.4 пункт Time имеется. Спасибо за наводку, так и правда на много проще.

Vlad-2 писал(а): у Вас есть список, с ним провели работу, в базе он изменился, но на экране у Вас
уже не актуальная копия, так и с правилами...

Та же история с этими командами в скриптах, не только в терминале.

algerka писал(а):перед remove по номеру всегда надо сначала делать print !

Тогда как быть с print в скриптах? как её завершать, она ведь требует ввода Ctrl-C, со стороны пользователя иначе скрипт так и будет висеть?

Re: RB2011UiAS-IN Добавление и удаление правил файрволла через терминал

Добавлено: 03 дек 2016, 23:02
podarok66
Так зачем же удалять правило? Чем вам не вариант с disabled=yes / dasabled=no , а сами правила пометить комментариями и по ним искать нужные в скриптах?

Re: RB2011UiAS-IN Добавление и удаление правил файрволла через терминал

Добавлено: 06 дек 2016, 14:48
algerka
hizor писал(а):
algerka писал(а):перед remove по номеру всегда надо сначала делать print !

Тогда как быть с print в скриптах? как её завершать, она ведь требует ввода Ctrl-C, со стороны пользователя иначе скрипт так и будет висеть?

В скриптах ни в коем случае по номеру нельзя. Как уже писалось раньше только через find чего-то уникального, например комментарий.

Re: RB2011UiAS-IN Добавление и удаление правил файрволла через терминал

Добавлено: 06 дек 2016, 20:06
Dragon_Knight
Можете посмотреть как реализовано добавление и удаление у меня : viewtopic.php?f=13&t=6640