liandu2024:OpenClash 停掉后 dnsmasq 上游残留会让以 N1 做 DNS 的设备断网

在排查一台设备断网问题时表示,此前国外流量实际由 OpenClash 在 7892 端口代理,Open-Box 基本没参与;停掉 OpenClash 后若内核未重启会停在纯 tun 模式,而纯 tun 不接管终端的 DNS。他判断常见情况是 OpenClash 停止后仍把 dnsmasq 的上游留在自己的 DNS 端口,于是以 N1 做 DNS 的手机整体断网。他建议先彻底停用 OpenClash 并检查 dnsmasq 残留配置,再重启设备确认入口模式是否回到 auto_redirect。

作者原文

有进展。先说结论:之前你的国外流量其实是 OpenClash 在 7892 上代理的,Open-Box 被它截在前面基本没干活;现在 OpenClash 停了,Open-Box 接手,但你贴的入口仍是「纯 tun」——说明停掉 OpenClash 之后 Open-Box 内核没重启过,nftables 模式还没回来。纯 tun 不接管终端的 DNS,全靠 N1 的 dnsmasq;而 OpenClash 停掉后经常把 dnsmasq 的上游留在它自己的 DNS 端口上,于是用 N1 做 DNS 的手机整个断网,电脑自己填了公共 DNS 的话国内能上、国外没有域名分流就进不了代理。

按顺序做:

  1. 彻底停掉 OpenClash 并检查 dnsmasq 残留(贴文字):
    /etc/init.d/openclash stop; /etc/init.d/openclash disable uci -q get dhcp.@dnsmasq[0].server; uci -q get dhcp.@dnsmasq[0].noresolv; ls /tmp/dnsmasq.d/
    如果 server 里是 127.0.0.1#7874 这类 OpenClash 的端口:uci -q delete dhcp.@dnsmasq[0].server; uci commit dhcp; /etc/init.d/dnsmasq restart
  2. 重启 N1(最省事,顺便把 OpenClash 的残留规则清干净)。起来后看 Open-Box 内核卡片有没有「已改用纯 tun」的警告——正常应该没有;规则页测 test.ustc.edu.cn,右栏应该是「入口模式:auto_redirect」+「已旁路」。
  3. 到这一步再看手机 / 电脑。还有问题就贴:
    nft list tables; ip rule logread -e sing-box | tail -n 30
    以及 Open-Box DNS 页里「DNS 劫持」选的是哪种。