Можно ли занулять с помощью Layer7 и как это сделать?

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Ответить
FUN-ARP
Сообщения: 6
Зарегистрирован: 15 фев 2021, 19:51

Хотел бы узнать имеет ли вообще Layer7 такую возможность: не только обнаружить данные но еще и записать их (например нолями)? Не знаю, заложена ли такая функциональность. Попытался сымитировать присваивание нуля с помощью выражения "^.+=0".
Создал разрешающее правило файрвола с регулярным выражением включающим "^.+=0". И разместил его вверху по приоритету.

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

^.+=0(|[<=0|>=0]in[<=0|>=0]addr[<=0|>=0]+=0|[.in.addr.]+=0|)?i.+$
Ниже создал аналогичное запрещающее правило с таким же выражением но без "+=0". Разместил его под первым правилом.

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

^.+(|[<=0|>=0]in[<=0|>=0]addr[<=0|>=0]+=0|[.in.addr.]|)?i.+$
В результате траффик пакетов проходил через оба правила, это было видно на счетчике пакетов. Что проходит через первое правило?


FUN-ARP
Сообщения: 6
Зарегистрирован: 15 фев 2021, 19:51

Regex cheat sheet пишет что можно заменять символы. А RouterOS это поддерживает?
 
Изображение


Аватара пользователя
hardrockbaby
Сообщения: 70
Зарегистрирован: 19 сен 2021, 16:11

FUN-ARP писал(а): 13 ноя 2021, 19:00 Хотел бы узнать имеет ли вообще Layer7 такую возможность: не только обнаружить данные но еще и записать их (например нолями)?
Попытался сымитировать присваивание нуля с помощью выражения "^.+=0".
Создал разрешающее правило файрвола с регулярным выражением включающим "^.+=0". И разместил его вверху по приоритету.
Согласно информации L7 может только обнаружить. Про замену данных ни слова.
Для RegEx выражения недопустимо в искомой строке производить замену. Должна быть строка поиска и отдельная строка замены.
То, что ты хотел присвоить 0 посредством "^.+=0" - неправильно. Строка отработает только на поиск данных. Например, твоё выражение найдёт такие строки:

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

sopicjxb234=0
05404=0abc
}]dkv=0923=q
....=0
FUN-ARP писал(а):Создал разрешающее правило файрвола с регулярным выражением
Сложно понять что ты хотел найти с помощью RegEx. :ne_vi_del:
Лучше укажи примеры что ты хочешь найти без RegEx.
FUN-ARP писал(а):Regex cheat sheet пишет что можно заменять символы
Заменять можно, но там говорится о JavaScript


FUN-ARP
Сообщения: 6
Зарегистрирован: 15 фев 2021, 19:51

В общем, теперь понятно, что Layer 7 не заменяет символы.

Делал Regex для обнаружения обратного просмотра DNS по фрагменту "in-addr.arpa": https://ru.wikipedia.org/wiki/Обратный_просмотр_DNS . Разрешил по этому Regex все соединения для IP адресов DNS серверов и запретил соединения INPUT и FORWARD поступающие на порт провайдера. Предполагал что в результате внутренние IP-адреса будут скрыты от внешних. Играться можно долго, но я не знаю будет ли полезным для чего-либо это выражение:

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

^.+([<=0|>=0]in[<=0|>=0]addr[<=0|>=0]|[.in.addr.])?i.+$


FUN-ARP
Сообщения: 6
Зарегистрирован: 15 фев 2021, 19:51

Без угловых скобок "<", ">" работает совсем не так, - в таком случае, регулярное выражение ничего не обнаруживает. В микротике регулярки основаны на PHP PCRE, а часть выражения "(?<action>\S+)" - это "Named Capture Group". Может быть, мое выражение работает вообще с любой из возможных "Named Capture Group", за которым следует "in.addr.arpa". Вот ссылка, откуда узнал об этом - https://regex101.com/r/sW8kS0/1 . Копипаст этого выражения:

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

.+HappyMK\s?(?<action>\S+)\s(?<chain>\w+):\sin:(?<int_in>\S+)\sout:(?<int_out>\S+), src-mac\s(?<src_mac>\S+),\sproto\s(?<prot>\w+)(\s(?<flags>\S+),|,)\s(?<src_ip>\b(?:\d{1,3}\.){3}\d{1,3}\b):(?<src_port>\d+)->(?<dest_ip>\b(?:\d{1,3}\.){3}\d{1,3}\b):(?<dest_port>\d+),(\s(?<NAT>\w+)\s\((?<src_nat_localip>\b(?:\d{1,3}\.){3}\d{1,3}\b):(?<src_nat_local_port>\d+)->(?<src_nat_public_ip>\b(?:\d{1,3}\.){3}\d{1,3}\b):(?<src_nat_public_port>\d+)\)->(?<dest_nat_ip>\b(?:\d{1,3}\.){3}\d{1,3}\b):(?<dest_nat_port>\d+),)?(\sprio\s(?<prio>\d+->\d+),)?\slen\s(?<len>\d+)
Хотел бы узнать о "Named Capture Groups" и их синтаксисе подробнее, - сейчас в процессе поиска, но информации не много.


Ответить