被动递归DNS守护进程。

go get github.com/korc/PR-DNSd
sudo setcap cap_net_bind_service,cap_sys_chroot=ep go/bin/PR-DNSd
go/bin/PR-DNSd -upstream 9.9.9.9:53 -listen 127.0.0.1:53
echo nameserver 127.0.0.1 | sudo tee /etc/resolv.conf
dig google.com
dig -x $(dig +short google.com)
如果你无法使用 setcap,你必须使用 -chroot "" 和 -listen :<high_port> 选项,或者以 root 身份运行。
netstat/tcpview/lsof 等输出进行适当的 setcap 后,运行:
PR-DNSd -tlslisten :853 -cert YOUR_SERVER_CRT_KEY_PEM -upstream 1.1.1.1:53 -store pr-dnsd
-cert string
TCP-TLS监听器证书(tls监听器必需)
-chroot string
启动后chroot到目录(默认为"/var/tmp")
-count int
应用去抖延迟前允许的回复次数(默认100)
-ctmout string
上游查询的客户端超时时间
-debounce string
防止DoS的单个IP之间UDP回复所需时间间隔(默认"200ms")
-key string
TCP-TLS证书密钥(默认与-cert值相同)
-listen string
监听地址(默认":53")
-silent
不报告正常数据
-store string
将PTR数据存储到指定文件
-tlslisten string
TCP-TLS监听器地址(默认":853")
-upstream string
上游DNS服务器(DoT使用tcp-tls://前缀)(默认"1.1.1.1:53")
(使用tls和chroot时,确保chroot中的ca-certificates和resolv.conf正确设置)