mcpField
Z
zapret-openwrt-guide

zapret-openwrt-guide

github.com/nordz0rクラウド・DevOps849 回インストール5 日前に更新
リポジトリ

zapret-openwrt-guide について

zapret-openwrt-guideは、OpenWrtルーター上のZapretの設定と保守を扱うリファレンススキルです。DPI回避戦略、LuCIでの管理、設定、スクリプト、トラブルシューティングを網羅し、ZapretはVPNではないと明記しています。

主な機能

  1. 01OpenWrt向けZapretの構成と導入ガイド
  2. 02DPI回避戦略のリファレンス
  3. 03LuCIのサービスと設定の概要
  4. 04設定項目とホスト/IPリスト
  5. 05スクリプトとcustom.dフックのリファレンス
  6. 06診断とトラブルシューティングの案内

活用シーン

  1. 01OpenWrtルーター向けのZapret戦略を選定
  2. 02サービス設定の変更前にLuCIの操作を確認
  3. 03DPI検査、サイト検査、デーモンログの問題を調査
  4. 04ロールバックと検証を含めてパッケージ更新を計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/nordz0r/skills --skill zapret-openwrt-guide

インストール後、Claude Code で/zapret-openwrt-guideを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
config.md
README.ru.md
scripts.md
strategies.md
troubleshooting.md
ui.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-zapretLuCI から管理するための 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 は二重設定システムを使用します。

  1. UCI 設定(/etc/config/zapret)— LuCI で編集した設定を保存します
  2. メイン設定(/opt/zapret/config)— nfqws デーモンが使用します

起動または再起動のたびに sync_config.sh が実行され、UCI の値をメイン設定に同期します。


クイックスタート

  1. zapret と luci-app-zapret パッケージをインストールします
  2. LuCI を開きます:サービス -> Zapret -> サービス
  3. 設定をリセットをクリックし、戦略を選択します(v6_by_StressOzz または v7_by_StressOzz を推奨)
  4. 有効化をクリックしてから、開始をクリックします
  5. 診断 -> サイトチェックで確認します

安全上の注意

  • 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 ポート備考
empty80,443443空、デシンクなし
v1_by_StressOzz80,443443fake,multidisorder + QUIC fake
v2_by_StressOzz80,443443fake,fakeddisorder + seqovl
v3_by_StressOzz80,443443v2 と同様、TLS テンプレートが異なります(t2.bin)
v4_by_StressOzz80,443443fake,multisplit + 3 --new セクション
v5_by_StressOzz80,443443ip-id=zero + multisplit
v6_by_StressOzz80,443,2053,2083,2087,2096,8443443,19294-19344,50000-50100Discord + STUN に対応
v7_by_StressOzz80,443,2053,2083,2087,2096,8443443,19294-19344,50000-50100v6 を改良し、リピート数を増加
v9_by_StressOzz80,443,2053,2083,2087,2096,8443443,19294-19344,50000-50100hostfakesplit のバリエーション
ALT7_by_Flowseal80,443443ip-id=zero、multisplit + seqovl
TLS_AUTO_ALT3_by_Flowseal80,443443fooling=ts、リピート数を増加

デフォルトの戦略: v6_by_StressOzz

LuCI ウェブ UI

UI の詳細については、このスキルのディレクトリにある references/ui.md を参照してください。

LuCI UI は Services -> Zapret にあり、5 つのページで構成されています。

  1. Service (service.js) — サービスの制御、ステータス、有効化/無効化/開始/停止/再起動/リセットの各ボタン、診断、更新
  2. Settings (settings.js) — 5 つのタブに分かれた設定:Main settings、NFQWS options、AutoHostList、Host lists、custom.d
  3. Log (dmnlog.js) — デーモンのライブログ(毎秒ポーリング)
  4. Diagnostics (diagnost.js) — dwc.sh による DPI チェックとサイトチェック
  5. Updater (updater.js) — GitHub からの更新の確認とインストール

スクリプト

スクリプトの詳細については、このスキルのディレクトリにある references/scripts.md を参照してください。

スクリプト目的
comfunc.sh共通関数:パス、PID、設定の検証、init_before_start
init.d.shProcd 初期化スクリプト(START=21、USE_PROCD=1)
sync_config.sh起動/再起動時の UCI -> config 同期
def-cfg.sh戦略の定義とデフォルト値
restore-def-cfg.sh設定をデフォルトにリセット
update-pkg.shGitHub からのパッケージ更新(オプション:-c、-p、-u、-f、-t)
dwc.shDPI チェッカー(TCP 16-20 テスト、サイトチェック)
script-exec.shスクリプトをログ記録付きでバックグラウンド実行
renew-cfg.sh起動時に設定を更新
uci-def-cfg.shインストール時に UCI 設定を作成

ホストリストと IP リスト

ファイル目的形式
zapret-hosts-google.txtYouTube/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ユーザー指定の IPIP または CIDR
zapret-ip-user-exclude.txt除外するユーザー指定の IPIP または 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 をお読みください。

クイックチェック:

  1. サービスのステータス:LuCI -> サービス -> Zapret -> サービス(または service zapret status)
  2. DPI チェック:診断 -> DPI チェック
  3. ログ:DAEMON_LOG_ENABLE=1 を有効にして、ログタブを確認します
  4. サイトチェック:診断 -> サイトチェックで 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
ストラテジーの追加
  1. def-cfg.sh に if [ "$strat" = "strategy_name" ] ブロックを追加します
  2. TCP/UDP ポートと、非同期パラメーターを含む NFQWS_OPT を定義します
  3. ストラテジーはサービス -> 設定をリセットの下に自動的に 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。

コメント