Mikrotik - Динамический address-list

Обсуждение ПО и его настройки
Ответить
nikita.dyachkov
Сообщения: 2
Зарегистрирован: 30 окт 2018, 10:28

Всем добрый день, имеется 10 mikrotik hap lite, 1 mikrotik rb2011
Идея: блокировать весь инет, кроме определенных ресурсов на определенном устройстве.
блокировка через:
chain=forward action=reject reject-with=tcp-reset protocol=tcp src-address=192.168.88.139 dst-address-list=da
chain=forward action=drop protocol=udp src-address=192.168.88.139 dst-address-list=da
192.168.88.139 - определенное устройство

как сделать address-list динамически обновляющимся с rb2011 в теории понимаю, но в скриптах слаб

зачем обновлять, могут поменяться адреса ресурсов либо необходимо добавить/удалить


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Создаём адрес-лист, перечисляя разрешённые ресурсы (заносим именно доменные имена, резолвится они будут автоматом) :

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

/ip firewall address-list
add address=konst.eljur.ru list=eljur
add address=translate.google.ru list=eljur
Привязываем в arp-таблице ip-адреса клиентских машин к их же МАС-адресам, чтобы не сменяли айпишники самые "умные".
Создаём адрес-лист, перечисляя адреса клиентских машин, к которым ограничиваем доступ:

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

/ip firewall address-list
add address=192.168.88.248 list="My user stop"
add address=192.168.88.184 list="My user stop"
add address=192.168.88.188 list="My user stop"
add address=192.168.88.207 list="My user stop"
add address=192.168.88.245 list="My user stop"
add address=192.168.88.203 list="My user stop"
add address=192.168.88.210 list="My user stop"
add address=192.168.88.230 list="My user stop"
add address=192.168.88.180 list="My user stop"
add address=192.168.88.204 list="My user stop"
add address=192.168.88.240 list="My user stop"
add address=192.168.88.250 list="My user stop"
Создаём два правила запрета:

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

/ip firewall filter
add action=reject chain=forward dst-address-list=!eljur protocol=tcp reject-with=tcp-reset src-address-list="My user stop"
add action=drop chain=forward dst-address-list=!eljur protocol=udp src-address-list="My user stop"
Всё снято с действующей сети. Количество жалоб от пользователей (дети, которым кроме переводчика и электронного дневника всё порезано) зашкаливает, что говорит о крайней эффективности метода.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
nikita.dyachkov
Сообщения: 2
Зарегистрирован: 30 окт 2018, 10:28

Это я понял, но я хочу заполнять address-list на одном устройстве, и чтобы он обновлялся сразу на остальных 10ти


vqd
Модератор
Сообщения: 3605
Зарегистрирован: 26 сен 2013, 14:20
Откуда: НСК
Контактная информация:

только через костыль

Например на головном микротике пишите скрит который генерирует скрипт генерации ваших листов, пишите это все в файл не более 4Кб и выкладываете Второй микротик через некоторое количество времени грузит по ФТП файлик и импортирует ваш скрипт себе


Есть интересная задача и бюджет? http://mikrotik.site
Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Да в любом случае это лютейший костыль. И уж по такому мелкому поводу этот костыль писать.... Это надо быть просто невероятным лентяем. Что-то мне не верится, что там адрес-листы каждый день меняются по прихоти администрации. А просто свистелку писать - это к фрилансерам. Те что угодно изобразят за небольшое вознаграждение.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
anad
Сообщения: 185
Зарегистрирован: 24 ноя 2016, 21:14

городил что-то подобное через DNS:
записи лист заносились/удалялись проходом по DNS вида
1.allow.site.com in A 1.1.1.1
2.allow.site.com in A 1.2.3.4

и так далее, до пустой . писано криво было , но на 40 адресов хватало.
Искать ?


anad
Сообщения: 185
Зарегистрирован: 24 ноя 2016, 21:14

выкопал вот такое ( чистая коленка и скрипты под микротики я не знаю почти).

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

{
:global name=tmplist value=tmplist;
:global name=curip;
:global name=errstat value=0
:global name=listname value=access
:global name=dnshost value=site.com
:global name=dnspref value=allow
:global name=cont value=1
:global name=errstat value=0
#
foreach i in [/ip firewall  address-list find   where list=tmplist] do { /ip firewall address-list remove numbers=$i}
#
set cont 1 ;set errstat 0 ; while ($errstat =0) do {set errstat 0;  do  {resolve "allow$count.site.ru"} on-error={set errstat 1}; if (errstat = 0 ) do={set curip  [resolve "allow$cont.site.ru"]; /ip firewall address-list add list=$tmplist address=$curip }; set cont  ($cont+1) } 

#
foreach i in [/ip firewall  address-list find   where list=$listname] do {set curip [/ip firewall address-list get number=$i address]; local ttmp [/ip firewall address-list find where list=$tmplist address=$curip]; put $ttmp ; if ($ttmp="") do { /ip firewall address-list remove numbers=$i} }
#
foreach i in [/ip firewall address-list find where list=$tmplist] do {set curip [/ip firewall address-list get number=$i address] ; do {/ip firewall address-list add list=$listname address=$curip} on-error={} }
#
foreach i in [/ip firewall  address-list find   where list=tmplist] do { /ip firewall address-list remove numbers=$i}
}

то есть берет записи вида
allow1.site.ru
allow2.site.ru
и так далее подряд , будет дырка в нумерации - дальше не пойдет. и заносит их в лист access, почему не доделал с переменными - не помню, но сайт надо вбивать в текст скрипта.
P.S. буду благодарен за комменты - опыта с миротиком очень мало.


dima.dmitriev
Сообщения: 30
Зарегистрирован: 16 июл 2018, 21:05

podarok66 писал(а): 30 окт 2018, 11:02
Создаём два правила запрета:

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

/ip firewall filter
add action=reject chain=forward dst-address-list=!eljur protocol=tcp reject-with=tcp-reset src-address-list="My user stop"
add action=drop chain=forward dst-address-list=!eljur protocol=udp src-address-list="My user stop"
Всё снято с действующей сети. Количество жалоб от пользователей (дети, которым кроме переводчика и электронного дневника всё порезано) зашкаливает, что говорит о крайней эффективности метода.
не пойму как работает этот скрипт, там указано, что дропать нужно лист eljur, восклицательный знак какое действие выполняет?
мне чтобы разрешить доступ только телеграмму нужно в первом скрипте поменять название листа (для себя) и сайты на telegram.org?
в телефонах нет чего нибудь типа svchost?
которому порежешь доступ и инет не будет работать? или там отдельный канал связи?


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

dima.dmitriev писал(а): 13 фев 2022, 08:09 восклицательный знак какое действие выполняет?
Да Ё!!! Ну сходите вы почитайте https://wiki.mikrotik.com/wiki/Manual:Scripting Вопросы сразу станут более точечными. А то у вас выходит что-то типа "В паре фраз опишите семантику испанского, мне его учить неохота, но стихи на нём я писать буду"


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Ответить