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

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

OpenClash の初回はプラグイン、アーキテクチャ、コアの版を確認し、有効な構成を取り込んで選択してからサービスを起動します。主ルーターか補助ルーターのゲートウェイと DNS を確認し、一台で検証してから端末を追加して、停止・復旧方法を残します。

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

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 のページが開いてもトラフィックは処理できません。

状態画面またはコアのバージョン出力でファイルを実行できるか確認します。初回インストールで有効な構成がまだない場合は購読の取り込みへ進みます。exec format error、依存関係の不足、実行できないファイルはアーキテクチャ、依存関係、権限を修正します。サービスは有効な構成を選んでから起動します。

インストール後にプラグインとコアのバージョンを確認する
opkg status luci-app-openclash
ls -l /etc/openclash/core/
/etc/openclash/core/clash_meta -v

OpenClash を停止した後も、OpenWrt から直接インターネットに接続できる必要があります。

「設定ファイルのサブスクリプション」で取り込み、使用中の設定として読み込む

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

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

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

  1. 手動で更新する

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

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

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

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

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

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

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

構成の検証に合格し、状態画面でその有効な構成を選択してから OpenClash を起動します。構成がなければ購読の取り込みに戻り、ログにアーキテクチャ、依存関係、実行ファイルのエラーがあればインストールの問題を処理します。サービスが動作を続けて接続記録が出てから通信の取り込みをテストします。

起動後にプラグイン、コア、ログを確認する
opkg status luci-app-openclash
ls -l /etc/openclash/core/
/etc/init.d/openclash enable
/etc/init.d/openclash restart
sleep 3
ubus call service list '{"name":"openclash"}'
logread | grep -i openclash | tail -n 80

出力の openclash にある instances で、インスタンスの running を確認します。true で pid があればプロセスは動作中です。false またはインスタンスがない場合は、状態とログを確認します。動作中でも接続が復旧したとは限らないため、後述の端末からのアクセステストも行ってください。

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

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

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

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

主ルーターと補助ルーターのゲートウェイ・DNS 設定

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

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

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

構成OpenWrt が担当する機能元に戻す方法
OpenWrt を主ルーターにする接続、DHCP、DNS、ファイアウォールを同じデバイスで処理OpenClash を停止した後も OpenWrt から直接接続
OpenWrt をサブルーターにする元の主ルーターは接続を維持し、指定したデバイスのゲートウェイを OpenWrt に設定テストデバイスのゲートウェイと 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 の両方を担当します。テストでは両設定が例に沿っているか確認してください。別の DNS を使う場合は、問い合わせ先、一致したルール、名前解決の結果を別途確認します。ゲートウェイを変更しただけでは、構成が完成したとは判断できません。

ルーターがインターネットに接続できたら、一台の端末からのアクセスを試す

ルーターと一台のパソコンの接続テスト

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

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

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

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

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

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

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

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

ルーターは接続できるのに配下のパソコンが接続できない場合は、DHCP、ゲートウェイ、ファイアウォールの転送を確認します。ドメインへの接続だけ失敗し、IP 宛ての要求には応答がある場合は DNS を調べます。接続記録があるのに出口が違う場合は、ルールとポリシーグループを確認します。

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

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

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

参考資料