podkop dns роутера не проходит через sing box
podkop dns роутера не проходит через sing-box
Почему podkop DNS роутера не проходит через sing-box — и как это исправить
podkop dns роутера не проходит через sing-box. Эта фраза, набранная в поиске отчаянным пользователем, — крик о помощи от тех, кто уже настроил WireGuard-туннель в sing-box, перенаправил весь трафик через него, но обнаружил, что локальный DNS-резолвер (например, Podman DNS или собственный поднятый Unbound) продолжает «просачиваться» мимо прокси. Проблема не в баге, а в архитектуре: sing-box по умолчанию не перехватывает трафик, генерируемый самим хостом (в данном случае — роутером), если не настроены соответствующие правила маршрутизации и TProxy.
Когда DNS-утечка — не утечка, а особенность стека
Большинство руководств по настройке sing-box сосредоточены на клиентских устройствах: ПК, смартфонах, ноутбуках. Там трафик приложений легко перенаправляется через TUN/TProxy. Роутер же — это шлюз. Он сам генерирует DNS-запросы для:
- разрешения имён в правилах dnsmasq или AdGuard Home,
- работы сервисов вроде NTP, Let’s Encrypt,
- внутренних скриптов мониторинга.
Эти запросы исходят от самого роутера, а не от клиентов. Sing-box, даже запущенный в режиме tproxy, по умолчанию игнорирует loopback-трафик и пакеты с локальным source IP. Поэтому ваш Podkop DNS (или любой другой локальный резолвер) продолжает работать напрямую — через провайдера, минуя зашифрованный туннель.
Решение требует двух вещей:
1. Настройки iptables/nftables для перехвата локального DNS-трафика.
2. Корректной конфигурации sing-box с inbound типа tproxy и правилами маршрутизации.
Чего вам НЕ говорят в других гайдах
-
Бесплатные «антиблокировщики» — это сборщики данных
Многие пользователи в регионах RU скачивают «легкие» аналоги sing-box из Telegram-каналов. Такие сборки часто содержат модифицированный код, отправляющий список ваших доменов на удалённый сервер. Это не теория заговора: в 2024 году исследователи обнаружили, что 3 из 5 популярных open-source прокси для Android передавали SNI-заголовки третьим лицам. -
Kill switch на роутере — иллюзия без stateful firewall
Даже если вы включилиsniffingиdomainStrategy: IPOnDemandв sing-box, при падении туннеля роутер может продолжить отправлять DNS-запросы напрямую. Настоящий kill switch требует: - маркировки всех пакетов через
fwmark, - блокировки всего трафика без этой метки в OUTPUT цепочке iptables.
Без этого — никакой защиты.
-
Поддельные аудиты и «no-log» на словах
Провайдеры вроде NordVPN или Mullvad действительно проходят независимые аудиты (Cure53, Deloitte). Но большинство локальных «антиблокировщиков» заявляют «мы не храним логи», хотя их инфраструктура находится в юрисдикции 14 Eyes (включая Россию). По закону ФСБ они обязаны предоставлять данные по первому требованию — даже если «логов нет». -
WebRTC и IPv6 — источники утечек вне sing-box
Sing-box контролирует только IPv4/IPv6-трафик, который вы явно направили в него. Если в браузере клиента включён WebRTC, он может раскрыть реальный IP через STUN-запросы. А если роутер имеет IPv6-подключение, а sing-box настроен только на IPv4 — весь IPv6-трафик пойдёт мимо. -
DPI всё ещё ловит «неправильные» туннели
Даже WireGuard может быть заблокирован, если его handshake не маскируется. В России РКН активно использует Deep Packet Inspection для выявления трафика по шаблонам. Sing-box поддерживает obfs4, ShadowTLS и Reality — но большинство пользователей не включают их, считая WireGuard «невидимым».
Как заставить DNS роутера идти через sing-box: пошагово
Шаг 1. Убедитесь, что sing-box слушает TProxy
В конфигурации inbounds должен быть блок:
{
"type": "tproxy",
"tag": "tproxy-in",
"listen": "0.0.0.0",
"listenPort": 7892,
"sniffing": true,
"network": "tcp,udp"
}
Для UDP-DNS критично указать network: "udp".
Шаг 2. Перенаправьте локальный DNS через iptables
На роутере (OpenWrt/Asus/Merlin) выполните:
Маркируем DNS-трафик от роутера
iptables -t mangle -A OUTPUT -p udp --dport 53 -j MARK --set-mark 0x1234
ip6tables -t mangle -A OUTPUT -p udp --dport 53 -j MARK --set-mark 0x1234
Перенаправляем маркированный трафик в TProxy
iptables -t mangle -A OUTPUT -p udp --dport 53 -j TPROXY --on-port 7892 --on-ip 127.0.0.1 --tproxy-mark 0x1234
ip6tables -t mangle -A OUTPUT -p udp --dport 53 -j TPROXY --on-port 7892 --on-ip ::1 --tproxy-mark 0x1234
Важно: порт
7892должен совпадать сlistenPortв inbound.
Шаг 3. Настройте routing в sing-box
В разделе route укажите правило для DNS:
{
"type": "logical",
"mode": "and",
"rules": [
{ "protocol": "dns" },
{ "ipIsPrivate": false }
],
"outbound": "your-vpn-outbound"
}
Это гарантирует, что все внешние DNS-запросы пойдут через ваш туннель (WireGuard/OpenVPN).
Шаг 4. Отключите прямой доступ к DNS
Заблокируйте исходящий UDP-трафик на порт 53, кроме как через sing-box:
iptables -A OUTPUT -p udp --dport 53 ! -m mark --mark 0x1234 -j DROP
ip6tables -A OUTPUT -p udp --dport 53 ! -m mark --mark 0x1234 -j DROP
Теперь даже если sing-box упадёт — DNS-запросы не уйдут наружу.
Сравнение решений для DNS-over-VPN на роутере
| Критерий | Sing-box + TProxy | AdGuard Home + DoH | OpenVPN client + redirect-gateway | WireGuard + nftables |
|---|---|---|---|---|
| Поддержка локального DNS | ✅ (с ручной настройкой) | ❌ (только клиентский трафик) | ❌ | ✅ (сложная настройка) |
| Защита от утечек | Высокая (при правильном fw) | Средняя (WebRTC, IPv6) | Низкая (DNS leak common) | Высокая |
| Обход DPI | ✅ (Reality, ShadowTLS) | ❌ | ❌ (легко детектируется) | ⚠️ (требует obfs) |
| Расход RAM на роутере | 30–50 МБ | 80–120 МБ | 20–40 МБ | 10–20 МБ |
| Юрисдикция (типичный хост) | Любой (self-hosted) | AdGuard Ltd (Кипр) | Зависит от провайдера | Любая |
| Цена | Бесплатно | Бесплатно / $2/мес (Pro) | От $3/мес | Бесплатно |
Примечание: self-hosted решения (sing-box, WireGuard) дают полный контроль, но требуют технических навыков. Готовые сервисы проще, но менее прозрачны.
Реальные сценарии: кому это критично?
Журналист в командировке
Использует роутер с sing-box для защиты всех устройств. Если DNS роутера уходит напрямую — злоумышленник видит, какие новостные сайты он проверяет через внутренние скрипты мониторинга.
IT-специалист в кафе
Подключает ноутбук к своему роутеру-«бублику». Без перехвата локального DNS роутер может отправить запросы к внутренним доменам компании — и раскрыть корпоративную инфраструктуру.
Пользователь торрентов
Хотя торрент-клиент на ПК идёт через VPN, роутер может делать reverse DNS lookup для логирования. Этот запрос — без шифрования — попадает провайдеру.
Обход блокировок Telegram
Если DNS-резолвер роутера не идёт через туннель, провайдер (например, Ростелеком) видит частые запросы к telegram.org и может применить дополнительные меры.
Защита от MITM в публичных сетях
В аэропорту злоумышленник подменяет DNS-ответы. Если роутер использует незащищённый резолвер — все устройства получают фишинговые IP.
FAQ
VPN замедляет интернет — на сколько реально?
Зависит от протокола и сервера. WireGuard в sing-box добавляет 3–8 мс пинга и снижает скорость на 3–7% при хорошем канале. OpenVPN — до 15–20%. На роутерах с CPU ниже 800 МГц (например, старые Keenetic) потеря может достигать 30–40%.
Меня найдёт спецслужба при использовании VPN?
Если вы используете self-hosted sing-box на VPS в нейтральной юрисдикции (Швейцария, Исландия) — маловероятно. Но если ваш провайдер — российская компания, она обязана хранить логи подключений 1 год (ФЗ-149). Даже «no-log» VPN из РФ может быть принуждён к сотрудничеству.
WireGuard или OpenVPN — что безопаснее?
WireGuard безопаснее: меньше кода (меньше уязвимостей), современная криптография (Noise Protocol, ChaCha20, Curve25519), perfect forward secrecy «из коробки». OpenVPN использует устаревшие алгоритмы (AES-CBC), требует ручной настройки PFS и уязвим к атакам на handshake при слабых параметрах.
Как проверить, не утекает ли DNS роутера?
1. Зайдите на ipleak.net с любого устройства за роутером.
2. Включите «Extended Test».
3. Если в списке DNS-серверов есть IP вашего провайдера (МТС, Ростелеком) — утечка есть.
4. Для точности: зайдите в CLI роутера и выполните tcpdump -i any port 53 — вы увидите, куда уходят запросы.
Можно ли использовать DoH вместо перенаправления через sing-box?
Можно, но это не решает проблему полностью. DoH шифрует только содержимое DNS, но SNI в TLS остаётся открытым. Кроме того, многие роутеры не поддерживают DoH в dnsmasq. Лучше направлять весь DNS-трафик через VPN — тогда даже SNI будет скрыт (если используется TLS-in-TLS или Reality).
Что делать, если после настройки пропал интернет на всех устройствах?
Скорее всего, вы забыли разрешить трафик с меткой в OUTPUT или неправильно указали порт TProxy. Выполните:iptables -t mangle -L -v
и проверьте, есть ли пакеты в цепочке TPROXY. Также убедитесь, что в sing-box включен outbound по умолчанию для остального трафика.
Вывод
Проблема «podkop dns роутера не проходит через sing-box» — не ошибка, а следствие непонимания различия между клиентским и хостовым трафиком. Роутер, в отличие от ПК, сам является источником DNS-запросов, и эти запросы по умолчанию игнорируются TProxy-правилами, ориентированными на перенаправление трафика от клиентов. Чтобы закрыть эту утечку, нужно вручную настроить iptables/nftables для перехвата OUTPUT-трафика на порт 53, пометить его и направить в inbound sing-box. Без этого даже идеально настроенный туннель оставляет «дыру» в информационной безопасности — особенно критичную в условиях усиленного DPI и обязательного логирования в РФ. Не верьте гайдам, которые обещают «всё заработает само». Проверяйте каждый пакет.
This guide is handy; the section on payment fees and limits is easy to understand. The structure helps you find answers quickly.