Передача команд брандмауэру
Передача команд брандмауэру
Подскажите, пожалуйста, где ещё может быть прописано какие команды передаются брандмауэру кроме как в настройках utm_admin "Настройки" - "Правила firewall"?
rfw5.cfg:
Код: Выделить всё
### firewall_path
## Description: Path to the executable file that performs firewall management.
## Possible values: <name of an executable file>
## Required field
В rfw5.cfg прописано:
В /usr/local/bin/mikrotik_ssh.sh прописано:
По адресу 192.168.0.4 находится устройство MikroTik RouterBoard, я так понимаю все команды передаются ему по ssh, только непонятно как это работает, если в rfw5.cfg логин - mt1, а в скрипте - utm5.
В рамках исследования системы этот вопрос конечно же интересен, но всё же изначальный вопрос был не КАК передаются команды брандмауэру, а КАКИЕ передаются команды брандмауэру. Передаются только те команды, которые прописаны в настройках utm_admin "Настройки" - "Правила firewall" или ещё какие-то?
Чтобы ещё лучше понять в чём суть вопроса - опишу практическую задачу, которая возникла вот сейчас:
Абоненты идентифицируются по MAC-адресу, DHCP-сервер, работающий на MikroTik RouterBoard выдаёт им статические ip-адреса. Соответственно чтобы поменять абоненту ip-адрес нужно передать на MikroTik RouterBoard команды.
В UTM я вижу только два правила, которые взаимодействуют с DHCP-сервером, смотрите скриншоты:
Тут явно что-то недоработано.
Во-первых при изменении ip-адреса, после внесения изменений приходится делать "выключить Интернет", "включить Интернет", чтобы сработали эти правила, как бы сделать так чтобы команды генерировались без выключения просто на изменение данных.
Во вторых, команда "/ip dhcp-server lease add address=UIP mac-address=MAC" завершится ошибкой, если правило с таким ip-адресом или mac-адресом уже существует, поэтому получается что никакие команды не выполняются, настройки DHCP-сервера остаются прежненеми и при смене ip-адреса в UTM абонент продолжает получать старый ip-адрес.
Что со всем этим можно сделать?
Код: Выделить всё
firewall_type=local
firewall_path=/usr/local/bin/mikrotik_ssh.sh
rfw_name=mt1
rfw_login=mt1
dont_fork=yes
Код: Выделить всё
#!/bin/sh
ssh utm5@192.168.0.4 "$*"
echo "$*" >> /netup/utm5/log/mikrotik.log
В рамках исследования системы этот вопрос конечно же интересен, но всё же изначальный вопрос был не КАК передаются команды брандмауэру, а КАКИЕ передаются команды брандмауэру. Передаются только те команды, которые прописаны в настройках utm_admin "Настройки" - "Правила firewall" или ещё какие-то?
Чтобы ещё лучше понять в чём суть вопроса - опишу практическую задачу, которая возникла вот сейчас:
Абоненты идентифицируются по MAC-адресу, DHCP-сервер, работающий на MikroTik RouterBoard выдаёт им статические ip-адреса. Соответственно чтобы поменять абоненту ip-адрес нужно передать на MikroTik RouterBoard команды.
В UTM я вижу только два правила, которые взаимодействуют с DHCP-сервером, смотрите скриншоты:
Тут явно что-то недоработано.
Во-первых при изменении ip-адреса, после внесения изменений приходится делать "выключить Интернет", "включить Интернет", чтобы сработали эти правила, как бы сделать так чтобы команды генерировались без выключения просто на изменение данных.
Во вторых, команда "/ip dhcp-server lease add address=UIP mac-address=MAC" завершится ошибкой, если правило с таким ip-адресом или mac-адресом уже существует, поэтому получается что никакие команды не выполняются, настройки DHCP-сервера остаются прежненеми и при смене ip-адреса в UTM абонент продолжает получать старый ip-адрес.
Что со всем этим можно сделать?
Непонятна Ваша логика. По событию "Включение интернета" Вы редактируете существующую связку IP-MAC на микротике, а по событию "Выключение интернета" - добавляете новую.
По-хорошему, Вам нужно у правила "MAC" изменить событие на "Изменение сервисной связки", а у правила "Add IP+MAC" на "Добавление сервисной связки". Плюс добавить еще одно правило, например, "Del IP+MAC", записать туда команду "/ip dhcp-server lease remove [find address=UIP]" и поставить событие "Удаление сервисной связки". Тогда всё будет работать так, как Вы хотите.
Только это Вам не поможет включать/выключать интернет у абонента. Во-первых, у абонентского устройства может не закончиться аренда IP-адреса и оно ещё какое-то время будет работать с назначенным адресом. Во-вторых, никто не мешает абоненту прописать IP-адрес вручную и он также будет пользоваться интернетом. Все вышеперечисленные действия позволят Вам только выдавать IP-адреса согласно маку.
Чтобы включать/выключать интернет Вам нужно использовать firewall на микротике. Схема такая же. Делаете (в IP-Firewall-Filter rules) два правила на входящий и исходящий трафик. На вкладке Advanced правила указываете адрес-лист, в котором будут абоненты с включённым интернетом. Затем (или, наоборот, в начале) создаёте адрес-лист (в IP-Firewall-Address Lists) с таким же именем, какое указали в правиле. После этого надо создать в админке три правила фаервола. Одно повесить на событие "Включение интернета", второе на "Выключение интернета", третье на "Изменение сервисной связки". Ну и, соответственно, прописать в них команды, которые будут добавлять, удалять и изменять записи в адрес-листе на микротике. Примерно как-то так.
По-хорошему, Вам нужно у правила "MAC" изменить событие на "Изменение сервисной связки", а у правила "Add IP+MAC" на "Добавление сервисной связки". Плюс добавить еще одно правило, например, "Del IP+MAC", записать туда команду "/ip dhcp-server lease remove [find address=UIP]" и поставить событие "Удаление сервисной связки". Тогда всё будет работать так, как Вы хотите.
Только это Вам не поможет включать/выключать интернет у абонента. Во-первых, у абонентского устройства может не закончиться аренда IP-адреса и оно ещё какое-то время будет работать с назначенным адресом. Во-вторых, никто не мешает абоненту прописать IP-адрес вручную и он также будет пользоваться интернетом. Все вышеперечисленные действия позволят Вам только выдавать IP-адреса согласно маку.
Чтобы включать/выключать интернет Вам нужно использовать firewall на микротике. Схема такая же. Делаете (в IP-Firewall-Filter rules) два правила на входящий и исходящий трафик. На вкладке Advanced правила указываете адрес-лист, в котором будут абоненты с включённым интернетом. Затем (или, наоборот, в начале) создаёте адрес-лист (в IP-Firewall-Address Lists) с таким же именем, какое указали в правиле. После этого надо создать в админке три правила фаервола. Одно повесить на событие "Включение интернета", второе на "Выключение интернета", третье на "Изменение сервисной связки". Ну и, соответственно, прописать в них команды, которые будут добавлять, удалять и изменять записи в адрес-листе на микротике. Примерно как-то так.
Это не моя логика, настраивали до меня.Voronok писал(а):Непонятна Ваша логика. По событию "Включение интернета" Вы редактируете существующую связку IP-MAC на микротике, а по событию "Выключение интернета" - добавляете новую.
По-хорошему, Вам нужно у правила "MAC" изменить событие на "Изменение сервисной связки", а у правила "Add IP+MAC" на "Добавление сервисной связки". Плюс добавить еще одно правило, например, "Del IP+MAC", записать туда команду "/ip dhcp-server lease remove [find address=UIP]" и поставить событие "Удаление сервисной связки". Тогда всё будет работать так, как Вы хотите.
Только это Вам не поможет включать/выключать интернет у абонента. Во-первых, у абонентского устройства может не закончиться аренда IP-адреса и оно ещё какое-то время будет работать с назначенным адресом. Во-вторых, никто не мешает абоненту прописать IP-адрес вручную и он также будет пользоваться интернетом. Все вышеперечисленные действия позволят Вам только выдавать IP-адреса согласно маку.
Чтобы включать/выключать интернет Вам нужно использовать firewall на микротике. Схема такая же. Делаете (в IP-Firewall-Filter rules) два правила на входящий и исходящий трафик. На вкладке Advanced правила указываете адрес-лист, в котором будут абоненты с включённым интернетом. Затем (или, наоборот, в начале) создаёте адрес-лист (в IP-Firewall-Address Lists) с таким же именем, какое указали в правиле. После этого надо создать в админке три правила фаервола. Одно повесить на событие "Включение интернета", второе на "Выключение интернета", третье на "Изменение сервисной связки". Ну и, соответственно, прописать в них команды, которые будут добавлять, удалять и изменять записи в адрес-листе на микротике. Примерно как-то так.
Я описал только правила, которые взаимодействуют с DHCP-сервером, их всего два, ещё есть правила, взаимодействующие с фаерволом, их - семь, и там свои грабли. Так на микротике разрешён трафик абонентов, включённых в группу allow_list и запрещён для группы no_money. Правила реагируют тоже только на события "включение Интернета", "выключение Интернета", включение осуществляется командой:
Код: Выделить всё
/ip firewall address-list add address=UIP list=allow_list comment=UID
Про изменение сервисной связки. Я так понимаю правило будет работать если в сервисной связке изменится MAC, но не будет работать, если изменится IP?
Даже простое открытие и нажатие "Ок" в сервисных связках приведёт к срабатыванию правила по событию "Изменение сервисной связки".
Ну вот правила управления DHCP у Вас, на мой взгляд, такое ощущение, что сделаны от балды. Сделайте как я написал в первой части поста и посмотрите на результат, должно работать корректно.
А вообще совет. Выпишите на бумажку (в блокнот) в виде таблицы все Ваши правила из админки, распишите, какие действия и по каким событиям они выполняют на микротиках и всё проанализируйте. Тогда станет понятна логика работы и всплывут все косяки. После этого исправить всё будет лишь делом времени.
Ну вот правила управления DHCP у Вас, на мой взгляд, такое ощущение, что сделаны от балды. Сделайте как я написал в первой части поста и посмотрите на результат, должно работать корректно.
А вообще совет. Выпишите на бумажку (в блокнот) в виде таблицы все Ваши правила из админки, распишите, какие действия и по каким событиям они выполняют на микротиках и всё проанализируйте. Тогда станет понятна логика работы и всплывут все косяки. После этого исправить всё будет лишь делом времени.
Ещё раз:
события "включение интернета", "выключение интернета" возникают когда оператор в карточке пользователя на вкладке лицевые счета выполняет действия "выключить Интернет", "включить Интернет"
события "изменение сервисной связки" нет (во всяком случае в моей версии utm 5.3-002 я не вижу), есть "изменение пользователя", "изменение тех. параметра" и "изменение связки IP трафик". Какое из них должно возникать когда оператор открывает и нажимает "Ок" в сервисных связках?
Также интересуюсь какие события должны возникать в определённые моменты времени на системных часах. Допустим есть два временных диапазона 00.00-07.59 и 08.00-23.59, и есть несколько тарифов в которых нужно включать "ночное ускорение"
события "включение интернета", "выключение интернета" возникают когда оператор в карточке пользователя на вкладке лицевые счета выполняет действия "выключить Интернет", "включить Интернет"
события "изменение сервисной связки" нет (во всяком случае в моей версии utm 5.3-002 я не вижу), есть "изменение пользователя", "изменение тех. параметра" и "изменение связки IP трафик". Какое из них должно возникать когда оператор открывает и нажимает "Ок" в сервисных связках?
Также интересуюсь какие события должны возникать в определённые моменты времени на системных часах. Допустим есть два временных диапазона 00.00-07.59 и 08.00-23.59, и есть несколько тарифов в которых нужно включать "ночное ускорение"
Писал по памяти. Под событием "изменение сервисной связки" подразумевалось "изменение связки IP трафик".
События "включение интернета", "выключение интернета" возникают также при окончании средств на счету и пополнении баланса.
С ночным ускорением не помогу, т.к. биллинг для этого не используем, рулим на оборудовании. По идее, нужно смотреть в сторону модуля динамического шейпирования. События - связанные с шириной входящего/исходящего каналов (там есть такие).
События "включение интернета", "выключение интернета" возникают также при окончании средств на счету и пополнении баланса.
С ночным ускорением не помогу, т.к. биллинг для этого не используем, рулим на оборудовании. По идее, нужно смотреть в сторону модуля динамического шейпирования. События - связанные с шириной входящего/исходящего каналов (там есть такие).
Сегодня попробовал поменять правила для dhcp-сервера и ничего не получилось.
Событие на изменение сервисной связки возникает, но микротик его не обрабатывает.
Попробовал в командной строке микротика ввысти сгенерированную команду:
Не ругается, но ничего и не делает.
Связка с таким MAC-адресом в микротике уже существует. IP в связке не меняется.
Событие на изменение сервисной связки возникает, но микротик его не обрабатывает.
Попробовал в командной строке микротика ввысти сгенерированную команду:
Код: Выделить всё
/ip dhcp-server lease set [find address=10.84.113.26] mac-address=50:AF:73:12:B6:EE
Связка с таким MAC-адресом в микротике уже существует. IP в связке не меняется.
Поправьте скрипт так, чтобы он все команды которые посылаются на микротик складывал в лог рядом. и разбирайте по каждому вариантуIskatel писал(а):Сегодня попробовал поменять правила для dhcp-сервера и ничего не получилось.
Событие на изменение сервисной связки возникает, но микротик его не обрабатывает.
Попробовал в командной строке микротика ввысти сгенерированную команду:Не ругается, но ничего и не делает.Код: Выделить всё
/ip dhcp-server lease set [find address=10.84.113.26] mac-address=50:AF:73:12:B6:EE
Связка с таким MAC-адресом в микротике уже существует. IP в связке не меняется.
Команды из лога я уже пробовал использовать непосредственно в командной строке микротика. Пришёл к выводу, что дело как раз в команде, тут нужно выполнять не одну, а сразу несколько команд. Есть ли возможность из UTM5 передавать на Микротик последовательность команд или для этого нужен скрипт на самом микротике.
Нашёл то, что команды MikroTik можно вводить в фигурных скобках через точку с запятой. Соответственно хочу передать конструкцию из трёх команд: первые две будут удалять связки, если уже существуют связки с заданным IP и заданным MAC, чтобы не было ошибки при выполнении третьей команды. Написал так:
и вписал эту команду в правило возникающее при событии "Изменение связки IP трафик".
Правило срабатывает при редактировании сервисной связки, но параметры из него удаляются. В лог попадает это:
Код: Выделить всё
{/ip dhcp-server lease remove [find address=UIP];/ip dhcp-server lease remove [find mac-address=MAC];/ip dhcp-server lease add address=UIP mac-address=MAC}
Правило срабатывает при редактировании сервисной связки, но параметры из него удаляются. В лог попадает это:
Код: Выделить всё
{/ip dhcp-server lease remove [find address=];/ip dhcp-server lease remove [find mac-address=];/ip dhcp-server lease add address= mac-a
ddress=}