PassWall2 国内域名解析失败怎么办?按范围定位 DNS 与分流问题
简答:PassWall2 国内域名解析失败时,先不要直接更换 DNS:先用 nslookup 对比 127.0.0.1、路由器 LAN 地址和实际 WAN 上游 DNS,判断是本机解析、局域网 DNS、单个域名,还是 PassWall2 分流链路异常。确认范围后,再检查 dnsmasq 监听、国内直连 DNS、远程 DNS、FakeDNS、CN 规则、IPv6 和终端自定义 DNS。不同 OpenWrt、PassWall2 和内核版本的菜单名称可能不同,以下以当前界面和项目文档为准。
定义:PassWall2 国内域名解析失败,是指域名对应的 DNS 查询没有返回结果、超时或返回异常地址,但不一定代表节点或代理连接本身失败。
先试这一步:用三组 nslookup 判断故障范围
先通过 SSH 登录 OpenWrt 路由器,或在局域网电脑上执行对照查询。把示例中的 192.168.1.1 替换成你的路由器 LAN 地址,把 223.5.5.5 替换成你已经确认可访问的上游 DNS;不要把示例地址当成固定配置。
nslookup baidu.com 127.0.0.1nslookup baidu.com 192.168.1.1nslookup baidu.com 223.5.5.5
判断时重点看“哪一个查询失败”:只有 127.0.0.1 失败,通常应优先检查路由器本机 resolver、localhost 代理或 PassWall2 对 OUTPUT DNS 的处理;路由器 LAN 地址也失败,则要检查 dnsmasq、上游 DNS 或防火墙;三组都失败,可能是 WAN、上游网络或域名本身暂时不可用。OpenWrt 的本地系统解析默认可能通过 dnsmasq,DNS 服务通常涉及 UDP/TCP 53 端口,具体取决于系统配置。可参考 OpenWrt DHCP 与 DNS 配置说明。
如果路由器本机查询失败,但局域网设备指定路由器 LAN 地址能够解析,不要马上判断为“全网 DNS 坏了”。PassWall2 项目中的公开 Issue 曾记录过类似的范围差异,但该 Issue 只代表特定版本、固件和配置下的复现,不能直接推断为所有安装都会发生。可对照 PassWall2 关于 127.0.0.1:53 的公开 Issue。
按现象分流:国内域名、全部域名还是只有一台设备失败
| 现象 | 优先检查 | 不要先做的事 |
|---|---|---|
| 只有一个国内域名失败 | 域名本身、缓存、规则命中和该域名返回的 IPv4/IPv6 记录 | 不要立即改全局 DNS 或开启更复杂的 FakeDNS |
| 多数国内域名失败,其他域名正常 | 国内直连 DNS、CN/geosite/geoip 规则和分流顺序 | 不要只测试代理节点延迟 |
| 所有域名失败,但直接指定上游 DNS 正常 | dnsmasq 监听端口、PassWall2 DNS 转发链路和端口冲突 | 不要同时启动多个 DNS 接管组件 |
| 只有路由器本机失败,局域网设备正常 | 127.0.0.1:53、localhost 代理、OUTPUT 规则和本机 resolv.conf | 不要把局域网客户端的结果当成本机结果 |
| 只有一部手机或一台电脑失败 | 手动 DNS、浏览器安全 DNS、IPv6 或私人 DNS | 不要先改路由器全部规则 |
浏览器的安全 DNS、手机私人 DNS、终端手动 DNS 都可能绕过路由器预期的解析路径。OpenWrt 关于 DoH 的文档也提醒,终端自定义 DNS 与路由器上的 DNS 代理组合不当时,可能造成无法连接或解析路径不一致,可参考 OpenWrt 的 DoH 与 dnsmasq 说明。
第二步:确认 DNS 服务是否真的监听在预期端口
在路由器 SSH 中执行以下命令之一,具体命令取决于固件是否提供对应工具:
ss -lntup | grep -E '(:53|dnsmasq|passwall)'netstat -lntup | grep -E '(:53|dnsmasq|passwall)'
你需要记录三项信息:谁监听 53 端口、监听的是 127.0.0.1 还是 LAN 地址、是否还有其他本地 DNS 端口被 PassWall2 或内核占用。不要只看端口号就下结论,因为 PassWall2 的 DNS 链路可能通过额外的本地端口转发,最终仍由 dnsmasq 或其他进程对外提供服务。PassWall2 项目仓库公开配置中包含直连 DNS、远程 DNS、查询策略和本地代理等选项,但不同版本的字段和界面可能变化,建议以当前配置文件及 LuCI 页面为准,参阅 PassWall2 当前默认配置文件。
如果发现两个组件同时争用 53 端口,先备份配置,再暂时停用不需要的 DNS 接管组件,保存并应用后重新测试。不要直接删除配置文件;如果结果更差,恢复刚才的原设置并重新加载相关服务。
第三步:检查 PassWall2 的国内直连 DNS 与分流规则
进入 PassWall2 的 DNS、分流或相关设置页面,先记录当前值,再按“最小配置”排查:
- 确认默认节点和分流模式已经保存,避免页面改动没有实际应用。
- 确认国内域名使用的直连或本地解析路径可达;如果界面有“自动”选项,记录它实际选择的地址,不要假设自动模式一定合适。
- 检查 CN、geosite、geoip 或自定义域名规则是否存在重复、空规则、错误语法或顺序覆盖。
- 暂时关闭刚启用的 FakeDNS、复杂自定义 DNS 转发或额外的 DNS 过滤组件,只保留基础解析链路进行对照。
- 保存并应用后,分别测试一个国内域名和一个你平时需要通过代理访问的域名。
PassWall2 的项目配置显示,直连 DNS 协议、远程 DNS、查询策略和基于域名/IP 的分流是相互关联的设置;因此“国内域名解析失败”不一定是上游 DNS 不可用,也可能是规则把查询送到了不适用的路径。项目仓库同时说明其功能和依赖会随构建及所选核心变化,不能把某个版本的菜单名称当成所有版本都相同。
如果关闭 FakeDNS 后国内域名恢复,而开启后再次失败,先保留这一复现结果,不要把它写成普遍故障。记录 PassWall2 版本、OpenWrt/ImmortalWrt 版本、所用核心、是否旁路由、IPv4/IPv6 状态和相关日志,再到项目仓库核对是否存在对应版本的 Issue。
第四步:用日志区分 DNS 超时、规则错误和核心未启动
先执行:
logread | grep -iE 'passwall|dns|dnsmasq|xray|sing-box|fake'
如果 PassWall2 页面提供调试日志开关,可先在页面内开启,再复现一次问题,随后关闭调试日志,避免长期产生大量日志。PassWall2 仓库的排障说明建议通过 logread 检查服务启动问题,并提到其日志文件位置可能包括 /tmp/log/passwall2.log 和核心对应日志;实际路径取决于安装包和当前版本,可先用 ls /tmp/log/ 核对。
- 出现核心启动失败、配置解析失败:先检查节点、核心文件、权限和配置格式。
- 出现 DNS upstream timeout 或连接失败:检查 WAN、上游 DNS、直连/远程 DNS 协议和防火墙。
- 出现 fake IP、缓存记录或规则匹配相关错误:先回退到基础解析配置,再逐项恢复 FakeDNS 和规则。
- 没有明显日志但只有本机失败:重点对比 127.0.0.1、LAN 地址和上游地址的查询结果,不要仅凭网页打不开判断原因。
第五步:排查 IPv6、旁路由和终端自定义 DNS
如果 IPv4 查询成功但网页仍打不开,继续做以下对照:
- 用
nslookup -type=A example.com与nslookup -type=AAAA example.com分别查看 IPv4 和 IPv6 记录。 - 确认终端的默认网关是否确实指向运行 PassWall2 的设备;旁路由模式下,客户端可能仍使用主路由作为网关或 DNS。
- 在电脑网络设置、浏览器安全 DNS、手机私人 DNS 中检查是否手动指定了其他解析服务。
- 如果只有支持 IPv6 的设备异常,暂时记录 IPv6 开启状态并做 IPv4-only 对照,不要直接永久关闭 IPv6。
判断标准是:同一域名、同一设备、同一时间分别测试路由器 LAN DNS、实际上游 DNS 和终端当前 DNS。只有在对照结果稳定复现后,才修改对应层级。
安全回退:恢复基础 DNS 配置后再逐项启用功能
当你无法确定是哪一项设置造成失败时,按以下顺序回退:
- 导出或截图 PassWall2、DHCP/DNS 和网络接口配置,记录原有 DNS 地址、端口和 IPv6 状态。
- 暂时停用最近新增的 FakeDNS、自定义 DNS 转发、额外 DNS 过滤和第二个透明代理组件。
- 保留一个可验证的本地 DNS 服务和一条明确的上游 DNS 路径。
- 保存并应用,重新执行三组
nslookup。 - 确认基础解析恢复后,一次只启用一个功能,每次启用后都复测国内域名、代理域名和局域网设备。
如果基础配置仍无法解析,问题可能不在 PassWall2,而在 WAN、上游 DNS、dnsmasq、接口地址或固件本身。此时先用直接指定上游 DNS 的结果判断网络是否可达,再检查系统日志和端口监听,不要反复更换规则集。
常见问题
PassWall2 开启后只有路由器本机解析失败,局域网设备正常,怎么办?
先分别执行 nslookup 域名 127.0.0.1、路由器 LAN 地址和实际上游 DNS。如果只有 127.0.0.1 失败,重点检查本机 resolv.conf、localhost 代理、OUTPUT DNS 处理和 PassWall2 的 FakeDNS/本机代理设置;这不等于 dnsmasq 对局域网客户端也已经失效。
国内域名失败但国外域名正常,是不是一定要更换 DNS?
不一定。也可能是国内直连 DNS 路径、CN/geosite/geoip 规则、规则顺序、FakeDNS 或 IPv6 返回结果造成。先用同一域名对比不同 DNS 地址,再检查规则命中和日志,确认故障层级后再调整。
PassWall2 的 FakeDNS 要不要关闭?
不能一概而论。FakeDNS 与域名分流、缓存和核心配置相关,关闭后可能改变代理域名的解析方式。更稳妥的做法是先备份配置,临时关闭进行对照测试;如果国内域名恢复,再记录版本、核心和日志,逐项恢复。
旁路由模式下为什么路由器能解析,手机却打不开国内网站?
手机可能没有把旁路由设为默认网关或 DNS,也可能启用了私人 DNS、浏览器安全 DNS或 IPv6。请在手机网络详情中核对网关和 DNS,并用其他设备指定旁路由 LAN 地址进行对照。
可以直接重启 dnsmasq 或 PassWall2 解决吗?
重启可能暂时清除进程状态或缓存,但不能证明根因已经解决。建议先备份配置、记录端口和日志,再通过 LuCI 保存应用;若必须 SSH 操作,重启后要重新执行相同的 nslookup 和端口监听测试。
相关阅读
- PassWall2 DNS 设置怎么选
- PassWall2 国内不走代理的分流排查
- PassWall2 Fake-IP 与 FakeDNS 回退方法
- PassWall2 分流规则顺序与语法排查
- DNS 污染与解析异常的分层测试
参考资料
- PassWall2 项目仓库与排障说明
- PassWall2 当前默认配置文件
- PassWall2 127.0.0.1:53 本机解析异常公开 Issue
- OpenWrt DHCP 与 DNS 配置文档(openwrt.org)
- OpenWrt DoH、dnsmasq 与终端 DNS 说明(openwrt.org)