openwrt dns 处理流程求助

2023-07-11 17:37:56 +08:00
 WizardLeo
如题,op 目前 openwrt 的 dns 是 adg 负责国内,passwall 内启用 chinadns-ng ,远程 dns 用 cf 的 dns 。
adg 端口设置成 5553 ,重定向选择为“作为 dnsmasq 的上游服务器”。
目前使用情况一切正常

但是按理说 clinet 的 dns 请求应该先到 adg 处理,再到 dnsmasq 转发,最后到 passwall 分流。为什么 adg 内没有外网域名解析 dns 的记录?
挺好奇 dns 在这一整套流程中是如何处理的。

顺带还有一个问题,现在网页打开速度变快了(至少心理上是这样),但经常网页第一次打不开并显示是 dns 解析问题,刷新或者几秒钟后自己恢复,同时 adg 日志显示正常返回了解析结果。这是什么情况?
2016 次点击
所在节点    OpenWrt
10 条回复
fish3125
2023-07-11 17:53:34 +08:00
因为默认端口是 53.
mohumohu
2023-07-11 18:12:12 +08:00
openwrt 的插件和防火墙规则会互相影响,所见未必是所得,单独把 DNS 分离出来跑最好。
Bingchunmoli
2023-07-11 19:40:18 +08:00
@mohumohu 正解,不过作为 dnsmasq 的上游服务器指的是 53 端口一般是 dnsmasq 转发到 ad 的。然后看你 passwall 怎么配置哪个端口也是从 dnsmasq 转发吗那有可能规则互相覆盖的问题
WizardLeo
2023-07-11 20:55:09 +08:00
这不应该是"作为 dnsmasq 的下游服务器"嘛🤣?有点混乱,能不能请大佬稍微理一下整个逻辑,感谢!
WizardLeo
2023-07-11 20:57:02 +08:00
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
这两条我没注释掉,不过我觉得 adg 的 5553 端口应该和这里的 53 端口关系不太大?请大佬细嗦
neroxps
2023-07-11 22:53:04 +08:00
你要知道 openwrt 深度绑定 dnsmasq 所以 dnsmasq 基本上就是监听在 53 对外提供服务。然后一切的 dns 流量都是进到 dnsmasq 再分给其他 dns 上游应用。

uci show dhcp 看看自己的配置。防火墙配置也看看。openwrt web 上的一个按钮,背后不知道干了啥。我个人喜欢看配置,看脚本,web 的那句话真心不知道他背后干了啥。
Jacksu
2023-07-13 11:01:15 +08:00
你的 adgh 设置了重定向选择为“作为 dnsmasq 的上游服务器”
那么解析流程就是客户端请求-路由器 dnsmasq ( 53 端口)收到请求发给 adgh ,然后 adgh 再向它的上游请求。
而 dnsmasq 请求的时候会收到 chinadns-ng 分流影响,导致部分请求并不会发给 adgh ,而是给到 chinadns-ng 配置的服务器处理了。
Jacksu
2023-07-13 11:04:11 +08:00
正确的做法就是直接把 adgh 监听 53 ,也就是替代 dnsmasq 处理局域网,然后它的上游可以配置为 dnsmasq 的端口(享受 chinadns-ng 的分流处理)
但这样一来,你得处理下替代 dnsmasq 后导致的其他插件兼容问题。
WizardLeo
2023-07-13 14:03:45 +08:00
@Jacksu 感谢大佬回复!这下听懂了,但多一个 dnsmasq 用来分流应该不会增加太多延迟吧?既然替换掉 dnsmasq 可能会出一系列插件兼容性问题,那就暂时先不换了。
ZOZOZO
2023-07-19 11:31:48 +08:00
楼上都说的很清楚,整个流程就是:
访问设备发起 DNS UDP 请求( 53 端口)——( 53 端口被 dnsmasq 在系统默认层面截胡) dnsmasq 准备解析——(你设置了转发到 ADG )——ADG 查询 DNS——返回 IP 到访问设备。
建议:系统默认 dns 服务器不要替换别的,不然你就别 freedom 外出了。相关插件基本都依赖 dnsmasq 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/955915

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX