多路由器家庭应该都懂那种痛。
主路由拨号上网,客厅再挂一个二级路由——布局合理、信号全覆盖、全家都开心。然后呢?你打开 PS5 一看:NAT 类型——严格。BT 下载那个小黄灯亮得跟太阳一样,P2P 连不上,游戏语音丢包丢到队友以为你在火星。明明带宽够了,设备也不差,就是被两层 NAT 卡得死死的。
UPnP Bridge Relay 就是来收拾这个烂摊子的。它跑在 OpenWrt 上,把下级路由的 UPnP 端口映射请求自动桥接到上级主路由,让躲在二级路由后面的设备也能被外面正常访问到。简单说:下级设备喊「我要开个门」,它帮你去主路由那里把门打开。

二级路由到底把你害得有多惨#
先搞清楚问题在哪,不然装了半天不知道自己在救什么火。
普通家庭网络长这样:
互联网 → 光猫 → 主路由(拨号)→ 各种设备很干净,一层 NAT,UPnP 正常工作。PS5 开个端口映射,主路由乖乖照办,NAT 类型轻松拿到「开放」或者至少「中等」。
但很多人家里实际是这样的:
互联网 → 光猫 → 主路由(拨号)→ 二级路由 → 各种设备问题来了:你的 PS5 连着二级路由,它向二级路由申请 UPnP 映射,二级路由也答应了——但主路由根本不知道这事。主路由眼里,所有二级路由后面的设备都挤在一个内网 IP 后面,谁是谁都分不清,更别说给它们单独开端口了。结果就是 NAT 严格、P2P 残废、联机靠缘分。

UPnP Bridge Relay 干了什么#
名字挺唬人的,其实逻辑很朴素,就三步:
- 盯着下级路由:定时读取下级路由上的 UPnP 映射列表(通过 miniupnpc),看看有哪些设备申请了端口。
- 过滤一下:不是什么端口都往主路由上开——只放行你觉得靠谱的映射,规则你自己定。
- 桥接到主路由:把过滤后的映射转成 nftables DNAT 规则,直接写进主路由的防火墙。主路由收到外部请求后,按规则把流量转发给二级路由后面的设备。
就这么简单。不是什么黑科技,就是一个帮你在两台路由之间传话的小跑腿。但这个过程本来该你自己手动搞——每次 PS5 换端口都要 SSH 进主路由改 iptables,想想就窒息。

安装,简单到有点无聊#
项目地址:UPnP Bridge Relay
一个包搞定:luci-app-upnp-bridge-relay 包含核心服务、LuCI 网页管理界面和中文翻译,不用分开装。在 OpenWrt 上装就行:
# OpenWrt 24.10 / 23.05 (opkg)
opkg install luci-app-upnp-bridge-relay_*.ipk
# OpenWrt 25.12+ (apk)
apk add --allow-untrusted ./luci-app-upnp-bridge-relay*.apk装完之后刷新一下 LuCI 页面,就能在「服务」菜单下面看到 UPnP Bridge Relay 了。依赖会自动拉上:miniupnpc、nftables、uci、ubus、rpcd、luci-base——都是 OpenWrt 上本来就该有的东西,不会给你塞一堆莫名其妙的新依赖。这点我很满意,有的工具装一个带八个,跟搬家似的,烦死了。
对了,fw3 / iptables-only 的老系统不支持哦。都什么年代了,该换 fw4 + nftables 啦~

新手引导:跟着向导走就行#
第一次用的时候,强烈建议走向导(Wizard)。别觉得自己是高手就可以跳过——我知道你很厉害,但这个向导是真的有用,不是那种「点下一步就行」的敷衍货。
向导会带你完成几件事:
- 配置下级路由:填下级路由的 IP、UPnP 服务端口、连接超时时间。
- 配置上级接口:选主路由上用来接收外部流量的 WAN 接口。
- 安全过滤:设端口范围白名单,比如只放行 1024-65535,别让 80/443 这种敏感端口溜出去。
- 连通性检测:自动测试下级路由 UPnP 能不能正常读到、主路由 nftables 能不能正常写入。
最后一步检测不过关的话,向导不会让你强行开启的——这个设计就很懂事。有些工具向导做完检测失败了照样让你「确定启用」,然后你对着报错日志发呆。哼,我不干这种事。

诊断工具:出问题了别慌#
网络这东西,配的时候好好的,过两天就不行了——这不是你的问题,是网络的日常。所以我塞了几个诊断工具进去,出问题的时候别对着屏幕发呆。
诊断页面会检查:
- 下级路由连通性:miniupnpc 能不能正常读到映射列表。
- nftables 规则状态:你写的 DNAT 规则是不是真的在主路由上生效了。
- 路由表健康度:默认路由有没有绑错接口、转发路径正不正常。
- OpenClash 规则:如果有的话,RETURN 规则写没写进去。
每个检查项旁边有绿色 OK 或者红色警告。看到红色的话,点一下就能展开详细信息——不用你去 /tmp 里翻日志,我都给你整理好了。贴心不?我觉得挺贴心的,毕竟我自己也是那个翻日志翻到崩溃的人。

OpenClash 用户看这里#
如果你在主路由上跑了 OpenClash,那必须要多一步配置,不然流量会被 Clash 吞掉,UPnP 映射等于白做。
UPnP Bridge Relay 会自动给入站流量打 RETURN 标记,让 OpenClash 放行——也就是告诉 Clash:「这条流量你别管,让它直通」。配置里有个 openclash_auto_restart 选项,打开之后写完 RETURN 规则会自动重启 OpenClash 让规则生效。
不过说实话,自动重启 OpenClash 这件事我还是有点心虚的——毕竟重启的那几秒钟你的代理会断。所以我默认把它关了,让你自己决定要不要开。技术工具要有边界感,不能替你决定一切,对吧~

一些小提醒,收好不谢#
端口白名单要认真设。 默认放行 40000-65535 端口——这个范围已经够日常用了,但如果你有特殊需求可以自己调。别把 22、80、443 这些管理端口映射出去,不然你的路由器就变成全网的公共厕所了,谁都来逛一圈。
下级路由的 UPnP 必须先开好。 UPnP Bridge Relay 是桥接工具,不是 UPnP 服务本身——它不会替你开启下级路由的 UPnP 功能。下级路由 UPnP 没开的话,桥接到的只有空气,工具会报「读不到映射」,不是工具的锅。
别把上下级关系搞反。 这工具跑在主路由上,把下级路由的映射桥接过来。如果你把 IP 填反了,工具会坚定地告诉你连不上。它不会猜你的心思,也不会帮你自动纠正——我很尊重你的自由意志,哪怕这个意志是个 typo。
定期看看诊断页面。 网络环境是会变的,固件升级、配置改动、运营商搞事情,都可能导致之前好好的映射突然失效。偶尔去诊断页面逛一圈,比出问题了再抓狂好得多。防患于未然嘛,老话了,但老话之所以是老话就是因为它对~
最后说两句#
这个工具的诞生原因其实很朴素:我自己家里就是双路由,我自己游戏机联机就是卡,我自己折腾了半年手动改 iptables 终于受不了了——于是就写了它。
它不炫、不快、不是什么改变世界的产品。但它能让你家的 PS5 从 NAT 严格变成开放,能让你的 BT 下载从黄灯变绿灯,能让你的 P2P 联机不再「正在搜索玩家……搜索超时」。这就够了。
开源,GPLv3 License,能用能改,但改了就得开源哦。Star 当然也是欢迎的——虽然说出来显得有点功利,但写开源嘛,没人搭理真的很寂寞的,哼~
去试试吧!你的 PS5 在等你救它。






