po0 防火墙自动加白

设备换 IP 后自动补进白名单,不再手动点「添加当前 IP」。
软路由 · PC · 安卓 · iOS 全平台,一次配置永久生效。

服务端 /24 幂等加白 FIFO 淘汰自动补回 直连官方 IP 免分流 开源 MIT
How it works

它怎么工作

po0「鸡险」服务的防火墙白名单只放行最近来源 IP。po0fw 让每台设备自己维护白名单:

触发

定时(10–15 分钟)与网络切换事件双通道,换 IP 后最迟一个周期内响应。

上报

向官方 IP 端点发送一个 POST 请求,客户端无需自行探测出口 IP。

加白

服务端按请求来源识别 /24 网段,重复上报幂等处理,不占新坑位。

自愈

白名单上限 5 个,坑满按最早写入淘汰;被挤掉的设备下个周期自动补回。

Get started

安装

token 在 po0 控制台机器详情页「防火墙」卡片 →「复制添加脚本」里,pgnfw_ 开头那串。一台机器一个 token,请勿公开分享。

🔑 先粘贴你的 token
本页所有安装命令和模块链接会自动带上它,复制即用。只保存在你的浏览器里,不会上传。
未填写,命令中显示占位符
📌 家宽出口建议钉固定槽位
白名单坑满后按写入时间淘汰最旧的。家宽出口被挤掉全家都断连 —— token 后加 @槽位号(0–4)钉死,永不参与淘汰:
pgnfw_xxx@0
手机等流动设备别钉,靠自愈就够。推荐:家宽 @0,剩 4 坑给流动设备。
🖥 多台 po0 机器一次填完
每台机器 token 不同,拼起来填一处即可,设备换 IP 时所有机器同时更新:
pgnfw_机器A,pgnfw_机器B
分隔符用英文逗号;Shadowrocket / Quantumult X 请改用 | 分隔。也可混用槽位:pgnfw_A@0,pgnfw_B
1

SSH 登录路由器,执行安装命令

curl -sSL https://raw.githubusercontent.com/kelenetwork/po0fw/main/openwrt/install-openwrt.sh -o /tmp/i.sh
PO0FW_TOKENS="pgnfw_你的token" sh /tmp/i.sh
2

完成 —— 已自动配置双触发

cron 每 10 分钟兜底 + WAN 拨号/重连事件秒级加白。跑一次 po0fw 验证,日志在 /tmp/po0fw.log
为什么最推荐装这里:只有路由器能第一时间感知家宽重拨;且全家设备连 Wi-Fi 都被它覆盖,手机电脑就不用再各装一份。家宽出口建议钉固定槽位:token 写成 pgnfw_xxx@0(详见 FAQ)。
1

Linux / macOS —— 一条命令

curl -sSL https://raw.githubusercontent.com/kelenetwork/po0fw/main/install-linux.sh | PO0FW_TOKENS="pgnfw_你的token" sh
root 自动注册 systemd timer;macOS / 非 root 写入 crontab,均为每 10 分钟。
2

Windows —— 管理员 PowerShell

irm https://raw.githubusercontent.com/kelenetwork/po0fw/main/windows/install-windows.ps1 -OutFile i.ps1
powershell -ExecutionPolicy Bypass -File i.ps1 -Tokens "pgnfw_你的token"
注册计划任务:每 10 分钟 + 网络连接事件双触发。
常用命令:po0fw 立即加白 · po0fw status 查看白名单 · 改 token 编辑 /etc/po0fw.conf(Windows 为 %ProgramData%\po0fw\po0fw.conf)。
1

装 MacroDroid,建第一个宏:切网即时加白

触发器选「网络连接变化」(Wi-Fi 与移动数据都勾选);动作选「HTTP 请求」,方法 POST,URL 填:
https://124.221.69.228/api/firewall/pgnfw_你的token/add
2

建第二个宏:15 分钟定时兜底

触发器「定期触发」间隔 15 分钟,同样的 HTTP POST 动作,再加一个「网络已连接」约束。这个宏负责捕捉静默换 IP(Wi-Fi 没断但公网 IP 变了、蜂窝换 IP)。
3

关闭电池优化

