Skip to content

Latest commit

 

History

History
173 lines (109 loc) · 8.47 KB

File metadata and controls

173 lines (109 loc) · 8.47 KB

🌐 Languages: 󠁧󠁢󠁥󠁮󠁧󠁿English | Русский

Конфигуратор блокировок и перенаправлений DNS

Позволяет настраивать правила перенаправления и блокировок сайтов для аккаунтов Cloudflare и NextDNS.

Может работать через GitHub Actions. Ничего скачивать, устанавливать не нужно! Видео с настройкой

Общее сравнение: Cloudflare vs NextDNS

Настройка учетных данных: Cloudflare

Настройка учетных данных: NextDNS

Настройка профиля

Настройка источников данных

GitHub Actions


Cloudflare vs NextDNS

Оба провайдера имеют бесплатные тарифы, но с определёнными ограничениями.

Ограничения Cloudflare

  • 100 000 DNS-запросов в день
  • IPv4 DNS-запросы ограничены одним IP-адресом. При этом можно без ограничений использовать другие методы: DoH, DoT, IPv6

Ограничения NextDNS

  • 300 000 DNS-запросов в месяц (тоже достаточно для личного использования)
  • Низкая скорость API — ограничение 60 запросов в минуту. Из-за этого сохранение настроек занимает заметно больше времени

Настройка учетных данных Cloudflare

  1. После регистрации в Cloudflare перейдите во вкладку Zero Trust и создайте аккаунт.
  • Бесплатный тариф имеет хорошие лимиты — просто выберите его
  • Шаг с добавлением платёжного метода можно пропустить, нажав Cancel and exit (в правом верхнем углу)
  • Вернитесь во вкладку Zero Trust
  1. Создайте токен: 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.

  1. Найдите Account ID:
    https://dash.cloudflare.com/?to=/:account/workers

Сохраните Account ID в переменную окружения CLIENT_ID.


Настройка учетных данных NextDNS

  1. Сгенерируйте API KEY на странице
    https://my.nextdns.io/account
    и сохраните его в переменную окружения AUTH_SECRET.

  2. Нажмите на логотип 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


1) Настройка перенаправлений (редиректы)

Укажите источники в переменной окружения 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 из первого источника.

2) Настройка блоклиста

Укажите источники в переменной окружения 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.


Поведение скрипта

Cloudflare

Ранее сгенерированные данные будут удалены. Скрипт распознаёт старые данные по следующим признакам:

  • Префикс имени списка: Blocked websites by script и Override websites by script
  • Префикс имени правила: Rules set by script
  • Отличающийся Session id (Session id хранится в поле description)

После удаления старых данных будут созданы и применены новые списки и правила.

Если нужно очистить настройки блокировки/редиректа Cloudflare, запустите скрипт без указания источников в соответствующих переменных окружения.
Например, отсутствие значения в BLOCK приведёт к сбросу настроек блокировки.


NextDNS

Для REDIRECT:

  • Существующий домен будет обновлён, если IP редиректа изменился
  • Новые домены будут добавлены к существующим
  • Остальные настройки редиректов останутся без изменений

Для BLOCK:

  • Новые домены будут добавлены к существующим
  • Остальные настройки блокировки останутся без изменений

Ранее сгенерированные данные удаляются, если не заданы источники ДЛЯ ОБЕИХ НАСТРОЕК BLOCK и REDIRECT.


Настройка GitHub Actions

Видео пошаговой настройки REDIRECT для NextDNS:

https://www.youtube.com/watch?v=vbAXM_xAL5I

Шаги настройки

  1. Сделайте Fork репозитория
  2. Перейдите в SettingsEnvironments
  3. Создайте New environment с именем DNS
  4. Добавьте AUTH_SECRET и CLIENT_ID в Environment secrets
  5. Добавьте 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