morf Опубликовано 31 июля, 2019 (изменено) · Жалоба Всем привет! Делал для себя, уже как-то выкладывал, но постепенно дописывал скрипт. Захотелось снова поделиться, вдруг кому-то пригодится. Поддержка нескольких микротик с заданными параметрами выгрузки (куда, что выгружаем). Понятно, что схема может показаться не идеальной, но за бесплатно может и сгодится. Может : - выгружать в адрес-лист заблокированные IP; - выгружать в адрес-лист все IP кроме заблокированных (для редиректа на прокси сервер) - выгружать regexp static записи в DNS c заблокированными domain или https url/domain; - выгружать url/domain из реестра на WebProxy микротика; - суммировать ip в подсети для уменьшение списка ip; - конвертировать кириллицу в idna ascii; - убирать дубли; - убирать url, domain которых уже залочены; - фильтрует разные нестандартные символы, которые не должно быть в url. У меня работает по схеме: - address-list с блокировкой выгружается на микротик в роли bras и там же блокируется; - address-list с IP для редиректа на Proxy выгружаются на микротик в роли bras и правило NAT редиректит трафик на проксю; - CHR Микротик с WebProxy на котором лочится url/domain адреса; - CHR Микротик c DNS на который редиректятся запросы от ревизора для блокировки по HTTPS; Что нужно: - PHP >= 5.3.0 - xml dump реестра - включить API на микротик и отредактировать sync.php. Редактировать только в windows-1251 кодировке. - запустить php sync.php mikrotik.rar Изменено 31 июля, 2019 пользователем morf Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ixi Опубликовано 31 июля, 2019 · Жалоба Как производительность? Помнится, микротик очень тормозит при работе с списками адресов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
morf Опубликовано 31 июля, 2019 (изменено) · Жалоба 58 минут назад, ixi сказал: Как производительность? Помнится, микротик очень тормозит при работе с списками адресов. С адрес-листами вообще нет проблем. До этого, когда не делал суммирование было около 300 тыс. адресов. Сейчас около 200. Изменено 31 июля, 2019 пользователем morf Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
disappointed Опубликовано 31 июля, 2019 · Жалоба 1 час назад, ixi сказал: Как производительность? Помнится, микротик очень тормозит при работе с списками адресов. Я как-то для смеха заливал в мелкий тик типа HEXLite 32мб, айпишники в адресный лист, если память не изменяет то удалось тысяч под 30 влить. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
morf Опубликовано 31 июля, 2019 (изменено) · Жалоба 1 час назад, disappointed сказал: Я как-то для смеха заливал в мелкий тик типа HEXLite 32мб, айпишники в адресный лист, если память не изменяет то удалось тысяч под 30 влить. Мелкие роутерборды, по понятным причинам, не подходят. CCR либо роутерборд >=1 Гбайт памяти, а-ля 3011/4011. Изменено 31 июля, 2019 пользователем morf Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ixi Опубликовано 1 августа, 2019 · Жалоба 15 часов назад, morf сказал: С адрес-листами вообще нет проблем. До этого, когда не делал суммирование было около 300 тыс. адресов. Сейчас около 200. Интересно, если поправили. Когда-то тестировал на 1036, удаление на списке в 200 тыс. было со скоростью в лучшем случае 10 адресов в секунду Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
morf Опубликовано 3 августа, 2019 (изменено) · Жалоба Я вас в начале не понял. Думал вы про производительность в целом. А так да, синхронизация около 20-30 записей в сек. Первичная синхронизация идёт около 2 часов, потом только на изменения, а они быстро. Изменено 3 августа, 2019 пользователем morf Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gubanov Опубликовано 6 августа, 2019 · Жалоба Старую версию еще тестировал в полном объеме, микротик просто умирал при фильтрации через Proxy самого микротика. Сейчас скрипт выгружает 2 списка: 1 для полной блокировки, другой для редиректа на сервер фильтрации + отдельно развернут dns-сервер, который фильтрует сайты. Даже при такой конфигурации, вывозит списки только RB3011 и выше. Все что ниже жестко зависает. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
morf Опубликовано 6 августа, 2019 · Жалоба 1 минуту назад, Gubanov сказал: Старую версию еще тестировал в полном объеме, микротик просто умирал при фильтрации через Proxy самого микротика В старом скрипте было несколько недостатков, которые я исключил: - Раньше в comment прописывался hash строки и дальнейшая синхронизация велась по нему. Из-за того, что реестр очень вырос, а hash в comment было много, то я сделал синхронизацию только по domain и path. Объективно webproxy после этого стало легче :) - убрал из webproxy блокировку по IP (IP теперь выгружаются в address-list). Еще чуть-чуть полегчало. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gubanov Опубликовано 6 августа, 2019 · Жалоба @morf А теперь скрипт нормально отрабатывает недоступный микротик? А то ранее, если один из списка недоступен, то скрипт останавливался. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gubanov Опубликовано 6 августа, 2019 · Жалоба И для выгрузки лучше использовать api-ssl, т.к. простой api передает пароль не зашифрованным и была куча взломов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
morf Опубликовано 6 августа, 2019 (изменено) · Жалоба 1 час назад, Gubanov сказал: @morf А теперь скрипт нормально отрабатывает недоступный микротик? А то ранее, если один из списка недоступен, то скрипт останавливался. Зависший процесс киляется при последующем запуске. Если микрот недоступен, то переходим к следующему в списке. 50 минут назад, Gubanov сказал: И для выгрузки лучше использовать api-ssl, т.к. простой api передает пароль не зашифрованным и была куча взломов. Класс отвечающий за работу по api микротика уже поддерживает новый режим авторизации по api. Api ssl, кстати, тоже поддерживается в классе, но я его не выносил в отдельную опцию для коннекта. Изменено 6 августа, 2019 пользователем morf Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gubanov Опубликовано 11 августа, 2019 · Жалоба В 06.08.2019 в 23:00, morf сказал: В старом скрипте было несколько недостатков, которые я исключил: - Раньше в comment прописывался hash строки и дальнейшая синхронизация велась по нему. Из-за того, что реестр очень вырос, а hash в comment было много, то я сделал синхронизацию только по domain и path. Объективно webproxy после этого стало легче :) - убрал из webproxy блокировку по IP (IP теперь выгружаются в address-list). Еще чуть-чуть полегчало. Ну что я могу сказать, RB2011UiAS-RM "умер" после заливки списков адресов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
morf Опубликовано 11 августа, 2019 · Жалоба 1 час назад, Gubanov сказал: Ну что я могу сказать, RB2011UiAS-RM "умер" после заливки списков адресов. :) Выгружали только адрес-листы ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Gubanov Опубликовано 11 августа, 2019 · Жалоба 34 минуты назад, morf сказал: :) Выгружали только адрес-листы ? Да, я выгружаю только адреса. :) Ну точный диагноз будет позже, но он перестал быть доступен после выгрузке адресов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
morf Опубликовано 11 августа, 2019 · Жалоба 28 минут назад, Gubanov сказал: Да, я выгружаю только адреса. :) Ну точный диагноз будет позже, но он перестал быть доступен после выгрузке адресов. Буквально пару недель назад в выгрузке из реестра IP (после суммирования) было около 130 тыс записей для блокировки и ~ 70 тыс записей для редиректа. Сейчас уже 250 тыс записей для блокировок и для редиректа ~ 70 тыс. Причем, это уже второй раз, когда кол-во блокируемых IP возрастает в 2 раза за короткий период. Дальше начнут ныть крупные операторы + федералы из-за того, что у них перегруз и РКН начнет снижать кол-во блокируемых IP. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
YuryD Опубликовано 11 августа, 2019 · Жалоба 7 часов назад, morf сказал: Причем, это уже второй раз, когда кол-во блокируемых IP возрастает в 2 раза за короткий период. Дальше начнут ныть крупные операторы + федералы из-за того, что у них перегруз и РКН начнет снижать кол-во блокируемых IP. А они не ноют, а жестко агрегируют, особенно в url (если куча записей с одного ресурса типа форума, то они агрегируют до одной). На вопрос магистралу - а зачем мне такое счастье попасть под незаконное блокирование - ответ, пока нет техвозможности исключить вас из сервиса наших блокировок. Спасает только то, что заглушка не наша а их выдается. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
snark Опубликовано 12 августа, 2019 · Жалоба В 03.08.2019 в 11:26, morf сказал: Первичная синхронизация идёт около 2 часов Если просто залить в МТ файл с содержимым /ip firewall address-list remove numbers=[find list=rkn] /ip firewall address-list add list=rkn address=... add list=rkn address=... add list=rkn address=... ... то удаление/добавление происходит за несколько минут. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
morf Опубликовано 12 августа, 2019 (изменено) · Жалоба 22 минуты назад, snark сказал: Если просто залить в МТ файл с содержимым /ip firewall address-list remove numbers=[find list=rkn] /ip firewall address-list add list=rkn address=... add list=rkn address=... add list=rkn address=... ... то удаление/добавление происходит за несколько минут. Я тестировал синхронизацию через выгрузку на микрот по фтп с последующим выполнением файла. Все хорошо, но была проблема с обработкой ошибок - в случае наличия в файле импорта строки, с синтаксически ошибочной записью, то прекращался импортироваться весь файл целиком. Даже добавление конструкции: :do { } on-error { } как построчно, так и на весь код целиком не помогало. С адрес-листами еще нормально отрабатывала, а вот с url все было непредсказуемо (из-за наличия в реестре спец. символов, слэшей, возврат коретки и т.п.). В итоге отдаешь файл микроту на выполнение и не получаешь callback о результатах выполнения. Я оставил единую конструкцию синхронизации по API. Много выгружать нужно всего лишь первый раз. Изменено 12 августа, 2019 пользователем morf Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
snark Опубликовано 12 августа, 2019 · Жалоба 2 минуты назад, morf сказал: в случае наличия в файле импорта строки, с синтаксически ошибочной записью, то прекращался импортироваться весь файл целиком Файл формируете вы своими собственными руками, так что любые ошибки в файле - это, согласитесь, вина того кто его сформировал, сиречь надо тщательнее чистить IP, URL и домены перед внесением в список. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s2n Опубликовано 24 января · Жалоба а можно заново архив выложить, а то ссылка не рабочая? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
morf Опубликовано 24 января · Жалоба Как топикстартер, скажу, что идея использовать WebProxy микротика была хороша только поначалу, когда реестра распух до неимоверных размеров, то WebProxy просто перестает работать и обрабатывать трафик. Переходить нужно на что-то серьезное, либо на Squid, Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s2n Опубликовано 25 января · Жалоба прокси будет отдельный Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
npokypop Опубликовано 25 января · Жалоба morf, а что сейчас используете ? какую схему для блокировок на микротике ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
morf Опубликовано 25 января (изменено) · Жалоба На микрот выгружаю только IP-адреса в разные адрес-листы: те, что заблокированы и те, по которым идет редирет на proxy. Так же поднял сервер маршрутизации (Bird) на Linux и поднял bgp-сессию. Скрипт выгружает в систему IP-адреса из рееестра, а роут-сервер анонсирует их тому, с кем поднял bgp-сессию. Так же выгружаются domain в Unbound DNS-сервер. Изменено 25 января пользователем morf Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...