設定の実践 · Clash 技術ブログ

OpenClash の使い方:OpenWrt へのインストール、サブスクリプションのインポート、家全体のプロキシ設定

OpenClash をインストールしても、家中の端末が接続されたことにはなりません。まずメインルーターまたはサブルーターの構成を決め、プラグイン、カーネル、サブスクリプション、引き継ぎ方式、DNS の順に設定します。

  • OpenWrt
  • OpenClash
  • 家全体のプロキシ化
目次

まず OpenClash プラグインと Mihomo コアを安定して動作する状態まで導入する

このチュートリアルでは、まずルーター本体を動作させ、その後にサブスクリプションと家全体への接続へ進みます。最初に「ステータス → 概要」で OpenWrt のバージョン、CPU アーキテクチャ、空きメモリを記録し、「システム → バックアップ / アップグレード」から設定をエクスポートしてください。ルーターは元々ストレージに余裕がないことが多いため、パッケージのインストールが途中で失敗しないよう、先に /overlay の空き容量を確認します。

まず SSH 経由で次の読み取り専用コマンドを実行します。command -v opkg から出力がある場合だけ、本記事の opkg によるインストール手順を続けてください。デバイスに apk しかない場合は opkg コマンドを無理に使わず、OpenClash の最新リリースページにある apk 向けの説明に従ってインストールします。

ファームウェア、空き容量、パッケージマネージャーを先に確認する
ubus call system board
df -h /overlay
free -h
command -v opkg

ダウンロードには vernesong/OpenClash のリリースページだけを使用してください。LuCI では「システム → ソフトウェア → パッケージをアップロード」から公式 ipk をアップロードしてインストールできます。SSH を使う場合は、同じファイルを /tmp/openclash.ipk へ転送します。

OpenWrt 23.05 以降では firewall4 と nftables の組み合わせが一般的ですが、古いファームウェアでは引き続き iptables が使われている場合があります。次の二組の依存関係から、自分のファイアウォールに合う一組だけを選び、両方を同時にインストールしないでください。

opkg ファームウェアのインストール手順
# 仅适用于 command -v opkg 有输出的固件
opkg update

# firewall4 / nftables 固件选这一行
opkg install bash dnsmasq-full curl ca-bundle ip-full ruby ruby-yaml kmod-tun kmod-inet-diag unzip kmod-nft-tproxy luci-compat luci luci-base

# 老的 iptables 固件改用这一行,不要和上一行同时执行
# opkg install bash iptables dnsmasq-full curl ca-bundle ipset ip-full iptables-mod-tproxy iptables-mod-extra ruby ruby-yaml kmod-tun kmod-inet-diag unzip luci-compat luci luci-base

opkg install /tmp/openclash.ipk
opkg status luci-app-openclash

インストール完了後に LuCI を更新すると、「サービス → OpenClash」に入口が表示されます。「プラグイン設定 → バージョン更新」を開き、コアのビルドがルーターのアーキテクチャと一致することを確認してから、Meta コアをダウンロードまたは更新します。

コアを手動で配置する場合、公式に指定されたディレクトリは /etc/openclash/core/、ファイル名は clash_meta です。この手順が完了していなければ、luci-app-openclash のページが開いてもトラフィックは処理できません。

OpenClash のホームへ戻ってサービスを起動し、実行ログを確認します。プロセスが数秒後に終了する場合は、サブスクリプションをインポートする前に、ログに従って依存関係の不足、空き容量不足、exec format error を解決してください。プラグイン、コア、ログの三項目がすべて正常になって初めて、インストール段階は完了です。

起動後にプラグイン、コア、ログを確認する
opkg status luci-app-openclash
ls -l /etc/openclash/core/
/etc/init.d/openclash enable
/etc/init.d/openclash restart
sleep 3
pgrep -af clash_meta
logread | grep -i openclash | tail -n 80

インストール完了の判断基準

  • LuCI の「サービス → OpenClash」を開ける
  • バージョン更新ページに表示されるコアのアーキテクチャがルーターと一致する
  • /etc/openclash/core/clash_meta が存在し、起動できる
  • サービスを再起動して三秒後も clash_meta プロセスが存在する
  • ログに依存関係の不足、空き容量不足、実行形式エラーがない
  • OpenClash を停止しても OpenWrt から直接インターネットへ接続できる

