po0fw
po0 防火墙自动加白

自动把设备当前出口 IP 加入 po0 防火墙白名单 —— 多机器、多客户端、蜂窝优化、坑位记账。

📱

六大客户端

Surge、Loon、Stash、Shadowrocket、Egern、Quantumult X,同一份脚本内置环境兼容层。

即时 + 兜底

切换网络瞬间通过 network-changed 事件触发,每 10 分钟 cron 兜底捕捉纯 IP 变更。

🎯

无脑 POST

每次直接上报出口 IP,服务端对重复 IP 幂等去重。写满按写入时间自动淘汰最旧 IP。

🔄

自动自愈

被 FIFO 淘汰挤出白名单的设备,由自己的 cron / 切网事件在几分钟内自动补回。

快速开始

1. 获取 token

在 po0 控制台的机器详情页,找到「防火墙」卡片,点 复制添加脚本不是「添加当前 IP」):

防火墙
仅允许白名单中的最近来源 IP 访问入站端口。
● 已开启
当前来源 IP
203.0.113.•••
白名单5 / 5
📋 复制添加脚本👈
🛡 添加当前 IP

加白接口形如下面这段,你的 token 就是 URL 路径里 pgnfw_ 开头的那一整串:

curl -X POST https://124.221.69.228/api/firewall/pgnfw_你复制到的这一整串/add

pgnfw_… 那一整串提取出来就是本机 token。一台机器对应一个 token,多个 token 用英文逗号分割。

🔑 token = 该机器的加白凭证,请妥善保管、不要公开分享。它只需填进你自己的客户端配置。
进阶:固定槽位。默认加白按最近使用时间自动淘汰最旧 IP。若想让某台机器(如家宽出口)常驻不被淘汰,在它的 token 后加 @槽位号,例如 pgnfw_你的token@0——脚本会请求 …/add?slot=0 把它钉在 0 号槽位。注意每个 IP 只能占一个槽位,换槽前需先在面板删掉旧槽位。

2. 选择你的客户端安装

Surge
SurgeiOS / Mac · sgmodule
一键安装

安装时在模块参数 tokens 填入 token。首页自带手动刷新面板。

Loon
LooniOS · plugin
一键安装

安装后进插件设置,在 API tokens 输入框填入 token。Loon 无面板,可在「脚本」列表手动执行 cron 脚本立即加白。

Stash
StashiOS · stoverride
一键安装

安装后编辑覆写,把两处 argument: tokens= 补全。附手动刷新磁贴。

Quantumult X
Quantumult XiOS · task 片段

QX 无法远程订阅定时任务,需手动装:打开 QX 配置文件,把片段里的任务行加进 [task_local];可选把 ip-cidr, 124.221.69.228/32, direct, no-resolve 加进 [filter_local]。QX 不支持脚本参数:用 BoxJs 给 key po0fw_tokens 写入 token,或本地脚本改 INLINE_TOKENS

Shadowrocket
ShadowrocketiOS · srmodule
一键安装

装好后点击模块 → 编辑参数,把 tokens 换成你的 token(多台机器用 | 分割)。手动装:配置 → 模块 → 右上角 + → 粘贴链接。

Egern
EgerniOS / Mac · 原生模块
一键安装

安装后在模块参数 tokens 填入 token(多台机器用英文逗号分割)。每 10 分钟及网络变化时自动加白。

💡 一键按钮没反应? 部分浏览器会拦截 App URL Scheme,点「复制链接」后到客户端里「从 URL 安装 / 导入」即可。

3. 完成,看面板

之后无需任何操作:切换网络时立即、以及每 10 分钟自动检查一次,出口 IP 变了才会真正写入白名单。支持面板的客户端会显示:

po0 加白 1/1 · 出口 203.0.113.0/24
#1 ✅ 3/5
    203.0.113.0/24 ←
    198.51.100.0/24 📶
    192.0.2.0/24
标记含义
当前出口所在网段
📶本设备在蜂窝网络下加白的网段
3/5白名单坑位占用 / 上限

设计说明

⚠️ 注意:坑位满(5/5)后继续加白会按写入时间先进先出自动淘汰最旧的 IP,无需手动清理;但频繁写入会把还在用的 IP(比如家宽)挤出白名单 —— 被挤掉的设备会在几分钟内自愈补回。

FAQ

Q: 走代理时会把代理服务器 IP 加白吗?
不会。各载体都自带加白 API(124.221.69.228)直连规则,API 请求始终直连,看到的是设备真实出口 IP。

Q: 家宽换 IP 后多久生效?
网络切换事件是即时的;纯粹的公网 IP 变更最迟 10 分钟内被 cron 捕捉。

Q: 不同客户端功能有差异吗?
核心加白逻辑完全一致。差异:不支持 $network 的客户端没有 📶 蜂窝标记;Loon 无面板(可在脚本列表手动执行);QX 无面板与脚本参数(token 走存储 key)。

Q: 支持几台 po0 机器?
不限,tokens 逗号分割即可,面板按 #1 #2 … 分行显示。