Openwrt_dns-over-https_DoH_DoT_DoQ_smartdns_广告过滤
Openwrt_dns-over-https_DoH_DoT_DoQ_smartdns_广告过滤
转载注明来源: 本文链接 来自osnosn的博客,写于 2026-09-03.
环境
- immortalwrt-25.10
- 默认使用 dnsmasq-full 作为 dns 客户端解析。支持 DNSSEC, 但不支持 DoH,DoT,DoQ。
支持 DOH 的软件
- (2026-09 查找)
- https-dns-proxy
有 luci 界面,luci-i18n-https-dns-proxy-zh-cn
接受本地普通dns查询,转发到远程 DoH查询。仅支持 DoH,软件包安装体积小,但依赖挺多。 C语言实现。 - smartdns
安装体积 553kB,接受本地dns的 udp,tcp,DoH,DoT查询,转发到远程 udp,tcp,DoT,DoH,DoQ,DoH3查询。目前不支持DNSSEC。C语言实现。
有 luci 界面,luci-i18n-smartdns-zh-cn, 功能挺强,配置复杂。 - dnsproxy
安装体积 10MB,接受本地dns的 udp,tcp,DoT,DoH,DoQ,DNSCrypt查询,转发到远程 udp,tcp,DoT,DoH,DoQ,DNSCrypt查询。支持DNSSEC。
是 AdguardTeam 出品。golang程序。 - adguardhome
接受本地普通dns查询,转发到远程 DoH查询。
安装体积 30MB,主功能是去广告, 可以导入广告过滤 list。支持 dhcp.
接受本地dns的 udp,tcp,DoT,DoH,DoQ,DNSCrypt查询,转发到远程 udp,tcp,DoT,DoH,DoQ查询。支持DNSSEC。
有 luci 界面,luci-app-adguardhome, 没啥用。
adguardhome 有自己的看板/配置界面,默认运行在3000端口,用浏览器访问。
也是 AdguardTeam 出品。golang程序。 - dns-over-https
DoH 早期的独立实现,包括 client 和 server 端。
安装体积 13MB,仅支持 DoH. golang程序。 - mosdns
接受本地dns的 udp,tcp,DoH,DoT,DoQ查询,转发到远程 udp,tcp,DoT,DoH,DoQ,DoH3查询。
每个forward dns有单独的 代理, sni 设置。
安装体积 16MB,支持 DoH. 好像还支持复杂的规则设置。 - chinadns-ng
安装体积 500KB,通常不单独使用。 - nextdns
支持 DoH 的客户端。golang程序。 - coredns
通过 plugin 支持 DoH, dnssec, ... 好像很复杂很强大。 - dnscrypt-proxy
接受本地普通dns查询,转发到远程 DNSCrypt, DoH查询。golang程序。 - dnsdist, powerDNS
似乎是个很强大的 dns server. - stubby
接受本地普通dns查询,转发到远程DoT查询。
选择
- https-dns-proxy, 体积小,功能简单,支持 DoH 查询。
每个DoH对应一个实例,监听一个本地udp端口(一个dns服务)。即一对一映射。
然后 dnsmasq 转发到多个实例的udp端口。 - smartdns, 体积也小,功能挺强,接受本地dns的 udp,tcp,DoH,DoT查询,转发到远程 udp,tcp,DoT,DoH,DoQ,DoH3查询。
可以同时添加多个不同协议的上游dns,本地只提供一个dns服务。域名解析只返回一个IP(最快的,ping值小)。
支持过滤规则,可以用来做广告过滤。目前不支持DNSSEC。内存占用不大。
每个上游dns都有单独的高级设置, 比如: 是否走代理, sni, tls校验名, 防火墙mark, TLS SPKI指纹。 - dnsproxy, 无广告过滤需求,接受本地dns的 UDP,TCP,DoH,DoT,DoQ,DNSCrypt 查询,转发到远程 UDP,TCP,DoH,DoT,DoQ 的 dns查询.
也支持域名解析只返回一个最快的IP。支持DNSSEC。上游dns没有高级设置。
需要手工命令行配置。内存占用不大。 - adguardhome,如果有过滤广告的需求,又需要 dnsproxy 的功能。
接受本地dns的 udp,tcp,DoT,DoH,DoQ,DNSCrypt查询,转发到远程 udp,tcp,DoT,DoH,DoQ查询。
也支持域名解析只返回一个最快的IP。支持DNSSEC。上游dns没有高级设置。
有自己的看板/配置面板。内存资源占用比较大。
其中接受 UDP,TCP,DoH,DoT,DoQ, 在 WEB UI中就能配置,DNSCrypt需要手工配置对应的配置文件。 - smartdns,dnsproxy,adguardhome 都可以建立支持多种协议的 dns查询服务。
区别, 是否支持dnssec,是否需要手工配置。 - 其他的没试。
- 选择困难。
豆包说,资源受限(内存<64MB)的小路由器选择 https-dns-proxy。其他选 smartdns。 - 仅有 DoH 需求,内存又小,就选 https-dns-proxy。
内存还行,选 smartdns。
内存资源够,又纠结 dnssec支持,就选 dnsproxy。
内存资源足够大(>512M),不想纠结,就选 adguardhome。
不纠结 dnssec支持,选 smartdns 也很不错。 - 安装占用,
https-dns-proxy虽然本体才90kB。
它依赖 libcares,libcurl4,libev,libnghttp2,libopenssl3, 依赖加起来也有 6.5MB了。一点也不小。
smartdns本体 553kB,依赖 5.7MB的 libopenssl。
两个软件包安装所需空间差不多。
dnsproxy 10MB。
adguardhome 30MB, 运行时还有数据库的占用。 - 运行占用,
运行 https-dns-proxy占内存少,一个实例约 2-4MB。
smartdns运行占用内存要大一些,需要 7-8MB(cache-size=512), 14MB(cache-size=1024)。
dnsproxy 占用7-10MB,
adguardhome 占用 >50MB, 甚至 >250MB。 - 我的路由器远大于 64MB内存,那就选择 smartdns。
配置
- 选择上面的四个中某一个,安装,配置。网上都能搜到教程。
然后,在 dnsmasq 中设置,转发到上面安装的 dns 服务端口。即可。 - 其中 smartdns 会有和 dnsmasq的联动设置。怕改乱dnsmasq的配置,可以不联动,自己手工设置 dnsmasq 的转发。
smartdns的默认本地端口是53, 比如改到5053, 否则会和 dnsmasq冲突。
配置smartdns
- 勾上smartdns的
自动设置Dnsmasq,将会改变 dnsmasq的设置。
看/etc/init.d/smartdns中set_forward_dnsmasq()函数。DNS 转发填入 smartdns的服务地址- 勾上
忽略解析文件 noresolv, 还会导致resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'配置丢失。 - 不勾
忽略空域名解析 domainneeded - 不勾
重绑定保护 rebind_protection
- 命令
nslookup -querytype=ptr smartdns如果有返回,说明工作正常。 - smartdns,高级设置,缓存大小: 要设置数值,比如 0 , 512 或 1024,否则不工作。
- dnsmasq的 DNSSEC要关掉,否则解析失败。因为 smartdns不支持 dnssec。
- 上游dns,加入114.114.114.114/udp,223.5.5.5/tcp。
- 不设置 dnsmasq 转发到 smartdns, 两个dns独立运行的很好。分别测试解析正常。
测试命令,dig baidu.com @127.0.0.1 -p 5053 - 设置 dnsmasq 转发到 smartdns, 解析就不正常了。奇怪。(2026-09测)
- 上游dns,加入 127.0.0.1/udp 和 ::1/udp ,并勾上
从默认组中排除 exclude_default_group。 - 再重启 smartdns,似乎正常了。(2026-09测)
- 上游dns,再加入几个 DoH, DoQ, DoT, 工作也正常。DoH,DoT可以写域名, DoQ只能写IP。(2026-09测)
- 上游dns,加入 127.0.0.1/udp 和 ::1/udp ,并勾上
- smartdns 的配置中有
resolv-file /tmp/resolv.conf.d/resolv.conf.auto
上游dns中,无需加入拨号获得 dns IP。
其他
- 【使用 curl 检查 DoH 可用性】
测试 DoH,curl 'https://doh.pub/dns-query?name=baidu.com&type=A'
curl -vH "accept: application/dns-json" "https://dns.alidns.com/resolve?name=baidu.com&type=A"
或curl --doh-url https://dns.alidns.com/dns-query https://baidu.com(要求curl版本>=7.62.0) - 测试工具,【q 一个小型命令行 DNS 客户端】,【natesales/q】,【dnspyre dns benchmark 工具】,【Tantalor93/dnspyre】,【ameshkov/dnslookup】,【ogham/dog】,
- op-25中有 "q" "dnslookup" 两个工具,安装大小 10MB, 8MB。语法类似"dig" "nslookup"。
- 免费公共 DNS 服务器大全
广告过滤列表
- 【广告过滤列表】,支持 dnsmasq, smartdns, adguardhome, Pi-Hole 等等。
- 【smartdns 广告屏蔽】
- 【217heidai/adblockfilters】
--end----
转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/22846771.html
来自 osnosn的博客 https://www.cnblogs.com/osnosn/ .

浙公网安备 33010602011771号