zapret-openwrt-guide について
zapret-openwrt-guideは、OpenWrtルーター上のZapretの設定と保守を扱うリファレンススキルです。DPI回避戦略、LuCIでの管理、設定、スクリプト、トラブルシューティングを網羅し、ZapretはVPNではないと明記しています。
主な機能
- 01OpenWrt向けZapretの構成と導入ガイド
- 02DPI回避戦略のリファレンス
- 03LuCIのサービスと設定の概要
- 04設定項目とホスト/IPリスト
- 05スクリプトとcustom.dフックのリファレンス
- 06診断とトラブルシューティングの案内
活用シーン
- 01OpenWrtルーター向けのZapret戦略を選定
- 02サービス設定の変更前にLuCIの操作を確認
- 03DPI検査、サイト検査、デーモンログの問題を調査
- 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。bol-van/zapret のコミット ef637c4 からの nfqws/tpws。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 です。
プロジェクトのアーキテクチャ
このプロジェクトは 2 つのパッケージで構成されています。
| パッケージ | 目的 |
|---|---|
zapret | メインパッケージ:nfqws デーモン、設定、スクリプト、ipset リスト |
luci-app-zapret | LuCI から管理するための Web UI |
ルーター上の構成
/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
- AutoHostList: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 | 空、デシンクなし |
| 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 ウェブ UI
UI の詳細については、このスキルのディレクトリにある references/ui.md を参照してください。
LuCI UI は Services -> Zapret にあり、5 つのページで構成されています。
- Service (
service.js) — サービスの制御、ステータス、有効化/無効化/開始/停止/再起動/リセットの各ボタン、診断、更新 - Settings (
settings.js) — 5 つのタブに分かれた設定:Main settings、NFQWS options、AutoHostList、Host lists、custom.d - Log (
dmnlog.js) — デーモンのライブログ(毎秒ポーリング) - Diagnostics (
diagnost.js) —dwc.shによる DPI チェックとサイトチェック - Updater (
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 -> config 同期 |
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 ドメイン(デフォルト) | 1 行に 1 ドメイン |
zapret-hosts-user.txt | ユーザー指定のドメイン <HOSTLIST> | 1 行に 1 ドメイン |
zapret-hosts-user-exclude.txt | 除外対象 | 1 行に 1 ドメイン |
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 モードと autohostlist モードで使用できます<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 で有効になります(UI:custom.d タブ -> 「Use custom.d scripts」)。
ビルドと CI/CD
ビルドは GitHub Actions(.github/workflows/build.yml)で実行されます:
- トリガー:
v[0-9]+*タグのプッシュ、または手動実行 - マトリックス:30 以上のアーキテクチャ(ARM、MIPS、x86_64、RISC-V)
- 2 つの OpenWrt 系統:IPK(v24.10.x SDK)と APK(v72.20260307 以降は v25.12.0 SDK)
- 自動更新用に、リリースは JSON として gh-pages に公開されます
トラブルシューティング
トラブルシューティングの詳細については、このスキルのディレクトリにある references/troubleshooting.md をお読みください。
クイックチェック:
- サービスのステータス:LuCI -> サービス -> Zapret -> サービス(または
service zapret status) - DPI チェック:診断 -> DPI チェック
- ログ:DAEMON_LOG_ENABLE=1 を有効にして、ログタブを確認します
- サイトチェック:診断 -> サイトチェックで 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
ストラテジーの追加
def-cfg.shにif [ "$strat" = "strategy_name" ]ブロックを追加します- TCP/UDP ポートと、非同期パラメーターを含む NFQWS_OPT を定義します
- ストラテジーはサービス -> 設定をリセットの下に自動的に UI に表示されます
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 troubleshooting anti-censorship router
ロシア語版:references/README.ru.md。