「設定ファイルのサブスクリプション」からインポートし、実際に読み込まれたことを確認する

「設定ファイルのサブスクリプション」を開き、サービス提供者から受け取った Clash または Mihomo のサブスクリプションアドレスを追加して、一度手動更新します。正常にインポートできた場合は、ファイルの更新日時が変わり、ポリシーグループとノードが表示され、設定チェックに合格し、ステータスページの現在の設定にも更新したファイルが表示されます。

ページに処理完了と表示されてもノードが空のままなら、ダウンロードログを確認します。HTTP 401、403、ログインページへのリダイレクト、プランに関する案内、空ファイルは、サブスクリプション内容を正常に取得できていないことを示します。YAML の行番号、unknown field、group not found は解析上の問題です。トラブルシューティング時は URL 内の個人 token を隠してください。

サブスクリプションを初めて有効にする

  1. 手動で更新する

    ファイルの日時とサイズが変わったことを確認し、ダウンロード段階の HTTP エラーを記録します。

  2. 設定チェックを実行する

    YAML の行番号、不明なフィールド、ポリシーグループの参照を先に修正します。

  3. 現在の設定として有効にする

    ステータスページへ戻り、実際に読み込まれたファイル名を確認します。

  4. ノードを一つ固定する

    自動で出口を切り替える速度テストグループは、まだ使用しないでください。

サブスクリプションが機能したら、初回テストでは動作モードを一つだけ選ぶ

OpenClash の Fake-IP、Redir-Host、TUN、混合モードは、それぞれ異なるトラフィック取り込み要件に対応するもので、すべて同時に有効にすれば完全になるわけではありません。初回は現在のプラグインが推奨する一般的なモードを使い、一台のコンピューターから接続記録を作成してから、一部アプリの互換性問題へ対処します。

Fake-IP はコアが早い段階でドメインを取得してルールを適用するのに役立ちますが、内部ネットワークのドメインや一部のアプリは除外が必要になる場合があります。Redir-Host は実際の名前解決結果を返すため、動作を理解しやすくなります。TUN はシステムプロキシを使わないアプリのトラフィックも多く取り込めますが、VPN、ポリシールーティング、ハードウェアアクセラレーションとも競合しやすくなります。

モードを切り替えた後は、テスト用コンピューターでネットワークアドレスを再取得し、DNS キャッシュを消去してから、同じサイトへアクセスします。古いキャッシュを残すと、新しいモードが機能していないと誤判定しやすくなります。

家全体を接続する前に、OpenWrt を主ルーターにするかサブルーターにするか決める

OpenClash がスマートフォン、テレビ、NAS のトラフィックを処理できるかどうかは、プラグインページの動作表示ではなく、各デバイスのデフォルトゲートウェイによって決まります。OpenWrt が主ルーターなら LAN デバイスは元々そこを通ります。サブルーターの場合は、ゲートウェイを OpenWrt に設定したデバイスだけが OpenClash へ入ります。

サブルーターの初回テストでは、一台のコンピューターだけでゲートウェイと DNS を変更します。通常のウェブサイト、プロキシが必要なサイト、ルーターの管理ページをすべて開けることを確認してから DHCP を変更してください。家中のデバイスを一度に切り替えると、DNS やファイアウォールの設定に問題があった場合、管理ページさえ開けなくなる可能性があります。

家庭内ネットワークの二つの構成

構成OpenWrt が担当する機能元に戻す方法
OpenWrt を主ルーターにする接続、DHCP、DNS、ファイアウォールを同じデバイスで処理OpenClash を停止した後も OpenWrt から直接接続
OpenWrt をサブルーターにする元の主ルーターは接続を維持し、指定したデバイスのゲートウェイを OpenWrt に設定テストデバイスのゲートウェイと DNS を主ルーターへ戻す

ゲートウェイが接続先を決め、DNS がルールによるドメイン識別の可否を決める

