morf Posted July 31, 2019 Posted July 31, 2019 (edited) Всем привет! Делал для себя, уже как-то выкладывал, но постепенно дописывал скрипт. Захотелось снова поделиться, вдруг кому-то пригодится. Поддержка нескольких микротик с заданными параметрами выгрузки (куда, что выгружаем). Понятно, что схема может показаться не идеальной, но за бесплатно может и сгодится. Может : - выгружать в адрес-лист заблокированные 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 Edited July 31, 2019 by morf Вставить ник Quote
ixi Posted July 31, 2019 Posted July 31, 2019 Как производительность? Помнится, микротик очень тормозит при работе с списками адресов. Вставить ник Quote
morf Posted July 31, 2019 Author Posted July 31, 2019 (edited) 58 минут назад, ixi сказал: Как производительность? Помнится, микротик очень тормозит при работе с списками адресов. С адрес-листами вообще нет проблем. До этого, когда не делал суммирование было около 300 тыс. адресов. Сейчас около 200. Edited July 31, 2019 by morf Вставить ник Quote
disappointed Posted July 31, 2019 Posted July 31, 2019 1 час назад, ixi сказал: Как производительность? Помнится, микротик очень тормозит при работе с списками адресов. Я как-то для смеха заливал в мелкий тик типа HEXLite 32мб, айпишники в адресный лист, если память не изменяет то удалось тысяч под 30 влить. Вставить ник Quote
morf Posted July 31, 2019 Author Posted July 31, 2019 (edited) 1 час назад, disappointed сказал: Я как-то для смеха заливал в мелкий тик типа HEXLite 32мб, айпишники в адресный лист, если память не изменяет то удалось тысяч под 30 влить. Мелкие роутерборды, по понятным причинам, не подходят. CCR либо роутерборд >=1 Гбайт памяти, а-ля 3011/4011. Edited July 31, 2019 by morf Вставить ник Quote
ixi Posted August 1, 2019 Posted August 1, 2019 15 часов назад, morf сказал: С адрес-листами вообще нет проблем. До этого, когда не делал суммирование было около 300 тыс. адресов. Сейчас около 200. Интересно, если поправили. Когда-то тестировал на 1036, удаление на списке в 200 тыс. было со скоростью в лучшем случае 10 адресов в секунду Вставить ник Quote
morf Posted August 3, 2019 Author Posted August 3, 2019 (edited) Я вас в начале не понял. Думал вы про производительность в целом. А так да, синхронизация около 20-30 записей в сек. Первичная синхронизация идёт около 2 часов, потом только на изменения, а они быстро. Edited August 3, 2019 by morf Вставить ник Quote
Gubanov Posted August 6, 2019 Posted August 6, 2019 Старую версию еще тестировал в полном объеме, микротик просто умирал при фильтрации через Proxy самого микротика. Сейчас скрипт выгружает 2 списка: 1 для полной блокировки, другой для редиректа на сервер фильтрации + отдельно развернут dns-сервер, который фильтрует сайты. Даже при такой конфигурации, вывозит списки только RB3011 и выше. Все что ниже жестко зависает. Вставить ник Quote
morf Posted August 6, 2019 Author Posted August 6, 2019 1 минуту назад, Gubanov сказал: Старую версию еще тестировал в полном объеме, микротик просто умирал при фильтрации через Proxy самого микротика В старом скрипте было несколько недостатков, которые я исключил: - Раньше в comment прописывался hash строки и дальнейшая синхронизация велась по нему. Из-за того, что реестр очень вырос, а hash в comment было много, то я сделал синхронизацию только по domain и path. Объективно webproxy после этого стало легче :) - убрал из webproxy блокировку по IP (IP теперь выгружаются в address-list). Еще чуть-чуть полегчало. Вставить ник Quote
Gubanov Posted August 6, 2019 Posted August 6, 2019 @morf А теперь скрипт нормально отрабатывает недоступный микротик? А то ранее, если один из списка недоступен, то скрипт останавливался. Вставить ник Quote
Gubanov Posted August 6, 2019 Posted August 6, 2019 И для выгрузки лучше использовать api-ssl, т.к. простой api передает пароль не зашифрованным и была куча взломов. Вставить ник Quote
morf Posted August 6, 2019 Author Posted August 6, 2019 (edited) 1 час назад, Gubanov сказал: @morf А теперь скрипт нормально отрабатывает недоступный микротик? А то ранее, если один из списка недоступен, то скрипт останавливался. Зависший процесс киляется при последующем запуске. Если микрот недоступен, то переходим к следующему в списке. 50 минут назад, Gubanov сказал: И для выгрузки лучше использовать api-ssl, т.к. простой api передает пароль не зашифрованным и была куча взломов. Класс отвечающий за работу по api микротика уже поддерживает новый режим авторизации по api. Api ssl, кстати, тоже поддерживается в классе, но я его не выносил в отдельную опцию для коннекта. Edited August 6, 2019 by morf Вставить ник Quote
Gubanov Posted August 11, 2019 Posted August 11, 2019 В 06.08.2019 в 23:00, morf сказал: В старом скрипте было несколько недостатков, которые я исключил: - Раньше в comment прописывался hash строки и дальнейшая синхронизация велась по нему. Из-за того, что реестр очень вырос, а hash в comment было много, то я сделал синхронизацию только по domain и path. Объективно webproxy после этого стало легче :) - убрал из webproxy блокировку по IP (IP теперь выгружаются в address-list). Еще чуть-чуть полегчало. Ну что я могу сказать, RB2011UiAS-RM "умер" после заливки списков адресов. Вставить ник Quote
morf Posted August 11, 2019 Author Posted August 11, 2019 1 час назад, Gubanov сказал: Ну что я могу сказать, RB2011UiAS-RM "умер" после заливки списков адресов. :) Выгружали только адрес-листы ? Вставить ник Quote
Gubanov Posted August 11, 2019 Posted August 11, 2019 34 минуты назад, morf сказал: :) Выгружали только адрес-листы ? Да, я выгружаю только адреса. :) Ну точный диагноз будет позже, но он перестал быть доступен после выгрузке адресов. Вставить ник Quote
morf Posted August 11, 2019 Author Posted August 11, 2019 28 минут назад, Gubanov сказал: Да, я выгружаю только адреса. :) Ну точный диагноз будет позже, но он перестал быть доступен после выгрузке адресов. Буквально пару недель назад в выгрузке из реестра IP (после суммирования) было около 130 тыс записей для блокировки и ~ 70 тыс записей для редиректа. Сейчас уже 250 тыс записей для блокировок и для редиректа ~ 70 тыс. Причем, это уже второй раз, когда кол-во блокируемых IP возрастает в 2 раза за короткий период. Дальше начнут ныть крупные операторы + федералы из-за того, что у них перегруз и РКН начнет снижать кол-во блокируемых IP. Вставить ник Quote
YuryD Posted August 11, 2019 Posted August 11, 2019 7 часов назад, morf сказал: Причем, это уже второй раз, когда кол-во блокируемых IP возрастает в 2 раза за короткий период. Дальше начнут ныть крупные операторы + федералы из-за того, что у них перегруз и РКН начнет снижать кол-во блокируемых IP. А они не ноют, а жестко агрегируют, особенно в url (если куча записей с одного ресурса типа форума, то они агрегируют до одной). На вопрос магистралу - а зачем мне такое счастье попасть под незаконное блокирование - ответ, пока нет техвозможности исключить вас из сервиса наших блокировок. Спасает только то, что заглушка не наша а их выдается. Вставить ник Quote
snark Posted August 12, 2019 Posted August 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=... ... то удаление/добавление происходит за несколько минут. Вставить ник Quote
morf Posted August 12, 2019 Author Posted August 12, 2019 (edited) 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. Много выгружать нужно всего лишь первый раз. Edited August 12, 2019 by morf Вставить ник Quote
snark Posted August 12, 2019 Posted August 12, 2019 2 минуты назад, morf сказал: в случае наличия в файле импорта строки, с синтаксически ошибочной записью, то прекращался импортироваться весь файл целиком Файл формируете вы своими собственными руками, так что любые ошибки в файле - это, согласитесь, вина того кто его сформировал, сиречь надо тщательнее чистить IP, URL и домены перед внесением в список. Вставить ник Quote
s2n Posted January 24, 2024 Posted January 24, 2024 а можно заново архив выложить, а то ссылка не рабочая? Вставить ник Quote
morf Posted January 24, 2024 Author Posted January 24, 2024 Как топикстартер, скажу, что идея использовать WebProxy микротика была хороша только поначалу, когда реестра распух до неимоверных размеров, то WebProxy просто перестает работать и обрабатывать трафик. Переходить нужно на что-то серьезное, либо на Squid, Вставить ник Quote
npokypop Posted January 25, 2024 Posted January 25, 2024 morf, а что сейчас используете ? какую схему для блокировок на микротике ? Вставить ник Quote
morf Posted January 25, 2024 Author Posted January 25, 2024 (edited) На микрот выгружаю только IP-адреса в разные адрес-листы: те, что заблокированы и те, по которым идет редирет на proxy. Так же поднял сервер маршрутизации (Bird) на Linux и поднял bgp-сессию. Скрипт выгружает в систему IP-адреса из рееестра, а роут-сервер анонсирует их тому, с кем поднял bgp-сессию. Так же выгружаются domain в Unbound DNS-сервер. Edited January 25, 2024 by morf Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.