Примерно год назад я написал статью ChatGPT без VPN за 10 минут (и установка нативного приложения). Хотя она актуальна до сих пор, сегодня я хочу вам рассказать про еще один способ. Он основан на том же принципе, но использует другие подходы и инструменты.
Суть: мы делаем свой DNS-профиль в NextDNS или Cloudflare и автоматически актуализируем его раз в сутки.
Для этого я написал небольшую программу. Самое приятное: для ее работы вам не придется ничего устанавливать вообще.
Программа будет запускаться в GitHub Actions, каждую ночь обновляя записи DNS.
Для этого ей потребуются данные вашей учетки от выбранного DNS-провайдера и ссылки на файлы hosts, которые будут использованы для применения правил.
За прошедшее время появилось несколько альтернатив DNS от Comss, которые сами предоставляют эти файлы (за что им большое спасибо). В рамках статьи мы воспользуемся файлом hosts от GeoHide DNS:
https://raw.githubusercontent.com/Internet-Helper/GeoHideDNS/refs/heads/main/hosts/hosts
Вы вполне можете указать у себя в настройках адрес Comss, Xbox DNS, GeoHide или mafioznik. В этом случае, абсолютно все ваши DNS-запросы пойдут через их сервера. Проходит ли кто-то из них аудиты безопасности и прочие процедуры, которые могут гарантировать конфеденциальность? Очевидно, что нет.
Более того, владельцы Xbox DNS активно борются с тем, чтобы IP их прокси-серверов использовались напрямую, минуя их DNS-сервер. Лично я из этого делаю вывод, что они каким-то образом монетизируют DNS-запросы и, совершенно точно, занимаются их хранением и обработкой (иначе такая борьба была бы невозможна технически).
Но вот что мы можем сделать - это минимизировать свои риски, проксируя только те запросы, которые действительно в этом нуждаются. А все остальные - пускать через проверенного провайдера с неподконтрольной РКН юрисдикцией.
Однозначного фаворита нет, поскольку каждый из способов имеет свои ограничения.
100 000 DNS-запросов в сутки на бесплатном тарифе (вполне достаточно)
На бесплатном тарифе DNS-запросы по IPv4 оганичены одним IP-адресом, что делает данный способ неудобным в использовании для случаев, когда вы не можете использовать запросы DNS-over-HTTPS, DNS-over-TLS/QUIC или IPv6 (на них ограничений нет)
300 000 DNS-запросов в месяц на бесплатном тарифе (тоже вполне достаточно)
Медленный API, который никак не выйдет из беты (на данный момент - всего 1 RPS), не позволяет загружать данные "пачкой". Каждый домен приходится записывать отдельным запросом. Поэтому время обновления растягивается на несколько минут.
Для себя я выбрал NextDNS. Данный провайдер позволяет в настройках профиля выбрать целую кучу списков блокировки трекеров и прочей гадости, снимая со скрипта необходимость добавлять их через медленный API. Просто перейдите во вкладку Privacy и выберите столько настроек Blocklists и Native Tracking Protection, сколько захотите.
Ограничение Cloudflare на IPv4 вкупе с отсутствием встроенного каталога списков блокировки делает его не самым удобным в использовании. Стоит выбирать, только если вам зачем-то нужна максимально высокая скорость обновления настроек.
Если коротко, то вся настройка займет пару минут, ее можно разделить на несколько коротких этапов:
1) Форкаем репозиторий
2) Генерируем токен доступа, находим свой ID клиента
3) Настраиваем несколько переменных среды для работы GitHub Actions
Осталось прописать адрес DNS в настройках ваших устройств - и все готово!
Я предлагаю посмотреть вам видео с настройкой для NextDNS, в котором я за две минуты показал весь процесс. Перед просмотром убедитесь, что вы "ускорили" кэширующие сервера YouTube :)
Ниже, уже более мелкими шагами, дана инструкция, и дополнительно описан процесс настройки для Cloudflare. Также при необходимости вы можете ознакомиться с readme.
Шаг 1. Форкаем репозиторий
Если у вас еще нет аккаунта на GitHubПридется его создать. Не используйте одноразовую почту, в идеале - войти через свою основную почту Google. Иначе GitHub заподозрит в вас бота и заблокирует возможность сделать форк.
На странице репозитория жмем Fork вверху справа. Если вы в хорошем настроении, можете заодно прожать звезду :)
После того, как форк готов, перейдите по пути Settings → Environments и создайте новую environment с именем DNS. Не закрывайте вкладку - она нам еще пригодится.
Для NextDNS:
1) Сгенерируйте API KEY на странице https://my.nextdns.io/account
и сохраните его в Environment secrets на вкладке с Шага 2 как AUTH_SECRET
2) Нажмите на логотип NextDNS. На открывшейся странице скопируйте ID из секции Endpoints . Сохраняем в Environment secrets как CLIENT_ID.
Для Cloudflare:
1) После регистрации в Cloudflare перейдите во вкладку Zero Trust и создайте аккаунт с бесплатным тарифом. Шаг с добавлением платёжного метода можно пропустить, нажав Cancel and exit (в правом верхнем углу).
2) Создайте токен: Create Token → Create Custom Token: https://dash.cloudflare.com/profile/api-tokens
С двумя разрешениями (Permissions): Account.Zero Trust : EditAccount.Account Firewall Access Rules : Edit
Сохраните его в Environment secrets как AUTH_SECRET
3) Найдите Account ID по ссылке https://dash.cloudflare.com/?to=/:account/workers и сохраните в Environment secrets как CLIENT_ID
Создайте Environment variable (именно variable, не secret!) с названием DNS и именем выбранного вами DNS-провайдера (NextDNS или Cloudflare).
Создайте Environment variable с названием REDIRECT и поместите туда ссылку на hosts. Если вы хотите добавить несколько ссылок, указывайте их через запятую без пробела. Если домен встречается в нескольких списках, приоритет отдается той записи, которая была получена первой.
Создайте Environment variable с названием BLOCK и поместите туда ссылку на hosts
На странице форкнутого репозитория выбираем вкладку Actions и нажать длинную зеленую кнопку "I understand...".
Слева выбираем пункт DNS Block&Redirect Configurer cron task
Справа появится предупреждение, жмем там кнопку Enable workflow
Производим ручной запуск через кнопку Run Workflow
Через несколько секунд вы увидите, что джоба запустилась.
Вот и все! Не забудьте прописать в настройках ваших устройств адрес нового DNS :)
Источник


