2026
یک resolver سیاستمحور DNS برای لینوکس: کوئریها را با قانون مسدود، بازنویسی، رد یا ارسال میکند، روی UDP، TCP، DoT و DoH پاسخ میدهد، و همهچیز از راه یک API HTTP و یک رابط ترمینالی کنترل میشود.
dnsd یک دیمن لینوکس است که کوئریهای DNS را بر اساس قوانین پاسخ میدهد و بقیه را به resolverهای بالادستی میفرستد. dnsctl پنل کنترل آن است: یک رابط تمامصفحهٔ ترمینالی بهعلاوهٔ CLI، که هر دو با API HTTP در dnsd حرف میزنند.
| حوزه | توانایی |
|---|---|
| شنود | DNS کلاسیک روی UDP و TCP، بهعلاوهٔ DoT و DoH |
| Upstream | DNS ساده (UDP با بازگشت به TCP)، DoT (tls://…)، DoH (https://…) |
| خروجی | bind_ip / bind_iface به ازای هر پروفایل، هر upstream یا سراسری |
| سیاست | block، refuse، drop، sinkhole، rewrite، forward |
| بلاکلیست | مجموعههای حجیم دامنههای تبلیغاتی / ردیاب / بدافزار با بارگذاری مجدد زنده |
| تلهمتری | QPS، دامنههای پرتکرار، پرمسدودشدهها، کلاینتهای پرتکرار، لاگ کوئری، خطاها |
| وضعیت | فایل وضعیت JSON اختیاری که اتمیک نوشته میشود و بعد از ریاستارت میماند |
block پاسخ NXDOMAIN میدهد، refuse پاسخ REFUSED، drop پاسخی نمیدهد،
sinkhole و rewrite یک رکورد A/AAAA/CNAME میسازند، forward کوئری را به
فهرست مشخصی از upstreamها میفرستد، و allow به مسیر عادی برمیگردد.SO_BINDTODEVICE به
یک اینترفیس متصل کرد — تا ترافیک resolve بازگشتی (recursive) از همان تونلی برود که مدنظرتان است.بلاکلیستهای حجیم یک نام و همهٔ پسوندهای والدش را تطبیق میدهند، پس مسدود
کردن tracker.example جلوی a.b.tracker.example را هم میگیرد.
make build
./bin/dnsd --listen 127.0.0.1:51920 --token dev-token \
--dns-listen 127.0.0.1:5353 --state-file /tmp/dnsd-state.json --allow-insecure
export DNSCTL_URL=http://127.0.0.1:51920 DNSCTL_TOKEN=dev-token
./bin/dnsctl block ads.example
./bin/dnsctl rewrite app.corp 10.77.0.10
dig @127.0.0.1 -p 5353 app.corp +short
API کنترل بهطور پیشفرض روی loopback گوش میدهد و توکن bearer میخواهد که در
زمان ثابت مقایسه میشود. dnsd با توکن خالی یا توکن توسعه روی آدرس کنترل
غیر-loopback از اجرا خودداری میکند، مگر اینکه --allow-insecure بدهید.
یونیت systemd همراه پروژه فقط CAP_NET_BIND_SERVICE را میدهد.
Go، و Bubble Tea برای TUI. با مجوز GNU AGPL v3.