OpenWrt を主ルーターにする場合、通常は DHCP がその LAN アドレスをデフォルトゲートウェイ兼 DNS として端末へ通知します。サブルーターのテスト段階では、一台のコンピューターへサブルーターのアドレスを手動で入力し、確認後に主ルーターの DHCP から指定デバイスへ通知できます。同じサブネット上で二つの DHCP サービスが同時にアドレスを配布すると、信頼できる冗長化ではなく、不安定な接続になります。

ブラウザのセキュア DNS、Android のプライベート DNS、一部のテレビアプリに組み込まれた DoH は、ルーターを迂回する可能性があります。トラブルシューティング時はいったんこれらの独立した経路を無効にし、問い合わせが dnsmasq と OpenClash を通るようにしてください。ルールが安定して一致した後で、どの暗号化 DNS を再び有効にするか決めます。

IPv6 も併せて確認する必要があります。デバイスが公開 IPv6 を取得している一方、OpenClash が IPv4 しか取り込んでいない場合、一部の接続は IPv6 から直接出ていきます。この場合は、断続的な直接接続をすべてノードのせいにせず、IPv6 のルーティングと名前解決を明示的に処理してください。

NAS、プリンター、ルーターの管理画面
プライベートネットワークとローカルドメインは直接接続を維持し、まず管理画面へのアクセスが取り込まれないことを確認します。
ゲーム機とテレビ
詳しいエラーが表示されることは少ないため、コンピューターとスマートフォンの検証が終わってから追加します。
サブルーター
テストデバイスのゲートウェイと DNS は、両方ともサブルーターへ向ける必要があります。片方だけを変更しても、経路の半分しか検証できません。
一台の端末が OpenClash を通る完全な経路
  1. スマートフォンまたはコンピューターDHCP からゲートウェイと DNS を取得
  2. OpenWrt端末からの接続と名前解決リクエストを受信
  3. OpenClash設定とルールに従って出口を選択
  4. 対象サービス直接接続またはプロキシ経由でリクエストを受信

サブルーター構成では、ゲートウェイだけ、または DNS だけを変更することはできません。両者の経路が一致しないと、ページは時々開いても、ルールの一致と名前解決結果が不安定になります。

ルーター本体から一台の端末へ、順を追って検証する

原因を判断できる検証手順

  1. まずルーター本体をテストする

    システム時刻が正しく、WAN からインターネットへ接続でき、サブスクリプションのドメインを名前解決できることを確認します。

  2. 次にコアの状態を確認する

    設定が正常に読み込まれ、固定したノードで接続結果が得られ、ログに再起動の繰り返しがないことを確認します。

  3. 一台のコンピューターを接続する

    ブラウザ拡張機能のプロキシは設定せず、新しいゲートウェイと DNS だけを使用します。

  4. 三種類のアドレスを比較する

    国内サイト、プロキシが必要なサイト、ルーターの管理ページへそれぞれアクセスし、接続記録を照合します。

ルーター本体は接続できても下流のコンピューターが接続できない場合は、DHCP、ゲートウェイ、ファイアウォールの転送を優先して確認します。ドメインが失敗して IP リクエストには応答がある場合は、次に DNS を調べます。接続記録が現れているのに送信時のエラーが出る場合だけ、ルールとポリシーグループへ戻ってください。この順序で対処するほうが、OpenClash を何度も再起動するより速く解決できます。

家全体への展開はデバイスの種類ごとに段階的に進める

コンピューター一台とスマートフォン一台が安定してから、テレビ、ゲーム機、スマートホーム機器を追加します。新しい種類のデバイスを加えるたびに元のゲートウェイと DNS を記録し、問題が起きたら、まずその種類のデバイスを直接接続へ戻してください。家庭内ネットワークが復旧した後なら、ログとルールを落ち着いて確認できます。

DHCP を最終変更する前に、OpenClash の停止、元の DNS の復元、failsafe への移行方法を記録します。サブスクリプション更新、ファームウェアのアップグレード、コアの置き換えはいずれも動作を変える可能性があります。OpenClash に依存しない管理経路があれば、一度のプラグイン障害で家全体がオフラインになる事態を防げます。

参考資料