osnosn

  博客园 :: 首页 :: :: 联系 :: 订阅 :: 管理 ::

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测)
  • smartdns 的配置中有resolv-file /tmp/resolv.conf.d/resolv.conf.auto
    上游dns中,无需加入拨号获得 dns IP。

其他

广告过滤列表

--end----


转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/22846771.html
来自 osnosn的博客 https://www.cnblogs.com/osnosn/ .


posted on 2026-09-04 20:31  osnosn  阅读(74)  评论(0)    收藏  举报