按 MacroDroid 引导给它加电池白名单,否则后台定时会被系统杀掉。
其他选择:HTTP Shortcuts(开源,定时 POST + 桌面小部件一键加白);Termux 用户直接跑 PC 页的 Linux 命令(自动识别 Termux,装完 sv-enable crond)。安卓代理客户端(Clash 系)没有脚本引擎,所以用自动化 App 实现,效果相同且不挑客户端。
1

选择你的客户端,一键安装模块

模块带面板显示、蜂窝 📶 标记、切网即时触发 + 每 10 分钟 cron。上方填过 token 的话,安装链接已自动带上参数。
Surge
Surge
iOS / Mac · sgmodule
安装时在模块参数 tokens 填入 token,首页自带手动刷新面板。
一键安装
Loon
Loon
iOS · plugin
安装后进插件设置,在 API tokens 输入框填入 token。可在「脚本」列表手动执行立即加白。
一键安装
Stash
Stash
iOS · stoverride
安装后编辑覆写,把两处 argument: tokens= 补全。附手动刷新磁贴。
一键安装
Shadowrocket
Shadowrocket
iOS · srmodule
SR 不支持参数模板:装好后长按模块 → 编辑纯文本,把两行 argument=tokens= 后的占位替换成你的 token(多台机器用 | 分割)。
一键安装
Egern
Egern
iOS / Mac · 原生模块
安装后在模块参数 tokens 填入 token(多台机器英文逗号分割)。
一键安装
Quantumult X
Quantumult X
iOS · task 片段
QX 不支持远程订阅定时任务:复制片段手动加进 [task_local];token 用 BoxJs 写 key po0fw_tokens。
一键按钮没反应?部分浏览器会拦截 App 跳转 —— 点「复制链接」,到客户端里「从 URL 安装 / 导入」即可。
2

不用代理 App?系统快捷指令也行

「获取 URL 内容」→ 方法 POST → 填安卓页那条 URL;再建自动化「连接 Wi-Fi 时」运行并关闭询问。注意快捷指令没有后台定时,重度蜂窝用户请用上面的代理模块。
What you get

装完之后

无需任何操作:切网即时、每 10 分钟自动检查,出口变了才真正写入。支持面板的客户端(Surge / Stash / Egern)长这样:

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白名单坑位占用 / 上限
  • 当前出口已在白名单,连接畅通
FAQ

常见问题

Wi-Fi 连着没断、公网 IP 变了(家宽重拨),能发现吗?
切网事件抓不到这种静默变更,靠定时兜底:各端 10–15 分钟周期照常上报。且家宽重拨大多在同一 /24 段内,本来就无需重新加白。真正的兜底主力是软路由 —— 它能感知 WAN 重拨事件秒级加白。
多台 po0 机器怎么配?
每台机器 token 不同,用英文逗号拼起来填一处即可(Shadowrocket / QX 用 |):pgnfw_机器A,pgnfw_机器B。设备换 IP 后所有机器的白名单同时更新。
固定槽位 @N 是什么?什么时候用?
默认坑满按写入时间先进先出淘汰。家宽出口这种全家依赖的网段被挤掉几分钟都难受 —— 在 token 后加 @槽位号(0–4,自己指定)钉死:pgnfw_xxx@0,永不参与淘汰。每个 IP 只占一个槽位,换槽位号前先去面板删旧记录;手机等流动设备别钉,靠自愈就够。推荐:家宽 @0,剩 4 坑留给流动设备。
走代理时会把代理节点 IP 加白吗?
一般不会:请求直连官方 IP 124.221.69.228,按域名分流的代理碰不到。iOS 模块已内置直连规则;TUN / 透明代理全局接管的场景加一条 IP-CIDR,124.221.69.228/32,DIRECT,no-resolve。软路由跑脚本时确认路由器自身流量不进代理链(如 OpenClash「绕过本机」)。
白名单 5/5 满了怎么办?
不用管:按写入时间自动淘汰最旧的,被挤出的设备最迟一个周期自动补回。想保住关键网段用固定槽位。
token 安全吗?
token 即该机器的加白凭证,请勿公开分享。本页填写的 token 只保存在你的浏览器 localStorage,不会上传;仓库与模块不包含任何 token。
怎么卸载?
OpenWrt:删除 /usr/bin/po0fw/etc/po0fw.conf/etc/hotplug.d/iface/99-po0fw 并清理 crontab · Linux:systemctl disable --now po0fw.timer 后删相关文件 · Windows:任务计划程序删「po0fw」· 手机端:删对应模块 / 宏 / 自动化。