openwrt dns 处理流程求助

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

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

顺带还有一个问题,现在网页打开速度变快了(至少心理上是这样),但经常网页第一次打不开并显示是 dns 解析问题,刷新或者几秒钟后自己恢复,同时 adg 日志显示正常返回了解析结果。这是什么情况?
1561 次点击
所在节点    OpenWrt
10 条回复
fish3125
358 天前
因为默认端口是 53.
mohumohu
358 天前
openwrt 的插件和防火墙规则会互相影响,所见未必是所得,单独把 DNS 分离出来跑最好。
Bingchunmoli
358 天前
@mohumohu 正解,不过作为 dnsmasq 的上游服务器指的是 53 端口一般是 dnsmasq 转发到 ad 的。然后看你 passwall 怎么配置哪个端口也是从 dnsmasq 转发吗那有可能规则互相覆盖的问题
WizardLeo
358 天前
这不应该是"作为 dnsmasq 的下游服务器"嘛🤣?有点混乱,能不能请大佬稍微理一下整个逻辑,感谢!
WizardLeo
358 天前
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
358 天前
你要知道 openwrt 深度绑定 dnsmasq 所以 dnsmasq 基本上就是监听在 53 对外提供服务。然后一切的 dns 流量都是进到 dnsmasq 再分给其他 dns 上游应用。

uci show dhcp 看看自己的配置。防火墙配置也看看。openwrt web 上的一个按钮,背后不知道干了啥。我个人喜欢看配置,看脚本,web 的那句话真心不知道他背后干了啥。
Jacksu
356 天前
你的 adgh 设置了重定向选择为“作为 dnsmasq 的上游服务器”
那么解析流程就是客户端请求-路由器 dnsmasq ( 53 端口)收到请求发给 adgh ,然后 adgh 再向它的上游请求。
而 dnsmasq 请求的时候会收到 chinadns-ng 分流影响,导致部分请求并不会发给 adgh ,而是给到 chinadns-ng 配置的服务器处理了。
Jacksu
356 天前
正确的做法就是直接把 adgh 监听 53 ,也就是替代 dnsmasq 处理局域网,然后它的上游可以配置为 dnsmasq 的端口(享受 chinadns-ng 的分流处理)
但这样一来,你得处理下替代 dnsmasq 后导致的其他插件兼容问题。
WizardLeo
356 天前
@Jacksu 感谢大佬回复!这下听懂了,但多一个 dnsmasq 用来分流应该不会增加太多延迟吧?既然替换掉 dnsmasq 可能会出一系列插件兼容性问题,那就暂时先不换了。
ZOZOZO
350 天前
楼上都说的很清楚,整个流程就是:
访问设备发起 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