除外する対象がWebサイトではなく端末であることを確認する

同じルーターにつながっていても、プロキシが必要な端末と、直接接続のまま使いたい端末があります。1台だけをプロキシノードから除外するなら、OpenClash全体を直接接続モードにしたり、その端末が開くWebサイトごとにルールを追加したりする必要はありません。LANアクセス制御では送信元アドレスを使い、透明プロキシの処理に入る前に対象の通信を除外できます。

ここでいうブラックリストは、インターネットへの接続を禁止するリストではなく、OpenClashの透明プロキシから除外する端末のリストです。コアで処理した後に DIRECT を選ぶ設定ファイルのルールとは、処理される場所が異なります。対象サービスへ直接接続できるかどうかは、元のネットワーク環境によります。

この記事は、メンテナンスが続いているOpenClash v0.47.156の固定バージョンのソースで確認した手順です。対象は、このバージョンが正常に動いているOpenWrtのメインルーターで、fw4/nftables、非TUNのRedir-Host互換モード、IPv4を使用している環境です。設定項目にはソースで確認した公式の英語ラベルを併記します。日本語の説明は記事としての翻訳であり、日本語UIを実機確認したという意味ではありません。OpenClashはルーター用プラグインで、デスクトップアプリのClash Verge Revではありません。今回はプラグインのインストールやコアの交換を行わないため、新たなCPUアーキテクチャやインストールパッケージを選ぶ必要はありません。現在正常に動いているファームウェアとコアをそのまま使います。

ホワイトリストを使用中の場合は、ここで止めてください。この記事は現在ブラックリストモードを使っている環境向けです。ホワイトリストとブラックリストではLAN全体の扱いが変わるため、1台を追加するために、ほかの端末への影響を確認せず切り替えることはできません。Fake-IP、TUN、サブルーターをゲートウェイとして使う構成、多段NAT、独自VLANにも以下の説明をそのまま当てはめないでください。記事に合わせるためだけに現在の動作モードを変える必要はありません。

LANブラックリストに端末のIPv4アドレスを追加する

まず、対象端末のネットワーク情報とルーターの端末一覧を照合し、現在のIPv4アドレスを確認します。192.168.1.50 は例にすぎません。入力するのは実際の端末のアドレスで、ルーターのアドレスやWebサイトの公開IPではありません。DHCPで割り当てられるアドレスは変わることがあります。すでにアドレスを予約している場合も、その予約先と端末が一致しているかを確認してください。古いスクリーンショットだけで判断しないことが大切です。

変更する前に、現在のアクセス制御モードとリスト全体を控えておきます。ほかの端末の項目は削除しません。ルーターの管理権限がある状態で、一時的な通信中断があっても差し支えない時間に作業してください。

  1. 自分のルーターのLuCIにログインし、Services → OpenClash → Plugin Settings を開いて、Black&White タブへ進みます。
  2. LAN Access Control Mode が Black List Mode になっていることを確認します。現在ホワイトリストの場合は、この作業を止め、先に既存の運用方針を確認してください。
  3. LAN Bypassed Host List に対象端末の実際のIPv4アドレスを追加します。既存の項目を残し、サブネット全体は追加しません。宛先側を扱う WAN Bypassed Host List に入力しないよう注意してください。
  4. 端末のアドレスとモードを再確認して、Apply Settings を押します。このボタンは設定を保存してOpenClashを再起動します。動作が再開してから接続を確認してください。

保存と適用は同じ操作ではありません。Commit Settings は設定を保存するだけです。このバージョンでは Apply Settings が再起動まで行います。リストにアドレスが残っているだけでは、動作中のルールが変更されたとは判断できません。

該当する項目が見当たらない場合は、プラグインのバージョン、現在の動作モード、開いているページを先に確認します。その場で見つけたUCIコマンドを流用したり、DNS転送方式を変更したりしないでください。この記事は上記の固定バージョンのUI定義と処理を照合しています。同じバージョンと確認できる実画面の画像はないため、旧バージョンの画像を代わりに掲載していません。

新しい接続で確認し、Webサイトが開くだけで判断しない

適用後は、対象端末で確認したいアプリを開き直すなどして、新しい接続を発生させます。まず普段から直接接続できる一般的なWebサイトが開くことを確認し、次に変更前は確実にプロキシを通っていて、IPv4を使っていると確認できる接続先で変更前後を比較します。もともと直接接続のルールに一致していたページが引き続き開いても、それだけではブラックリストの効果を確認できません。

確認できたこと判断のしかた
新しいIPv4接続で以前のプロキシ出口を使わなくなった端末を除外する目的に沿った結果です。出口IPで比較するには、直接接続とノードの公開出口IPが異なる必要があります
ブラックリストに追加していない端末が以前のルールで動いている全体の接続モードやLANアクセス制御の方向を誤って変えていないことを確認します
一部の接続がまだプロキシを通る端末のIPが変わっていないか、IPv6接続ではないか、端末自身で別のプロキシやVPNを使っていないかを確認します
通常の直接接続もできなくなった今回追加した項目を先に取り消し、元の設定を保って実際の通信経路を調べます。変更を重ねないでください

接続パネルに対象端末の新しいプロキシ接続が出てこないことは、補助的な手掛かりにはなります。ただし、リクエスト自体が送信されていない場合や、観察した時点で接続がなかった場合もあるため、それだけで成功とは判断できません。実行中のダウンロードや長時間維持される接続も、新しいルールの判定には向きません。確認のために、ほかの人の大切な作業を中断させないようにしてください。

IPv4の除外は、端末のすべての通信の除外を意味しません。このバージョンはIPv4とIPv6を別々に処理するため、IPv4アドレスを1つ追加してもIPv6には自動で適用されません。また、ルーターがDnsmasq経由でDNSをMihomoへ転送している場合、ブラックリストへの追加によってDNS問い合わせまでコアを通らなくなるとは限りません。ここで確認するのは対象端末のIPv4データ接続が透明プロキシを迂回することです。DNS経路の変更は約束せず、ネットワーク全体のIPv6を無効にすることも求めません。

元の処理に戻すには、今回追加したアドレスを削除する

同じブラックリストのページに戻り、今回追加した端末のIPv4アドレスだけを削除します。ほかの項目は残して、もう一度 Apply Settings を押してください。OpenClashが再開したら、新しい接続で以前のルールに従って処理されることを確認します。元のルールが直接接続を選ぶ場合もあるので、元に戻すことは、すべてのWebサイトがプロキシを通るという意味ではありません。

確認中にほかの設定も変更した場合は、作業前の記録をもとに自分が変更した部分だけを戻します。サブスクリプションの削除、設定全体の消去、コアの更新、ルーターの初期化は必要ありません。アクセス制御モードを変更していなければ、取り消す際にも変更しないでください。

後日端末のアドレスが変わると、古い項目が元の端末に一致しなくなるだけでなく、そのアドレスを新たに取得した別の端末に一致する可能性もあります。似た項目を増やし続けるより、アドレスと端末の対応を定期的に確認することが大切です。この記事で行うのは、確認済みの動作環境で、1台の端末のIPv4接続をOpenClashの透明プロキシ処理から除外することだけです。

公式情報源とバージョン範囲

バージョン番号、ファイル名、画面表示は更新で変わる場合があります。作業前にリンク先の公式資料を確認してください。