找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 18004|回复: 47

对Adguardhome的重定向配置研究的一些心得

  [复制链接]
发表于 2023-3-26 09:31 | 显示全部楼层 |阅读模式
本帖最后由 auflute 于 2023-3-26 18:15 编辑

对AdGuardhome的配置项研究的一些心得,也借助了chatgpt的帮忙。希望懂的朋友,不吝赐教指正。


  • 作为dnsmasq的上游服务器,指的是将dnsmasq作为本地DNS服务器,将请求转发到adguardhome进行解析。
  • 使用53端口替换dnsmasq,指的是使用adguardhome代替dnsmasq,监听53端口,作为本地DNS服务器。
  • 重定向53端口到adguardhome,指的是将本地DNS服务器的53端口请求重定向到adguardhome上进行处理。

以通俗的方式来理解,假设你想去一家餐厅吃饭,你有三种方式可以找到餐厅的地址:
  • 作为dnsmasq的上游服务器:这就像你先打电话给一个朋友,问他餐厅的地址,然后他再打电话给餐厅,问他们的地址,然后再告诉你。这样你就得到了餐厅的地址,但是多花了一些时间和电话费。
  • 使用53端口替换dnsmasq:这就像你直接打电话给餐厅,问他们的地址,然后他们就告诉你。这样你就得到了餐厅的地址,而且很快很省钱。
  • 重定向53端口到adguardhome:这就像你打电话给一个号码,但是这个号码被自动转接到餐厅,然后他们就告诉你他们的地址。这样你也得到了餐厅的地址,但是可能不知道你实际上是和餐厅通话。
在这个比喻中,你就是客户端,朋友就是dnsmasq,餐厅就是adguardhome,电话号码就是端口。

  • 作为dnsmasq的上游服务器:这种方式是在dnsmasq的配置文件中指定adguardhome的地址和端口作为上游DNS服务器,这样dnsmasq会将所有DNS查询转发给adguardhome处理,然后返回结果给客户端。这种方式的优点是简单易用,不需要修改其他设置,缺点是可能会有一些性能损失,因为多了一层转发。
  • 使用53端口替换dnsmasq:这种方式是在adguardhome的配置文件中指定使用53端口(默认的DNS端口),然后停止或卸载dnsmasq服务,这样adguardhome会直接接收所有DNS查询,并返回结果给客户端。这种方式的优点是性能最高,因为没有多余的转发,缺点是需要修改系统设置,可能会影响其他服务或应用。
  • 重定向53端口到adguardhome:这种方式是在系统防火墙或路由器上设置一个规则,将所有53端口的流量重定向到adguardhome的地址和端口,这样adguardhome会接收所有DNS查询,并返回结果给客户端。这种方式的优点是不需要修改dnsmasq或adguardhome的配置文件,也不需要停止或卸载dnsmasq服务,缺点是需要修改防火墙或路由器的设置,可能会影响其他服务或应用。



“重定向53端口到adguardhome” 和 “作为dnsmasq的上游服务器”比较:
后者不用经过dnsmasq,DNS请求直接到达OpenWrt的firewall,然后被重定向到AdGuard Home进行处理,这就少了一层转发。


在openwrt的DHCP/DNS设置中将dns转发设置为AdGuardhome的监听端口,和AdGuardhome设置中的“作为dnsmasq的上游服务器”的比较:

这两种方式的作用是差不多的,都是让openwrt将所有DNS查询转发给adguardhome处理,然后返回结果给客户端。两者的区别主要在于配置的位置和方式不同。


如果AdGuardhome配置中开启了“重定向53端口到adguardhome”,又在openwrt的DHCP/DNS设置中将dns转发设置为adguardhome的监听端口,最后的效果怎样?
根据默认的优先级顺序,OpenWrt的DNS转发设置会优先生效,因为OpenWrt的dnsmasq是在AdGuard Home之前响应DNS请求的。
因此,DNS请求将先被OpenWrt的dnsmasq转发到AdGuard Home进行处理,然后再被重定向到AdGuard Home的5353端口进行处理。这将导致DNS请求被处理两次,可能会降低DNS解析的效率。


为什么aAdGuardhome配置中开启了“重定向53端口到adguardhome”,AdGuardhome无法获取客户端的真实IP,而只能显示为localhost?
  1. #iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
  2. #iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
  3. #[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
  4. #[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
复制代码
这几行iptables规则会将所有进入路由器的UDP/TCP 53端口流量重定向到本地(localhost)的53端口。由于重定向是在本地进行的,所以AdGuardhome收到的所有流量的源IP地址都将被重定向为localhost,导致Adguardhome客户端IP均显示为localhost 127.0.0.1。将这些防火墙规则加“#”注释或直接删除,再重启防火墙即可。



当在AdGuardHome中选择并应用“使用53端口替换dnsmasq”时,AdGuardHome会自动对OpenWrt进行以下配置:
  • 将adguardhome的端口设置为53
  • 将dnsmasq的端口设置为其他值(如5353)
这样,adguardhome就可以作为最底层的DNS服务器,而不是dnsmasq的上游服务器,从而可以显示客户端的真实IP地址,并进行精确控制。


