查看 2026-05-29 20 分钟 进阶 5 步

PassWall 安装与首次配置教程(OpenWrt 2026)

PassWall 和 OpenClash 在 OpenWrt 上承担同样的「全屋代理」角色,但 PassWall 不需要写 YAML、不需要理解 Clash 规则语法,对协议节点支持更原生。本文给出 Luci 插件安装、节点导入、订阅管理、DNS 分流和首次启动的完整步骤,附停止后的回滚方法。

工位角落里那台刷了 OpenWrt 的软路由已经亮了两个月的绿灯,但你一直没用它——因为配置插件的过程卡住了。OpenClash 装上了发现订阅导入后 YAML 报错,想换 PassWall 又不知道怎么开始。

PassWall 和 OpenClash 是目前 OpenWrt 上装机量最高的两个代理插件,但它们的思路完全不同:OpenClash 用 Clash 内核,靠 YAML 配置和规则集驱动;PassWall 直接调用 Xray / Sing-box 内核,不吃 YAML,节点进来就能拨号。如果你的节点主要在 SS / V2Ray / Trojan 这三类协议,PassWall 的上手时间比 OpenClash 短一半以上。

PassWall 和 OpenClash 到底怎么选?

不是说哪个更好,而是你手上的节点类型和维护习惯决定了该装哪个。

对比维度PassWall / PassWall2OpenClash
内核Xray-core / Sing-box(直接调用)Mihomo / Clash(YAML 驱动)
节点支持SS, SSR, VMess, VLESS, Trojan, Hysteria2, TUIC, SOCKS, HTTP以 Clash YAML 格式为准,部分协议需转换
配置文件没有配置文件,所有设置都在 Luci 页面完成依赖 YAML 配置文件,语法错误直接启动失败
规则分流geoip / geosite + 手动规则表,层级更平规则集 provider,代理组 + 策略链,层级更深
DNS 分流dnsmasq / chinadns-ng / smartdns 三选一自身 DNS 模块,与 dnsmasq 需要额外处理冲突
启动速度3-5 秒10-20 秒(解析 YAML + 下载规则集)
适合谁只有 SS/V2Ray/Trojan 节点,不想写配置文件已有 Clash 订阅,习惯规则组和策略链的管理方式

一个简单的经验判断:如果你手上的订阅链接已经在桌面端的 V2RayN / Shadowrocket / Quantumult X 里直接用,PassWall 上去大概率也是一样导入即用。如果你的订阅是专门为 Clash 定制的(带 rule-providers、proxy-groups 等字段),OpenClash 更合适——因为 PassWall 读不懂 Clash 专属的 YAML 语法。

搜索不到 passwall 包,是软件源没加对还是根本没这个包?

很多用户在 Luci 软件包的搜索框输入 “passwall” 结果为空,立刻怀疑固件有问题。其实大多数 OpenWrt 官方固件和社区固件的默认软件源不含 PassWall,需要额外加第三方的 passwall feed。

两种安装路径:

路径一:已有 passwall 软件源(iStoreOS、部分定制固件)

Luci → 系统 → 软件包 → 点「更新列表」→ 搜索 passwall → 出现 luci-app-passwallluci-app-passwall2 → 点安装。全程 2 分钟。

路径二:手动下载 ipk 上传(任何固件)

需要三步。第一步,SSH 进路由器确认架构:

uname -m

输出 aarch64 对应 ARMv8 设备(NanoPi R4S/R5S、友善 R2S 等),x86_64 对应软路由,mips 对应老款 MT7621 路由。第二步,打开 PassWall GitHub ReleasesPassWall2 Releases 页面,下载文件名包含你架构的 ipk 包。

注意:文件名里的 all 表示 ipk 本身不限制架构,但 PassWall 运行时需要下载对应架构的 Xray/Sing-box 二进制内核。所以架构仍然关键——如果你的路由器是 armv8 但装的是 x86 的包,内核会下载失败,插件启动报 “exec format error”。

第三步,Luci → 系统 → 软件包 → 上传软件包 → 选 ipk 文件 → 安装。如果中途报依赖缺失,SSH 补装:

opkg update
opkg install curl unzip jsonfilter tcping iptables-mod-tproxy

装完后 Luci 左侧菜单出现「服务 → PassWall」(或 PassWall2)。如果你固件是 OpenWrt 22.03 及以上版本,推荐直接装 PassWall2——它默认适配 fw4(nftables)防火墙,不用再手动切换 iptables 模式。

四个协议填法里最容易踩的坑

PassWall 节点列表里的配置分协议标签页:Shadowsocks、V2Ray、Xray、Trojan 四组。每组的必填字段不同,填错看起来能保存,但连接一定不通。

协议最容易漏的字段后果
Shadowsocks(ss)加密方式必须和服务器端一致(aes-256-gcm / chacha20-ietf-poly1305)TCP 测试显示 timeout,手写加密名和节点信息里不一致
VMessalterId 在新版协议(AEAD)下必须写 02022 年后的 VMess AEAD 不再兼容非零 alterId,提示 “failed to read header”
VLESSFlow(流控)和 TLS 必须同时设对(如 xtls-rprx-vision + reality)不设 TLS 直接填 VLESS,连接会握手超时
Trojan密码字段是 Trojan 的 password,不是面板登录密码很多人把机场面板的密码当成 Trojan 密码抄进去
Hysteria2需要手动填 obfs(混淆密码),且端口是 UDP 不是 TCP没配 UDP 代理的话 Hysteria2 节点能通但测速走不上去

