Правила по доменным именам: почему не работают
Проверка браузера, Windows и Linux. Что именно ломает правило и как это исправить
Как вообще работает правило по домену
Правило по домену — это не фильтр по имени сайта. Оно работает в два шага:
- SmartNetwork видит DNS-ответ на запрос программы.
- Из ответа берутся IP-адреса, и для них запоминается решение — «через SmartNetwork», «напрямую» или «заблокировать».
Дальше трафик программы уже сопоставляется с этими IP. Отсюда главное следствие:
Если SmartNetwork не увидел DNS-ответ, правило по домену не сработает. Ровно это и происходит в 95% случаев «правило не работает». Ниже — все причины, которые гарантированно мешают.
Ещё два уточнения, которые снимают половину ложных обращений:
- Сами DNS-запросы SmartNetwork всегда отправляет через себя в обход правил. Это нормально и не является ошибкой: так система узнаёт страну узла и выбирает маршрут.
- Правило применяется к новым соединениям. Уже открытое соединение продолжит идти как раньше, пока программа его не переподключит.
1. DNS-over-HTTPS в браузере — причина №1
Современные браузеры умеют отправлять DNS-запросы не отдельным DNS-пакетом, а внутри обычного HTTPS-трафика на порт 443. Для SmartNetwork это выглядит как обычный сайт: DNS-запроса нет, IP из ответа получить неоткуда, правило по домену не срабатывает.
Это самая частая причина. В Chrome и Firefox DoH включён по умолчанию в режиме «автоматически»: браузер сам решает, использовать шифрованный DNS или обычный, и решение может меняться от сети к сети.
Google Chrome и Chromium (включая Яндекс Браузер, Vivaldi, Opera, Edge на Chromium)
- Откройте
chrome://settings/security - Найдите пункт «Использовать безопасный DNS» (в англоязычной версии — «Use secure DNS»)
- Выключите переключатель полностью, не оставляя «Автоматически»
В Яндекс Браузере аналогичный пункт находится в Настройки → Системные → «Защищённый DNS».
Mozilla Firefox
- Откройте Настройки → Основные и прокрутите до раздела «Настройки сети»
- Нажмите «Настроить»
- Снимите галочку «Включать DNS через HTTPS» и в разделе «Защищённый DNS» выберите «Выкл.»
Проверить проще всего так: откройте about:config, найдите network.trr.mode — там должно быть 5 (полностью выключено). Значение 0, 1, 2 или 3 означает, что DoH включён.
Microsoft Edge
- Откройте
edge://settings/privacy - Прокрутите до раздела «Безопасность»
- Отключите «Использовать безопасный DNS»
Opera
В Opera встроенный туннель и DoH могут быть включены одновременно. Откройте Настройки → Конфиденциальность и безопасность и выключите «Встроенный туннель» (в русской локализации он может называться «Встроенный VPN») и «DNS-over-HTTPS».
Brave
Настройки → Безопасность и конфиденциальность. В разделе «Безопасный DNS» выберите «Выключить».
Важно: после отключения DoH обязательно очистите кэш DNS — иначе браузер ещё какое-то время будет работать по старым адресам и вы снова увидите «не работает».
2. К каким системам это относится
Правила по доменам и по IP/CIDR работают в клиентах для Windows, Linux и на роутере. Ниже — причины, которые мешают правилу сработать именно там.
Android работает по-другому. В мобильном клиенте маршрутизация задаётся по приложениям: вы отмечаете, какие программы идут через SmartNetwork. Правил по доменам и по IP/CIDR на Android нет, поэтому и проблем с DNS, о которых речь ниже, там не возникает.
3. Linux: systemd-resolved и локальный stub
Это отдельная и очень частая причина именно на Linux. В большинстве дистрибутивов DNS обслуживает служба systemd-resolved, и она слушает 127.0.0.53.
Программы обращаются на 127.0.0.53 — это loopback, локальный адрес. Такой пакет не покидает машину, поэтому SmartNetwork его не видит, DNS-ответ получить не может, IP домена неизвестен — правило по домену не срабатывает.
Как проверить
Выполните в терминале:
resolvectl status
cat /etc/resolv.conf
Смотрите на две вещи:
- строка
resolv.conf mode: stub— значит используется локальный stub - в
/etc/resolv.confстоитnameserver 127.0.0.53— то же самое
Если в выводе есть 127.0.0.53 или 127.0.0.1 — правило по домену на этом компьютере работать не будет.
Как исправить
Нужно убрать локальный stub и указать DNS-сервер напрямую — тот, который выдаёт ваш роутер или провайдер. Не редактируйте /etc/systemd/resolved.conf вручную: он принадлежит пакету и будет перезаписан при обновлении. Создайте отдельный файл настройки:
sudo mkdir -p /etc/systemd/resolved.conf.d
sudo tee /etc/systemd/resolved.conf.d/smartnetwork.conf > /dev/null <<'EOF'
[Resolve]
DNS=192.168.1.1
DNSStubListener=no
EOF
sudo systemctl restart systemd-resolved
Замените 192.168.1.1 на адрес вашего DNS-сервера. DNSStubListener=no убирает 127.0.0.53 из /etc/resolv.conf, и программы начинают обращаться к DNS напрямую.
Проверка после правки:
resolvectl status | head -20
cat /etc/resolv.conf
В /etc/resolv.conf больше не должно быть 127.0.0.53.
Откат — одной командой:
sudo rm /etc/systemd/resolved.conf.d/smartnetwork.conf
sudo systemctl restart systemd-resolved
Если systemd-resolved не используется
В некоторых системах (например, с NetworkManager без systemd-resolved, или в минимальных сборках) DNS настраивается в /etc/resolv.conf напрямую. Проверьте, что там указан реальный адрес DNS-сервера, а не 127.0.0.1.
Если на компьютере запущен локальный DNS-сервер (dnsmasq, unbound, bind, dnsdist, AdGuard Home, Pi-hole) — он тоже слушает loopback и даёт ровно тот же эффект. На время проверки его нужно остановить либо настроить так, чтобы он пересылал запросы на внешний адрес.
systemd-resolved и кэш
Даже после исправления resolved продолжает отдавать ответы из своего кэша, вообще не обращаясь к сети. Программа получает IP, но SmartNetwork этот DNS-ответ не видел, значит правило по домену не применилось.
Всегда сбрасывайте кэш после изменения настроек DNS:
sudo resolvectl flush-caches
4. Windows
Windows сам по себе DoH не включает, но:
- Windows 11 умеет DoH, и он включается в свойствах сетевого адаптера: Параметры → Сеть и Интернет → Свойства адаптера → Назначение DNS-сервера → Шифрование. Должно быть «Только без шифрования» или «Не указано»
- Cloudflare WARP, AdGuard for Windows, Simple DNSCrypt, YogaDNS — выключите или удалите
- Сторонние антивирусы (Kaspersky, ESET, Avast) имеют собственную DNS-защиту — отключите её на время проверки
Проверить и сбросить кэш:
ipconfig /all
ipconfig /flushdns
В выводе ipconfig /all найдите строку «DNS-серверы». Если там 127.0.0.1 — ищите локальный DNS-сервер или фильтрующее приложение.
5. Файл hosts обходит DNS полностью
Если домен прописан в файле hosts, программа получает IP мгновенно, без единого DNS-пакета. SmartNetwork этот запрос не увидит, правило по домену не применится — трафик пойдёт по общим правилам (обычно через SmartNetwork, даже если вы задали «напрямую»).
- Linux:
/etc/hosts - Windows:
C:\Windows\System32\drivers\etc\hosts
Уберите из файла строки с проверяемым доменом.
Отдельно: программы для блокировки рекламы (AdGuard, uBlock в режиме hosts-фильтра, «блокировщики» в прошивках) могут подменять DNS или отдавать ответ 0.0.0.0. Если DNS-ответ пришёл от них, а не из сети, SmartNetwork его не видел.
6. Правило на домен и его поддомены
Здесь важно понимать, какая у вас версия клиента, потому что поведение изменилось.
В версиях до обновления
Правило по домену сравнивалось точно:
example.comне покрывалwww.example.com,api.example.comи любой другой поддоменwww.example.comне покрывалexample.com- шаблонов и звёздочек нет:
*.example.comне работал
Современные сайты почти всегда грузят контент с поддоменов. Если правило задано на example.com, а картинки и видео приходят с cdn.example.com, правило срабатывало частично: основной сайт шёл как надо, а медиа нет.
В обновлённых версиях
Правило на домен покрывает сам домен и все его поддомены:
example.comпокрываетexample.com,www.example.com,api.example.com,a.b.example.comexample.comне покрываетnotexample.com— совпадение идёт по границе точки, а не по подстрокеexample.comне покрываетexample.com.evil.com— правило не «уезжает» внутрь чужого имени- правило на поддомен не расширяется вверх:
www.example.comне покрываетexample.com - регистр и точка в конце по-прежнему не важны
Отдельные правила на поддомены больше не нужны — одного правила на основной домен достаточно.
Чего делать не стоит
Не задавайте правило на голую зону — com, ru, net или на общий разделяемый домен вроде co.uk. С суффиксной сверкой такое правило захватит всю зону, а не конкретный сайт. Правило должно быть доменом, которым владеет один сайт: example.com, а не com.
7. Обращение по IP-адресу — DNS не участвует
Если программа соединяется с сайтом по IP напрямую (например, игровой сервер, торрент-трекер, мессенджер с зашитыми адресами), DNS-запроса нет вообще. Правило по домену применить не к чему.
Признак: сайт открывается по имени нормально, а конкретная программа или игра «не видит» правило. В таком случае используйте правило по IP/CIDR — оно работает напрямую, без DNS.
То же касается сайтов, которые открываются по IP в адресной строке: https://93.184.216.34/ — это не домен, правило по домену не сработает. Подробный разбор этого случая — в ответе «Сайт открывается по IP-адресу».
8. Кэш DNS — почему «вчера работало, сегодня нет»
DNS-ответы кэшируются на каждом уровне: в браузере, в операционной системе, в роутере, у провайдера. Пока живёт кэш, новый DNS-запрос в сеть не уходит, а значит SmartNetwork не видит ответ и не может применить правило.
Это же объясняет «не для всех устройств одинаково»: устройство со своим кэшем не даёт SmartNetwork ни одного шанса применить правило, а устройство без кэша — даёт.
Типичный срок жизни: от 5 минут до нескольких часов. Часть сайтов ставит маленький TTL (30–60 секунд), часть — сутки.
Как сбросить кэш DNS
Выполните для своей системы, затем перезапустите программу, в которой проверяете правило.
Windows
ipconfig /flushdns
Linux (systemd-resolved)
sudo resolvectl flush-caches
Linux (nscd, если установлен)
sudo systemctl restart nscd
Браузер
- Chrome, Edge, Яндекс Браузер:
chrome://net-internals/#dns→ кнопка Clear host cache - Firefox: перезапуск браузера (кэш DNS хранится в памяти)
После сброса откройте сайт заново, в новой вкладке.
Чек-лист: правило по домену не работает
Проходите по порядку, это быстрее, чем искать причину наугад:
- Версия клиента. В старых версиях правило на
example.comне покрывалоwww.example.com, и поддомены приходилось добавлять отдельно. В обновлённых версиях достаточно одного правила на основной домен. - В браузере выключен «Безопасный DNS» (DoH). Не «автоматически», а именно выключен.
- На Linux убран системный DNS-стаб (
127.0.0.53) и локальный DNS-сервер. - Нет приложений с собственным DNS (AdGuard, WARP, Blokada, антивирусы).
- Домена нет в файле
hosts. - Кэш DNS сброшен, программа перезапущена.
- Сайт открыт в новой вкладке, а не переиспользована старая.
- Сайт открывается по домену, а не по IP.
Если после всех пунктов правило не работает — напишите нам, приложив:
- какая система (Windows, Linux, роутер)
- какой домен и какое правило задано
- вывод
resolvectl status(Linux) илиipconfig /all(Windows) - скриншот раздела «Правила» с этим правилом
Контакт: inbox@sistersystems.net или Telegram @smartnetworksustem_bot.
Что не мешает правилам
Чтобы вы не тратили время на лишнее:
- QUIC и HTTP/3 — работают поверх обычного DNS, домен виден, правило применится
- ECDSA, TLS 1.3, ECH — DNS-запрос уходит отдельно от HTTPS, имя домена в нём открыто (если только не включён DoH/DoT из этой статьи)
- Отсутствие IPv6 или наличие IPv6 — оба варианта поддерживаются, из ответа берутся и A-, и AAAA-записи
- Смена IP-адреса сайта — при следующем DNS-запросе правило применится к новым адресам автоматически