当在AdGuardHome中选择并应用“重定向53端口到adguardhome”时,AdGuardHome会自动对OpenWrt进行以下配置:

  • 遍历每个IP地址,并使用iptables命令将端口53上的任何传入的TCP或UDP流量重定向到AdguardHome的监听端口。


当在AdGuardHome中开启了“作为dnsmasq的上游服务器”时,AdGuardHome会自动对OpenWrt进行以下配置:
  • 在OpenWrt的dnsmasq配置文件/etc/dnsmasq.conf中添加以下内容
  1. server=127.0.0.1#5353
复制代码
这个配置指示dnsmasq将DNS请求转发到AdGuard Home监听的5353端口。同时删除 resolvfile 配置项,并将 noresolv 配置项设置为 1,以避免使用其他 DNS 服务器。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

何必呢?少说几句吧,网络这么大,聚到一起也不容易!: 5.0
何必呢?少说几句吧,网络这么大,聚到一起也不容易!: 5
  发表于 2023-11-29 18:39
何必呢?少说几句吧,网络这么大,聚到一起也不容易!: 5
牛逼,涨知识了。一直在纠结那种模式稳定  发表于 2023-4-24 15:21

评分

参与人数 4恩山币 +5 收起 理由
开始懂了~ + 2 深入浅出,浅显易懂。
丶曲終人散ゞ + 1 你好,久仰卧龙大名,在下凤雏!.
caliber + 1 写的不错
loveyjc236 + 1 感谢你的分享,无论怎样,你都是最无私的人.

查看全部评分

相关帖子

发表于 2023-3-26 09:40 | 显示全部楼层
楼主厉害!点赞!
回复 支持 反对

使用道具 举报

发表于 2023-3-26 09:51 | 显示全部楼层
那到底用哪个比较好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-26 10:44 | 显示全部楼层
我个人用“重定向53端口到adguardhome”,相比“作为dnsmasq的上游服务器”,性能要好

“重定向53端口到adguardhome”,这种方式性能最高,因为拿adguard替换了默认dnsmasq,据网上说会导致openwrt的默认服务出现一些不可知的问题,个人没有试过
回复 支持 反对

使用道具 举报

发表于 2023-3-27 12:37 | 显示全部楼层
思考了!
回复 支持 反对

使用道具 举报

发表于 2023-3-28 00:06 | 显示全部楼层
adguardhome根本就不起作用,不管怎么设置,仪表上显示拦截了,实际上广告还是显示出来了。

点评

那是 需要自己 优化过滤规则。  详情 回复 发表于 2023-3-28 16:36
回复 支持 反对

使用道具 举报

发表于 2023-3-28 04:46 来自手机 | 显示全部楼层
我的也是这样,拦截了一段时间,广告又出来了

点评

你在 拦截,发放广告的也要 进行反拦截啊 ,,所以就失效了。  详情 回复 发表于 2023-3-28 16:37
回复 支持 反对

使用道具 举报

发表于 2023-3-28 04:46 来自手机 | 显示全部楼层
所以卸载了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-28 07:03 | 显示全部楼层
主要是拿来做dns解析加速,不是为了去广告
回复 支持 反对

使用道具 举报

发表于 2023-3-28 16:36 | 显示全部楼层
jade1152 发表于 2023-3-28 00:06
adguardhome根本就不起作用,不管怎么设置,仪表上显示拦截了,实际上广告还是显示出来了。

那是 需要自己 优化过滤规则。
回复 支持 反对

使用道具 举报

发表于 2023-3-28 16:37 | 显示全部楼层
hwlon 发表于 2023-3-28 04:46
我的也是这样,拦截了一段时间,广告又出来了

你在 拦截,发放广告的也要 进行反拦截啊 ,,所以就失效了。
回复 支持 反对

使用道具 举报

发表于 2023-3-28 16:42 | 显示全部楼层
我使用openwrt 原版22.03.3,使用53端口替换dnsmasq: 这个规则不生效, 只有第一个和 第三个 有效果。。。 另外 这个 版本 ,防火墙是 没有自定义规则的,在想到底要不要把防火墙换回老版本。

点评

你可以手动配置,将adguardhome的端口设置为53,将dnsmasq的端口设置为其他值(如5353)  发表于 2023-5-15 06:27
回复 支持 反对

使用道具 举报

发表于 2023-5-10 18:40 来自手机 | 显示全部楼层
很不错的分享,请教大侠,我用Adguard home开启后,三种配置都对dnsmasq做了参数更改。如果我关闭adguard,这些参数如何恢复原值?谢谢了。
回复 支持 反对

使用道具 举报

发表于 2023-5-10 18:43 来自手机 | 显示全部楼层
很不错的分享,请教大侠,我用Adguard home开启后,三种配置都对dnsmasq做了参数更改。如果我关闭adguard,这些参数如何恢复原值?谢谢了。

点评

把adguard的重定向设为无,然后保存并应用  发表于 2023-5-15 06:25
回复 支持 反对

使用道具 举报

发表于 2023-5-11 12:51 | 显示全部楼层
谢谢分享,思考思考
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-6-11 08:12

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表