高墙之外❤️

PassWall2 国内域名解析失败怎么办?按范围定位 DNS 与分流问题

更新于 2026-11-09 · passwall.lol

简答: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;不要把示例地址当成固定配置。

  1. nslookup baidu.com 127.0.0.1
  2. nslookup baidu.com 192.168.1.1
  3. nslookup 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、分流或相关设置页面,先记录当前值,再按“最小配置”排查:

  1. 确认默认节点和分流模式已经保存,避免页面改动没有实际应用。
  2. 确认国内域名使用的直连或本地解析路径可达;如果界面有“自动”选项,记录它实际选择的地址,不要假设自动模式一定合适。
  3. 检查 CN、geosite、geoip 或自定义域名规则是否存在重复、空规则、错误语法或顺序覆盖。
  4. 暂时关闭刚启用的 FakeDNS、复杂自定义 DNS 转发或额外的 DNS 过滤组件,只保留基础解析链路进行对照。
  5. 保存并应用后,分别测试一个国内域名和一个你平时需要通过代理访问的域名。

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 配置后再逐项启用功能

当你无法确定是哪一项设置造成失败时,按以下顺序回退:

  1. 导出或截图 PassWall2、DHCP/DNS 和网络接口配置,记录原有 DNS 地址、端口和 IPv6 状态。
  2. 暂时停用最近新增的 FakeDNS、自定义 DNS 转发、额外 DNS 过滤和第二个透明代理组件。
  3. 保留一个可验证的本地 DNS 服务和一条明确的上游 DNS 路径。
  4. 保存并应用,重新执行三组 nslookup。
  5. 确认基础解析恢复后,一次只启用一个功能,每次启用后都复测国内域名、代理域名和局域网设备。

如果基础配置仍无法解析,问题可能不在 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 和端口监听测试。

相关阅读

参考资料

  1. PassWall2 项目仓库与排障说明
  2. PassWall2 当前默认配置文件
  3. PassWall2 127.0.0.1:53 本机解析异常公开 Issue
  4. OpenWrt DHCP 与 DNS 配置文档(openwrt.org)
  5. OpenWrt DoH、dnsmasq 与终端 DNS 说明(openwrt.org)