Безусловно, тема обхода ограничений изнутри страны сейчас актуальна. Но что делать, если нужно открыть сайты, которые со своей стороны заблокировали пул IP-адресов из РФ, не используя доп ПО в виде VPN/прокси клиентов? Например, было интересно создать аналог DNS-сервера вроде comss, который открывает доступ к AI, игровым серверам и тому подобному, которые сами заблокировали пользователей из РФ, с чем не смогут помочь обходы DPI (возможно, эксперты напишут замечания в комментариях).
Один из возможных способов, который получилось реализовать у меня, представлен ниже.
Нам понадобится VPS в локации, через которую мы хотим быть видимы для нужных нам сервисов.
Для примера можно вспомнить Twitch, который заблокировал доступ к просмотру стримов в качестве 1080p для пользователей из РФ. Так же разблокируем просмотр в 1440p, что тоже доступно в ограниченном числе регионов (при условии, что стример участник бета программы и стримит в 2к).
Идём на страницу справки по бета-тестированию качества 2k на Twitch и смотрим регионы, в которых оно доступно.

По аналогии можно посмотреть, например, локации, где недоступен Gemini, и выбрать более подходящую локацию под оба случая.
Итак, регион выбран, сервер с белым IPv4 в данной локации арендован — переходим к настройке (на примере Ubuntu):
1. Настраиваем подобие SNI-прокси через nginx
Устанавливаем nginx и модуль ngx_stream_core_module
, который поможет нам проксировать трафик на основе SNI.
apt install nginx libnginx-mod-stream
Редактируем конфигурационный файл nginx:
nano /etc/nginx/nginx.conf
Вставляем следующий блок (вне блока http
):
stream {
log_format proxy '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$ssl_preread_server_name"';
access_log /var/log/nginx/stream-access.log proxy;
error_log /var/log/nginx/stream-error.log;
server {
resolver 1.1.1.1 ipv6=off;
listen 443;
ssl_preread on;
proxy_pass $ssl_preread_server_name:443;
proxy_connect_timeout 10s;
proxy_timeout 30s;
}
}
Сохраняем конфиг и проверяем, что с ним нет проблем:
nginx -t
nginx -s reload
Если всё в порядке (можно на всякий случай проверить через systemctl status nginx
), то это уже можно использовать на клиентах на уровне файла hosts
:
Просто прописать IP VPS и домен, который мы хотим пускать через него.
В случае с Twitch(сами потоки будут идти напрямую к серверам твича, мы проксируем только запросы, которые используются твичом для получения m3u плейлиста) для разблокировки качества достаточно прописать следующее (где 1.2.3.4
— IP вашего VPS):
1.2.3.4 usher.ttvnw.net
1.2.3.4 gql.twitch.tv
После перезапуска браузера (если в его настройках указан системный DNS провайдер, а не сторонний) качество выше 720p станет доступным. (Скорей всего понадобится так же очистить кэш DNS, как это сделать зависит от вашей ОС)
2. Настройка dnsmasq
Однако hosts
настроить можно не везде. Что если нам нужно качество на телевизоре или телефоне? Удобнее использовать VPN/proxy либо поднять свой DNS-сервер, который будет перенаправлять нужные запросы на наш сервер без установки доп ПО на клиенты.
Устанавливаем dnsmasq:
apt install -y dnsmasq
systemctl stop dnsmasq
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
nano /etc/dnsmasq.conf
Добавляем в конфиг следующие настройки(где 1.2.3.4
— IP вашего VPS):
(прописываем какие адреса должны идти на наш сервер, остальные будут резолвится через DNS от Cloudflare)
listen-address=0.0.0.0
port=53
no-resolv
no-hosts
server=1.1.1.1
server=1.0.0.1
cache-size=10000
log-queries
log-facility=/var/log/dnsmasq.log
address=/usher.ttvnw.net/1.2.3.4
address=/gql.twitch.tv/1.2.3.4
bogus-priv
bind-interfaces
Сохраняем конфиг, создаём файл для логов и тестируем корректность конфигурации:
touch /var/log/dnsmasq.log
chmod 644 /var/log/dnsmasq.log
dnsmasq --test
Если всё успешно, отключаем встроенный DNS-резолвер системы и включаем вместо него dnsmasq:
systemctl stop systemd-resolved
systemctl disable systemd-resolved
systemctl enable dnsmasq
systemctl start dnsmasq
systemctl status dnsmasq
Проверяем, что прописанный нами домен через localhost указывает на наш сервер:
dig @localhost usher.ttvnw.net +short
Если резолвит в IP нашего сервера — значит, работает.
Также проверим, работает ли наш DNS-сервер извне (где 1.2.3.4
— IP сервера):
dig @1.2.3.4 usher.ttvnw.net +short
Если всё успешно — можно прописать его в качестве первичного DNS на роутере или в системе/TV/телефоне.
Таким же образом можно прописать доменные адреса Gemini и других сервисов, которые блокируют доступ по локации IP пользователя. В связке с обходом DPI это может помочь без надобности использовать VPN/proxy (хотя у нас буквально прокси на уровни SNI адресов через nginx) для таких случаев.
P.S. Если кто-то сюда забрёл для разблокировки качества на твиче, то могу посоветовать эти расширения под chromium/firefox, которые работают после последних обновлений со стороны твича (на 11.10.25): https://github.com/reyohoho/twitch_quality_proxy