节点添加完成后,先别急着点「保存并应用」切回主页面。先点节点右侧的「检查」按钮——PassWall 会用 tcping(TCP)或 udpping(UDP)测试节点可达性。显示延迟数字(如 180ms)说明 TCP 握手通了;显示「timeout」就回配置页复查端口和地址。

DNS 分流为什么没生效?国内网站怎么也跟着走远程解析了?

这是 PassWall 新手期最高频的「能用但不好用」类型问题。代理本身通了,但打开 bilibili 比不挂代理还慢。

排查路径从短到长:

第一查:国内 DNS 是否真的指向了本地 DNS 服务器。 Luci → 服务 → PassWall → 基本设置 → DNS 选项卡。确认「国内 DNS(直连)」填的不是 8.8.8.8 或 1.1.1.1——这两个是远程 DNS,填在这格会让所有域名都走海外解析。改成 223.5.5.5(阿里)或运营商本地的 DNS。

第二查:DNS 过滤模式。 同一页面,「过滤模式」下拉框默认可能是「通过 UDP 请求 DNS」。部分宽带运营商会劫持 UDP 53 端口,导致你用 223.5.5.5 但实际解析请求被转发到了运营商的 DNS——而运营商 DNS 对境外域名会返回空结果或污染 IP。切到「通过 TCP 请求 DNS」绕过 UDP 劫持。

第三查:DNS 分流后端是否在工作。 如果选的是 chinadns-ng,SSH 确认它正在监听:

netstat -tlnp | grep chinadns

没有任何输出说明 chinadns-ng 没启动。通常是 /etc/chinadns_chnroute.txt 文件缺失——PassWall 安装时不强制下载此文件。手动拉一份:

wget -O /etc/chinadns_chnroute.txt https://raw.githubusercontent.com/17mon/china_ip_list/master/china_ip_list.txt
/etc/init.d/passwall restart

DNS 分流正确的标志是:SSH 里 nslookup www.baidu.com 返回的是 223.5.5.5 的解析结果,nslookup www.google.com 返回的是 1.1.1.1 的解析结果——两个域名走了两套 DNS,才说明分流生效。

端口冲突、China List 不更新、节点测试全红——这三个坑怎么排?

这三个问题占了 PassWall 相关反馈的一半以上,但排查顺序如果反了会浪费一整个下午。

端口冲突(53 / 1080)

PassWall 的透明代理模式会尝试绑 53 端口做 DNS 劫持,而 OpenWrt 默认的 dnsmasq 也在 53。两个进程抢同一个端口,dnsmasq 先占的话 PassWall 透明代理里 DNS 部分直接失效。

先确认当前 53 端口占用:

netstat -tlnp | grep :53

如果输出里看到 dnsmasq 占了 0.0.0.0:53,改 dnsmasq 监听端口为 5353:

uci set dhcp.@dnsmasq[0].port='5353'
uci commit dhcp
/etc/init.d/dnsmasq restart

这比直接删 dnsmasq 安全——DHCP 功能不受影响。重启后 PassWall 就能独占 53 端口了。

China List 不更新

PassWall 依赖 china-ipgeosite 两个数据文件来判断哪些 IP/域名应该直连。如果这些文件是几个月前的版本,新增的 CDN IP 段可能被误判为境外 IP 走了代理,拖慢国内访问。

Luci → 服务 → PassWall → 高级设置 → 找到「更新 geoip」和「更新 geosite」按钮,各点一次。或者 SSH 里跑:

/etc/init.d/passwall update_geoip
/etc/init.d/passwall update_geosite

更新完重启 PassWall。建议每两个月手动更一次,PassWall 没有内置定时更新 geo 数据的功能。

节点测试全红

所有节点都显示 timeout 或「未运行」,先别怀疑节点本身。大概率是路由器 DNS 还没通的连环效应——节点地址是域名形式(如 hk1.node.com),路由器自己解析不了这个域名,自然连不上节点。

快速验证:SSH 进路由器跑 nslookup hk1.node.com(替换为你的真实节点域名)。如果解析失败,说明路由器 DNS 没配置好。临时解决是给节点填 IP 而不是域名,但根本解决是确保路由器本身的 DNS 能正常工作——可以在网络 → DHCP/DNS 里把上游 DNS 设成 223.5.5.5。

如果你的订阅链接返回的节点格式本身没问题,选一条 兼容 Clash / Singbox / V2Ray 的订阅 可以减少很多格式转换的麻烦——PassWall 直接解析标准 SS/V2Ray/Trojan 链接格式,不需要中间转换层。

维护 PassWall 的三个日常动作

PassWall 不像桌面客户端有自动更新和推送通知,需要周期性手检三件事:

  • 每月看一次日志。Luci → 服务 → PassWall → 状态 → 日志。关注 “connection refused”(节点失效)、“TLS handshake failed”(证书或时间同步问题)、“dns query timeout”(远程 DNS 不可达)。后两条通常路由器时间对不齐——date 命令看看系统时间是否正确,不对就 ntpd -p pool.ntp.org 同步一次。
  • 订阅更新不要设太密。订阅管理里的「自动更新」建议 360 分钟(6 小时)一次。设得过短(如 30 分钟)会导致 PassWall 频繁重启,局域网设备反复断网,用户体验比不自动更新还差。
  • 路由器升级固件前备份 PassWall 设置。Luci → 服务 → PassWall → 高级设置 → 找到「备份」或「导出配置」按钮,把配置下载到电脑。固件升级后直接导入恢复,不用重新填节点和规则。

相关阅读

来源与时间

本文最后查看时间:2026-05-29。操作路径会随客户端版本变化,遇到按钮名称不一致时,优先按同义菜单和官方文档查看。

看更多教程:教程库 · 看客户端:客户端目录 · 看下载入口:下载中心