关于 zapret-openwrt-guide
zapret-openwrt-guide 是面向 OpenWrt 路由器上 Zapret 配置与维护的参考技能,涵盖 DPI 混淆策略、LuCI 管理、配置、脚本和故障排查。文档明确说明 Zapret 不是 VPN。
主要功能
- 01OpenWrt 上 Zapret 的架构与安装指南
- 02DPI 绕过策略参考
- 03LuCI 服务与设置概览
- 04配置参数及主机/IP 列表
- 05脚本与 custom.d 钩子参考
- 06诊断与故障排查指引
适用场景
- 01为 OpenWrt 路由器选择 Zapret 策略
- 02更改服务设置前查阅 LuCI 控件
- 03排查 DPI 检查、站点检查或守护进程日志
- 04通过回滚与验证规划软件包更新
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nordz0r/ skills --skill zapret-openwrt-guide安装后在 Claude Code 中输入/zapret-openwrt-guide确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/config.mdREADME.ru.mdscripts.mdstrategies.mdtroubleshooting.mdui.md详细介绍
Zapret-OpenWrt:完整指南
Zapret 是什么
Zapret 是一款用于 OpenWrt 路由器的反 DPI(深度包检测)工具。它不是 VPN——zapret 不会更改你的 IP 地址,也不会隐藏流量。它通过修改网络数据包来绕过深度包检测系统。
仓库: https://github.com/remittor/zapret-openwrt
上游: https://github.com/bol-van/zapret
当前版本: v72.20260307(2026-03-07;nfqws/tpws 来自 bol-van/zapret 提交 ef637c4,位于 v72.10 和 v72.12 之间)。zapret2 版本:v0.9.20260307(bol-van/zapret2 d3b3011)。已于 2026-10-15 验证。
分支: zap1(默认)——zapret + luci-app-zapret;master——zapret2 + luci-app-zapret2。
此后(截至 2026-10-15,尚未在 remittor 中发布): 更新程序使用 apk add --force-non-repository(2026-04-22)、修复了 Image Builder 初始化问题,并刷新了 ipset 排除列表。上游 bol-van v72.12(修复 armv7 崩溃)、v72.13(2026-07-21:在 init.d 中添加 Discord 媒体端口范围)、nfqws 部分 root 修复(2026-10-04)尚未打包;bol-van/zapret2 已更新至 v1.0.5.2(2026-09-15),而 remittor 仍提供 0.9.20260307。
项目架构
项目由两个软件包组成:
| 软件包 | 用途 |
|---|---|
zapret | 主软件包:nfqws 守护进程、配置、脚本、ipset 列表 |
luci-app-zapret | 通过 LuCI 管理的 Web 界面 |
路由器上的目录布局
/opt/zapret/
├── nfq/nfqws # Main DPI desync daemon
├── ip2net/ip2net # IP-to-subnet converter
├── mdig/mdig # DNS utility
├── config # Working config (runtime)
├── config.default # Default template
├── def-cfg.sh # Strategies and defaults
├── sync_config.sh # UCI -> config sync
├── restore-def-cfg.sh # Reset settings
├── update-pkg.sh # Package updates
├── dwc.sh # DPI checker
├── comfunc.sh # Shared functions
├── init.d.sh # Init script (procd)
├── ipset/ # Host and IP lists
│ ├── zapret-hosts-google.txt
│ ├── zapret-hosts-user.txt
│ ├── zapret-hosts-user-exclude.txt
│ ├── zapret-hosts-auto.txt
│ ├── zapret-ip-exclude.txt
│ ├── zapret-ip-user.txt
│ ├── zapret-ip-user-exclude.txt
│ └── cust[1-4].txt
├── files/fake/ # Fake packet templates (.bin)
└── init.d/openwrt/custom.d/ # User hook scripts
├── 10-script.sh
├── 20-script.sh
├── 50-script.sh # Example: Discord/STUN
├── 60-script.sh
└── 90-script.sh
配置系统
Zapret 使用双配置系统:
- UCI 配置(
/etc/config/zapret)——存储通过 LuCI 编辑的设置 - 主配置(
/opt/zapret/config)——供 nfqws 守护进程使用
每次启动/重启时都会运行 sync_config.sh,将 UCI 值同步到主配置中。
快速开始
- 安装
zapret和luci-app-zapret软件包 - 打开 LuCI:服务 -> Zapret -> 服务
- 点击重置设置并选择一种策略(推荐
v6_by_StressOzz或v7_by_StressOzz) - 点击启用和启动
- 通过诊断 -> 网站检查进行验证
安全注意事项
- Zapret 会更改路由器系统配置和服务,因此更新或更改策略前需要备份并制定回滚方案。
- 在验证之前,应将更新程序/dwc 脚本从 GitHub 和外部诊断来源下载的数据视为不可信输入。
- 在生产环境中,优先使用固定的发行版/标签并手动验证构件,不要盲目“更新到最新版本”。
- 为获得最大的可预测性,请在可信任的设备上下载发行版构件和主机列表,验证校验和/内容,然后再将其传输到路由器。
配置
所有配置参数的完整参考,请阅读此技能目录中的 references/config.md。
主要参数分组:
- 防火墙:FWTYPE、POSTNAT、FLOWOFFLOAD、INIT_APPLY_FW
- 网络:DISABLE_IPV4、DISABLE_IPV6、FILTER_TTL_EXPIRED_ICMP
- NFQWS:NFQWS_ENABLE、NFQWS_PORTS_TCP/UDP、NFQWS_OPT、connbytes(PKT_OUT/IN)
- 过滤:MODE_FILTER(hostlist/autohostlist)、FILTER_MARK
- 自动主机列表:RETRANS_THRESHOLD、FAIL_THRESHOLD、FAIL_TIME
- 日志记录:DAEMON_LOG_ENABLE、DAEMON_LOG_SIZE_MAX、DAEMON_LOG_FILE
- 其他:WS_USER、DISABLE_CUSTOM、DESYNC_MARK
DPI 绕过策略
所有策略的完整说明:请阅读此技能目录中的 references/strategies.md。
可用策略(定义于 def-cfg.sh):
| 策略 | TCP 端口 | UDP 端口 | 备注 |
|---|---|---|---|
| empty | 80,443 | 443 | 空策略,不进行 desync |
| v1_by_StressOzz | 80,443 | 443 | fake,multidisorder + QUIC fake |
| v2_by_StressOzz | 80,443 | 443 | fake,fakeddisorder + seqovl |
| v3_by_StressOzz | 80,443 | 443 | 与 v2 类似,使用不同的 TLS 模板(t2.bin) |
| v4_by_StressOzz | 80,443 | 443 | fake,multisplit + 3 个 --new 区段 |
| v5_by_StressOzz | 80,443 | 443 | ip-id=zero + multisplit |
| v6_by_StressOzz | 80,443,2053,2083,2087,2096,8443 | 443,19294-19344,50000-50100 | 支持 Discord + STUN |
| v7_by_StressOzz | 80,443,2053,2083,2087,2096,8443 | 443,19294-19344,50000-50100 | 改进版 v6,重复次数更多 |
| v9_by_StressOzz | 80,443,2053,2083,2087,2096,8443 | 443,19294-19344,50000-50100 | hostfakesplit 变体 |
| ALT7_by_Flowseal | 80,443 | 443 | ip-id=zero,multisplit + seqovl |
| TLS_AUTO_ALT3_by_Flowseal | 80,443 | 443 | fooling=ts,重复次数更多 |
默认策略: v6_by_StressOzz
LuCI 网页界面
完整界面参考:请阅读此技能目录中的 references/ui.md。
LuCI 界面位于 服务 -> Zapret,包含 5 个页面:
- 服务(
service.js)— 服务控制、状态、启用/禁用/启动/停止/重启/重置按钮、诊断、更新 - 设置(
settings.js)— 分为 5 个选项卡的设置:主设置、NFQWS 选项、AutoHostList、主机列表、custom.d - 日志(
dmnlog.js)— 实时守护进程日志(每秒轮询一次) - 诊断(
diagnost.js)— 通过dwc.sh进行 DPI 检查和站点检查 - 更新器(
updater.js)— 检查并安装来自 GitHub 的更新
脚本
完整脚本参考:请阅读此技能目录中的 references/scripts.md。
| 脚本 | 用途 |
|---|---|
comfunc.sh | 共享函数:路径、PID、配置验证、init_before_start |
init.d.sh | Procd 初始化脚本(START=21,USE_PROCD=1) |
sync_config.sh | 启动/重启时将 UCI 同步到配置 |
def-cfg.sh | 策略定义和默认值 |
restore-def-cfg.sh | 将配置重置为默认值 |
update-pkg.sh | 从 GitHub 更新软件包(选项:-c、-p、-u、-f、-t) |
dwc.sh | DPI 检查器(TCP 16-20 测试、站点检查) |
script-exec.sh | 在后台运行脚本并记录日志 |
renew-cfg.sh | 启动时刷新配置 |
uci-def-cfg.sh | 安装时创建 UCI 配置 |
主机和 IP 列表
| 文件 | 用途 | 格式 |
|---|---|---|
zapret-hosts-google.txt | YouTube/Google 域名(默认) | 每行一个域名 |
zapret-hosts-user.txt | 用户域名 <HOSTLIST> | 每行一个域名 |
zapret-hosts-user-exclude.txt | 排除项 | 每行一个域名 |
zapret-hosts-auto.txt | 自动检测到的主机 | 由 autohostlist 填充 |
zapret-ip-exclude.txt | 排除的 IP/子网 | IP 或 CIDR(128.199.0.0/16) |
zapret-ip-user.txt | 用户 IP | IP 或 CIDR |
zapret-ip-user-exclude.txt | 排除的用户 IP | IP 或 CIDR |
cust[1-4].txt | 自定义文件(最多 4 个) | 自由格式 |
NFQWS_OPT 中的占位符
<HOSTLIST>— 展开为标准列表中的--hostlist和--hostlist-exclude;适用于主机列表和自动主机列表模式<HOSTLIST_NOAUTO>— 用法相同,但会将zapret-hosts-auto.txt作为常规(非自动)列表添加
Custom.d 脚本
钩子会在服务启动/停止时按数字顺序运行:
10-script.sh— 早期初始化20-script.sh— 主阶段早期50-script.sh— 主阶段(示例:Discord/STUN4ALL)60-script.sh— 主阶段后期90-script.sh— 最终阶段
通过 DISABLE_CUSTOM=0 启用(界面:custom.d 选项卡 -> “使用 custom.d 脚本”)。
构建与 CI/CD
构建由 GitHub Actions 运行(.github/workflows/build.yml):
- 触发条件:推送
v[0-9]+*标签或手动运行 - 矩阵:30+ 种架构(ARM、MIPS、x86_64、RISC-V)
- 两条 OpenWrt 分支:IPK(v24.10.x SDK)和 APK(自 v72.20260307 起使用 v25.12.0 SDK)
- 发布内容以 JSON 形式发布到 gh-pages,供自动更新使用
故障排除
完整的故障排除指南:请阅读此技能目录中的 references/troubleshooting.md。
快速检查:
- 服务状态:LuCI -> Services -> Zapret -> Service(或
service zapret status) - DPI 检查:Diagnostics -> DPI check
- 日志:启用 DAEMON_LOG_ENABLE=1,查看 Log 选项卡
- 网站检查:在 Diagnostics -> Sites check 中选择 DNS 进行检查
面向开发者
源码结构
zapret-openwrt/
├── zapret/ # Main package
│ ├── Makefile # OpenWrt SDK build
│ ├── config.default # Config template
│ ├── *.sh # Shell scripts
│ ├── custom.d/ # custom.d hooks
│ ├── files/fake/ # .bin packet templates
│ ├── ipset/ # Host/IP lists
│ └── patches/ # Patches for upstream
└── luci-app-zapret/ # LuCI package
├── Makefile
├── htdocs/luci-static/resources/view/zapret/
│ ├── env.js # Paths and constants
│ ├── tools.js # Utilities, RPC, dialogs
│ ├── service.js # Service page
│ ├── settings.js # Settings page
│ ├── diagnost.js # Diagnostics
│ ├── updater.js # Updater
│ ├── dmnlog.js # Log viewer
│ └── styles.css # Styles
└── root/usr/share/
├── luci/menu.d/ # Menu definition
└── rpcd/acl.d/ # ACL rules
添加策略
- 将
if [ "$strat" = "strategy_name" ]代码块添加到def-cfg.sh - 定义 TCP/UDP 端口和包含 desync 参数的 NFQWS_OPT
- 该策略会自动显示在 UI 的 Service -> Reset settings 下
UI 开发关键文件
env.js— 所有路径、文件名和 URL(最先加载)tools.js— RPC 调用、POLLER、fileEditDialog、longstrEditDialog、decode_svc_info- 每个页面都是单独的视图,扩展自
view.extend()或baseclass.extend()
路由信号:zapret openwrt dpi desync nfqws hostlist autohostlist luci uci firewall nftables 故障排除 反审查 路由器
俄语版本:references/README.ru.md。