🌐 Languages: English | Русский
Позволяет настраивать правила перенаправления и блокировок сайтов для аккаунтов Cloudflare и NextDNS.
Может работать через GitHub Actions. Ничего скачивать, устанавливать не нужно! Видео с настройкой
Общее сравнение: Cloudflare vs NextDNS
Настройка учетных данных: Cloudflare
Настройка учетных данных: NextDNS
Оба провайдера имеют бесплатные тарифы, но с определёнными ограничениями.
- 100 000 DNS-запросов в день
- IPv4 DNS-запросы ограничены одним IP-адресом. При этом можно без ограничений использовать другие методы: DoH, DoT, IPv6
- 300 000 DNS-запросов в месяц (тоже достаточно для личного использования)
- Низкая скорость API — ограничение 60 запросов в минуту. Из-за этого сохранение настроек занимает заметно больше времени
- После регистрации в Cloudflare перейдите во вкладку Zero Trust и создайте аккаунт.
- Бесплатный тариф имеет хорошие лимиты — просто выберите его
- Шаг с добавлением платёжного метода можно пропустить, нажав Cancel and exit (в правом верхнем углу)
- Вернитесь во вкладку Zero Trust
- Создайте токен: Create Token → Create Custom Token:
https://dash.cloudflare.com/profile/api-tokens
С двумя разрешениями (Permissions):
Account.Zero Trust : Edit
Account.Account Firewall Access Rules : EditСохраните API-токен в переменную окружения AUTH_SECRET.
- Найдите Account ID:
https://dash.cloudflare.com/?to=/:account/workers
Сохраните Account ID в переменную окружения CLIENT_ID.
-
Сгенерируйте API KEY на странице
https://my.nextdns.io/account
и сохраните его в переменную окруженияAUTH_SECRET. -
Нажмите на логотип NextDNS. На открывшейся странице скопируйте ID из секции Endpoints
и сохраните его в переменную окруженияCLIENT_ID.
Установите в переменную окружения DNS название DNS-провайдера (Cloudflare или NextDNS).
Каждый источник данных должен быть ссылкой на hosts-файл, можете воспользоваться этой:
https://raw.githubusercontent.com/Internet-Helper/GeoHideDNS/refs/heads/main/hosts/hosts
Можно указать несколько источников, разделив их запятой:
https://first.com/hosts,https://second.com/hosts
Укажите источники в переменной окружения REDIRECT.
Скрипт парсит источники, ингнорируя строки, начинающиеся на 0.0.0.0 и 127.0.0.1
Например, из строк:
0.0.0.0 domain.to.block
1.2.3.4 domain.to.redirect
127.0.0.1 another.to.blockбудет взята только 1.2.3.4 domain.to.redirect для дальнейшей обработки редиректов.
- Если домен для редиректа встречается несколько раз, будет применён первый IP из первого источника.
Укажите источники в переменной окружения BLOCK.
Скрипт парсит источники, забирая только строки, начинающиеся на 0.0.0.0 и 127.0.0.1
Например, из строк:
0.0.0.0 domain.to.block
1.2.3.4 domain.to.redirect
127.0.0.1 another.to.blockбудут взяты только:
domain.to.block
another.to.blockдля дальнейшей обработки блокировок.
-
Для Cloudflare можно использовать один и тот же источник для
BLOCKиREDIRECT. -
Для NextDNS оптимальным вариантом будет указать только
REDIRECT, а списки для блокировки выбрать вручную во вкладке Privacy.
Ранее сгенерированные данные будут удалены. Скрипт распознаёт старые данные по следующим признакам:
- Префикс имени списка: Blocked websites by script и Override websites by script
- Префикс имени правила: Rules set by script
- Отличающийся Session id (Session id хранится в поле description)
После удаления старых данных будут созданы и применены новые списки и правила.
Если нужно очистить настройки блокировки/редиректа Cloudflare, запустите скрипт без указания источников в соответствующих переменных окружения.
Например, отсутствие значения в BLOCK приведёт к сбросу настроек блокировки.
Для REDIRECT:
- Существующий домен будет обновлён, если IP редиректа изменился
- Новые домены будут добавлены к существующим
- Остальные настройки редиректов останутся без изменений
Для BLOCK:
- Новые домены будут добавлены к существующим
- Остальные настройки блокировки останутся без изменений
Ранее сгенерированные данные удаляются, если не заданы источники ДЛЯ ОБЕИХ НАСТРОЕК BLOCK и REDIRECT.
https://www.youtube.com/watch?v=vbAXM_xAL5I
- Сделайте Fork репозитория
- Перейдите в Settings → Environments
- Создайте New environment с именем
DNS - Добавьте
AUTH_SECRETиCLIENT_IDв Environment secrets - Добавьте
DNS,REDIRECTиBLOCKв Environment variables
- Action запускается ежедневно в 01:30 UTC (04:30 по МСК).
Чтобы изменить время, отредактируйте cron в.github/workflows/github_action.yml - Action можно запустить вручную через кнопку Run workflow:
вкладка Actions → workflow DNS Block&Redirect Configurer cron task