Автоматизация обновления адресных листов Mikrotik
Добрый день!
Не так давно РКН начал замедлять YouTube в России, что создает некоторые неудобства при просмотре. Поделюсь с вами скриптом, который поможет вам создать адресный лист куда будут входить все адреса серверов YouTube, чтобы вы могли заблокировать его окончательно и не терпеть недоделанную работу РКН. Метод блокировки описывать не буду, он должен быть вам известен, а вот скрипт получения адресов опубликую, возможно он кому-то будет полезен. Адресов у них очень много (более 11 000 в IPv4 и более 10 000 в IPv6) поэтому для удобства будем использовать диапазоны сетей.
Действий будет всего два. Поехали...
Создаем новый скрипт (System-Scripts) с произвольным названием, например, YouTube_IPv4_CIDR_update (Запоминаем название, оно нам понадобится позднее)
В поле Source вводим следующий код:
/tool fetch url="https://raw.githubusercontent.com/pikasyme/YouTube/main/YouT..." mode=https dst-path=YouTube_IPv4_CIDR.rsc :delay 5s :log info "Downloaded YouTube_IPv4_CIDR.rsc succesfully"; /ip firewall address-list remove [find where comment="YouTube"]; /import file-name=YouTube_IPv4_CIDR.rsc :delay 10s :log info "New YouTube_IPv4_CIDR added successfully";
Создание нового скрипта. При копировании и вставке кода внимательно смотрите на то, чтобы он был расположен как на скриншоте, иначе он не будет работать.
Коротко описание:
скрипт обращается к сформированному специальным образом списку подсетей ютуба и скачивает его сохраняя в корень устройства под названием YouTube_IPv4_CIDR.rsc. Данный список обновляется раз в сутки в 0:00 GMT+3
далее идет задержка 5 секунд для тех у кого небыстрый интернет, высокий пинг или слабенький роутер. Можно убрать.
далее в лог выводится информация о том, что список успешно скачан.
затем из адресного листа удаляются все записи в комментарии которых содержится слово YouTube (сохраните или переделайте комментарий если у вас уже есть записи с таким комментарием и они вам нужны)
следующим шагом микротик запускает скачанный скрипт, который в свою очередь добавляет новые адреса в адресный лист с названием YouTube (записи будут иметь комментарий YouTube)
в заключении скрипт выводит информацию о том, что новый адресный лист успешно создан.
2. Добавляем запуск скрипта в планировщик (System – Scheduler)
Название задачи можно ввести любое. В Start Day и Start Time указываем нужные вам значения, интервал повтора 1 день. Чаще не имеет смысла так как список обновляется раз в сутки. В поле On Event вводим название скрипта из предыдущего пункта настройки:
YouTube_IPv4_CIDR_update
Теперь микротик каждый день в указанное время (в нашем случае в 0 часов 5 минут) будет запускать скрипт удаления и создания адресного листа с названием YouTube, у которого в комментарии к адресам так же содержится слово YouTube. Если такого адресного листа у вас изначально нет, микротик его создаст сам.
Собственно, на этом всё. Всё примитивно, без условий и без проверок на скачиваемость и прочее. Для своих нужд я использую только IPv4 адреса, если кому-то нужно, здесь ссылки на остальное:
IPv4 адреса: https://github.com/touhidurrr/iplist-youtube/blob/main/ipv4_list.txt
IPv4 CIDR: https://github.com/touhidurrr/iplist-youtube/blob/main/cidr4.txt
IPv6 адреса: https://github.com/touhidurrr/iplist-youtube/blob/main/ipv6_list.txt
IPv6 CIDR: https://github.com/touhidurrr/iplist-youtube/blob/main/cidr6.txt
Для желающих генерировать эти списки своими силами есть скрипт в репо https://github.com/touhidurrr/iplist-youtube
Естественно таким образом можно составлять не только списки адресов YouTube.
Ну и для тех кто хочет сам парсить вышеперечисленные списки приведу пример скрипта которым пользуюсь сам:
#!/bin/sh
saveTo=/var/www/yoursite.ru/html
now=$(date);
echo "# Generated by easyme@pikabu on $now" > $saveTo/YouTube_IPv4_CIDR.rsc
echo "/ip firewall address-list" >> $saveTo/YouTube_IPv4_CIDR.rsc
wget -q -O - https://raw.githubusercontent.com/touhidurrr/iplist-youtube/... | awk --posix '/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\// { print "add list=YouTube address=" $1 " comment=YouTube";}' >> $saveTo/YouTube_IPv4_CIDR.rsc
Полученный файл я пушу в гит раз в сутки, вы можете расположить его где-нибудь в web или на ftp. Как забрать файл из других источников можно почитать в справке к команде fetch в вики микротик.
На этом всё. Как маркировать трафик, пустить в нужное русло или заблокировать трафик направленный в сторону серверов из адресного листа можно почитать на просторах чебурнета.
Успехов!