
DNS-прокси, простой и быстрый, с не такими уж простыми возможностями. Ориентирован на маршрутизируемую пересылку DNS, фильтрацию и родительский контроль.
DNS-прокси, который даёт вам реальный контроль над вашей домашней сетью.
Я годами работал консультантом в «взрослой» сетевой и security-«арене». DNS-безопасность была и остаётся моей повседневной работой, а также любимым хобби, с которым приятно возиться. Поскольку теперь у меня есть дети и мне нужно быть ответственным родителем, я взял на себя задачу фильтровать для них большой и страшный интернет. Так я создал sdproxy (Simple DNS Proxy). Он привносит корпоративные/«взрослые» защиты/методы/точность на уровень домашней сети (вроде того).
Прокси написан на Go и компилируется в компактный бинарник для дешёвых роутеров. Здесь НЕТ облачных подписок или ежемесячных платежей. Он говорит на всех диалектах DNS и включает адаптивный контроль допуска, чтобы оставаться стабильным. Это просто компактная (вроде того), злая, голландская инженерная точность для гостиной. Только вы, один исполняемый файл и yaml-файл.
И помните... Это всегда DNS!
Примечание: full_reference_config.yaml всегда более актуален, чем этот README. Если сомневаетесь, проверяйте там.
DNS — это телефонная книга интернета — каждое устройство в вашей сети выполняет поиск имени, прежде чем куда-либо подключиться.
sdproxy находится посередине этого процесса, на вашем роутере, и позволяет вам решать, что произойдёт дальше: закешировать, заблокировать, направить к другому резолверу, применить продвинутые ML-модели безопасности или установить лимиты времени для каждого ребёнка. Никаких облачных подписок, ежемесячных платежей, никакого внешнего сервиса, который может упасть.
Он написан на Go, компилируется в один бинарник и достаточно компактен, чтобы работать на дешёвых домашних роутерах (OpenWrt на TP-Link, GL.iNet или NetGear, pfSense, OPNsense или просто на обычной Linux-машине).
Ключевые преимущества по сравнению с альтернативами смотрите .
Старый добрый UDP/TCP (порт 53), шифрованный DNS-over-TLS (DoT), DNS-over-HTTPS (DoH) и DNS-over-QUIC (DoQ).
sdproxy нативно разбирает заголовки Alt-Svc и на лету бесшовно обновляет стандартные потоки DoH до высокопроизводительных соединений HTTP/3 (QUIC).Защищает ваш просмотр от глубокой инспекции пакетов со стороны провайдера, шифруя TLS Server Name Indication (SNI).
HTTPS/SVCB, извлекает их ECH-ключи и полностью автономно защищает TLS-рукопожатие.Нативный ML-движок логистической регрессии с нулевым выделением памяти работает на горячем пути. Он извлекает энтропию Шеннона, перекос гласных/согласных и n-граммные цепочки, чтобы мгновенно обнаруживать и блокировать алгоритмически сгенерированные домены (DGA), используемые ботнетами, вредоносным ПО и инфраструктурой C2.
Объёмное профилирование базовой линии отслеживает экспоненциально сглаженное скользящее среднее (EMA) с альфа-сглаживанием для данных, передаваемых на каждого клиента или подсеть. Оно обнаруживает внезапные аномальные всплески данных, покидающих сеть через порт 53, и отправляет клиента в высокопроизводительный «штрафной бокс» (Penalty Box).
sdproxy не просто слепо пересылает запросы; он динамически оценивает вышестоящие серверы.
Недавно что-то отвечали? Отдайте это из кеша. sdproxy использует 32 криптографически засеянных, свободных от блокировок сегмента памяти. Если запись истекает, оставаясь популярной, sdproxy запускает фоновую предвыборку, чтобы ваши устройства никогда не замечали промах кеша. Он полностью поддерживает RFC 8767 Stale-Serving.
Укажите ему на ваши файлы аренды DHCP и /etc/hosts, и он будет отвечать на локальные поиски имён (ваш NAS, ваш принтер, ваш Pi), не беспокоя вышестоящий резолвер. Работает с dnsmasq, ISC DHCP, Kea и odhcpd.
Сопоставьте идентичность устройства с другой группой вышестоящих резолверов или родительским профилем.
RCODE: REFUSED, NXDOMAIN) непосредственно к правилу маршрутизации для мгновенного карантина клиента.Настройте профиль для каждого ребёнка, назначьте их устройства и настройте:
Опциональный, защищённый паролем браузерный интерфейс для живых операций.
Отбрасывает любой ответ вышестоящего сервера, содержащий приватные или bogon IP (RFC1918, loopback, ULA), возвращая NXDOMAIN, чтобы предотвратить Server-Side Request Forgery (SSRF) и атаки с разворотом браузера.
git clone https://github.com/cbuijs/sdproxy
cd sdproxy
go build -o sdproxy .
./sdproxy --config config.yaml
Требуется Go 1.25+. Без CGo, без внешних библиотек.
server:
listen_udp: ["0.0.0.0:53"]
cache:
enabled: true
size: 1024
upstreams:
default:
- "udp://1.1.1.1:53"
- "udp://9.9.9.9:53"
# OpenWrt MIPS (TP-Link, Netgear, etc.)
GOOS=linux GOARCH=mipsle GOMIPS=softfloat go build -ldflags="-s -w" -o sdproxy .
# OpenWrt ARM (Linksys, Asus, etc.)
GOOS=linux GOARCH=arm GOARM=7 go build -ldflags="-s -w" -o sdproxy .
# OpenWrt x86_64
GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o sdproxy .
Флаги -s -w удаляют отладочные символы — экономит 30-40% размера бинарника, что важно на небольшом флеш-хранилище.
Всё живёт в одном YAML-файле. full_reference_config.yaml в этом репозитории документирует каждую опцию прямо внутри — этот файл и есть руководство. Скопируйте его, уберите ненужное, настройте остальное.
2026/05/01 14:23:01 [DNS] [DoH3+ECH] 192.168.1.42 (alice-iphone) -> google.com A | ROUTE: kids | UPSTREAM: doh3://cloudflare-dns.com | OK
2026/05/01 14:23:02 [DNS] [UDP] 192.168.1.42 (alice-iphone) -> google.com A | ROUTE: kids | CACHE HIT
2026/05/01 14:23:05 [DNS] [DoQ] 192.168.1.10 -> nas.lan A | LOCAL IDENTITY
2026/05/01 14:23:10 [DNS] [UDP] 192.168.1.42 (alice-iphone) -> dga-domain-xzq1.com A | DGA INTERCEPT (Score: 98.2) | NXDOMAIN