まず共有範囲を確認:PCが接続先となり、他の端末から接続する

ClashのプロキシをLANで共有する一般的な方法は、PCでプロキシポートを待ち受け、スマホ、タブレット、テレビ側でプロキシサーバーにPCのLAN内IPアドレスを指定することです。接続はPC上の既存のサブスクリプション、プロキシグループ、ルールを通じて処理されます。スマホにPCのノード設定をコピーする必要はありませんが、PCの電源とネットワーク接続を維持し、Clashのコアを起動しておく必要があります。

これはPCを自動的にルーター化する設定ではありません。allow-lanを有効にしても、同じWi-Fi上のすべての端末の通信が自動的に取り込まれるわけではありません。他の端末でプロキシを手動設定するか、別途構成したゲートウェイで転送する必要があります。この記事では明示的に指定するHTTP/SOCKS5プロキシを扱い、別ルーター、ルーターの透過プロキシ、ポート転送は対象外です。

  • PC:まず現在の設定で目的のサイトにアクセスできることを確認し、ノードの不具合を共有設定の問題と取り違えないようにします。
  • ネットワーク:PCと接続する端末の間で直接通信できる必要があります。同じルーターに接続した有線端末と無線端末は通常相互に通信できますが、ゲストネットワークでは端末間通信が禁止されている場合があります。
  • アドレスの例:以下ではPCのIPv4アドレスを192.168.1.20、混合ポートを7890とします。実際のアドレスとポートに置き換えてください。

mixed-port、allow-lan、bind-addressの役割

項目設定例役割
mixed-port7890同じポートでHTTPとSOCKS5のプロキシリクエストを受け付けます。
allow-lantrueLAN内の端末からプロキシ接続先へのアクセスを許可します。
bind-address"*"待ち受けアドレスを指定します。アスタリスクはすべてのアドレスを表し、LANアクセスの設定と併用します。
moderuleルールモードに切り替え、実行中の設定にあるルールに従って接続を処理します。

ポートが同じでも、プロトコルは同じとは限らない

mixed-portは接続要求に応じてプロトコルを判別します。スマホのWi-Fi設定で「HTTPプロキシ」を選び、7890に接続できます。SOCKS5に対応したアプリも同じポートを利用できます。HTTPSサイトへの接続は通常、HTTPプロキシのCONNECTトンネルを通るため、HTTPSサイトを開くために別の「HTTPSポート」を用意したり、証明書をインストールしたりする必要はありません。

portはHTTPプロキシ、socks-portはSOCKSプロキシ用です。混合ポートを使う場合は、ほかの待ち受け設定で同じアドレスとポートを使用しないでください。PC上の別のプログラムがすでに7890を使っている場合は、使用中のプロセスを確認するか、空いているポートを選び、端末側の設定も同じ番号に変更します。

待ち受け範囲とファイアウォールの許可範囲をあわせて確認

127.0.0.1はループバックアドレスで、PC本体からの接続に限られます。スマホがPCと同じWi-Fiに接続していても、PCのループバックアドレスではプロキシに接続できません。bind-address: "*"は初回テストに便利ですが、有線・無線を含むすべてのネットワークインターフェースで待ち受ける可能性があります。継続して使う場合は固定のLANアドレスにバインドし、ファイアウォールで接続元も制限してください。

共有用の接続先を設定し、クライアントで実際に読み込まれた値を確認

現在使えている設定を先にバックアップしてください。以下は既存設定のトップレベルに追加する断片であり、ノードを含む完全なサブスクリプション設定ではありません。既存のproxies、proxy-providers、proxy-groups、rulesは残し、この数行でファイル全体を上書きしないでください。

mixed-port: 7890
allow-lan: true
bind-address: "*"
mode: rule
log-level: info
  1. クライアントの設定画面で「混合ポート」と「LAN接続を許可」の実際の値を確認してください。メニュー名はクライアントによって多少異なります。
  2. クライアントに設定の上書き、マージ、パッチ機能がある場合は、それを使って共有設定を保存してください。サブスクリプションから生成されたファイルを直接編集すると、次回の更新時に変更が失われることがあります。
  3. 設定を保存して再読み込みし、必要に応じてコアを再起動してください。ログでYAMLの解析エラーやポート競合がないことを確認します。
  4. 有効な設定または待ち受け状態をもう一度確認してください。GUIがYAMLのポート番号やスイッチを上書きする場合があるため、実際のコアの動作を基準にします。

YAMLのトップレベル項目に余分なインデントを付けず、同じ項目を重複して定義しないでください。アスタリスクは引用符で囲む必要があります。引用符のない*はYAMLで特別な意味を持つため、解析に失敗する場合があります。有線LANアダプターのアドレスだけにバインドする場合はbind-address: "192.168.1.20"に変更できますが、PCのアドレスが変わったら設定も更新してください。

PCのIPアドレスを確認し、ネットワーク範囲を絞ってファイアウォールを許可

Windows:アドレスとTCPの待ち受けを確認

Windows 11では、「設定」→「ネットワークとインターネット」→現在の「Wi-Fi」または「イーサネット」の接続プロパティからIPv4アドレスを確認できます。ターミナルでipconfigを実行して確認することもできます。ルーターに接続している物理ネットワークアダプターのアドレスを使い、TUN仮想アダプター、VPN、その他の仮想アダプターのアドレスは使わないでください。

ipconfig
Get-NetTCPConnection -State Listen -LocalPort 7890

2つ目のコマンドはPowerShellで実行します。LocalAddressが127.0.0.1だけなら、PC内のみで待ち受けています。0.0.0.0なら、通常はIPv4のすべてのインターフェースで待ち受けています。192.168.1.20なら、そのアドレスに指定して待ち受けています。結果が表示されない場合は、コアが起動しているか、実際のポートが7890かを確認してください。

現在の接続先が信頼できるネットワークであることを確認してから、「Windows セキュリティ」→「ファイアウォールとネットワーク保護」→「詳細設定」→「受信の規則」でTCPポートの規則を作成できます。以下は管理者権限のPowerShellで実行する同等の例で、プライベートネットワーク上の192.168.1.0/24からの接続だけを許可します。自宅のサブネットが異なる場合は、必ず先に変更してください。

New-NetFirewallRule -DisplayName "Clash LAN TCP 7890" `
  -Direction Inbound -Action Allow -Protocol TCP `
  -LocalPort 7890 -RemoteAddress 192.168.1.0/24 `
  -Profile Private

この規則は、この記事で説明するHTTPプロキシの接続テスト用であり、UDP共有の設定ではありません。共有を停止したら、次のコマンドで規則を削除し、接続口を開放したままにしないようにしてください。

Remove-NetFirewallRule -DisplayName "Clash LAN TCP 7890"

macOSとLinux:該当するコアプロセスを確認

macOSでは「システム設定」→「ネットワーク」→現在の接続→「詳細」→「TCP/IP」でアドレスを確認できます。「ネットワーク」→「ファイアウォール」→「オプション」では、クライアントまたはコアプログラムがブロックされていないか確認してください。システムのバージョンによってボタンの位置は異なります。クライアントの更新でコアプログラムが入れ替わった場合も、アクセス許可を再確認してください。

Linuxではip -4 addrでアドレスを、ss -lntpで待ち受け状態を確認できます。UFWを使用していて、実際の自宅のサブネットが192.168.1.0/24の場合は、次のように接続元を限定した規則を追加できます。リモートログインへの影響を把握しないまま、この規則のためだけにファイアウォールを有効化したり初期化したりしないでください。

sudo ufw allow from 192.168.1.0/24 to any port 7890 proto tcp

スマホやテレビのプロキシ設定:サーバーにはルーターではなくPCを指定

iPhone・iPad

  1. 「設定」→「Wi-Fi」を開き、接続中のWi-Fiの右側にある情報ボタンをタップします。
  2. 「プロキシを構成」を開き、「手動」を選択します。
  3. 「サーバー」にPCのアドレス192.168.1.20、「ポート」に7890を入力します。
  4. PCでプロキシ認証を設定していない場合は、「認証」をオフのままにします。保存後、Safariで新しいページを開いてテストしてください。

この設定は現在のWi-Fiに適用され、モバイルデータ通信には自動で適用されません。サーバー欄にスマホ自身のIPアドレス、ルーターのゲートウェイ、127.0.0.1を入力しないでください。また、http://も付けないでください。プロキシ接続に認証が必要な場合は、対応するユーザー名とパスワードを入力します。アプリによってはプロキシ認証への対応が不完全なため、個別に動作を確認してください。

Androidスマホ

システムのWi-Fi設定で接続中のネットワークを編集し、「詳細設定」または「プロキシ」を開いて「手動」を選択します。ホスト名に192.168.1.20、ポートに7890を入力してください。Pixelシリーズで一般的な画面では、「設定」→「ネットワークとインターネット」→「インターネット」→現在のネットワークの設定→編集→「詳細設定」→「プロキシ」と進みます。他のメーカーでは、実際のネットワーク編集画面を確認してください。

「プロキシを使用しないアドレス」は端末側の除外リストであり、Clashのrulesとは別の設定です。初回のテストでは初期値のままにし、意味のわからないワイルドカードを入力しないでください。AndroidのWi-Fi手動プロキシは、主にシステムのHTTPプロキシ設定を参照するアプリ向けです。ゲーム、動画アプリ、バックグラウンドサービスも利用すると判断することはできません。

テレビ・テレビボックス

テレビの「設定」→「ネットワーク」で現在の接続を開き、「プロキシ設定」またはネットワークの編集項目を探します。HTTPプロキシを手動設定できる場合は、PCのIPアドレスと7890を入力します。テレビによってはWi-Fiの編集画面にのみプロキシ設定があり、有線接続では利用できない場合があります。プロキシ設定を探すために安易に静的IPへ変更すると、ゲートウェイやDNSを誤設定するおそれがあるため避けてください。

テレビにプロキシ設定がない場合は、対象のアプリにHTTP/SOCKS5の設定項目があるか、互換性のある専用クライアントをインストールできるか確認してください。テレビのDNSをPCのアドレスに変更してもプロキシ設定の代わりにはなりません。また、この記事の設定ではLAN向けDNSサービスは有効になりません。

待ち受け・ネットワーク・ルールの3段階で共有状態を確認

まず、プロキシが必要なHTTPSサイトをスマホのブラウザーで開き、PCのクライアントにある接続一覧やログも確認することをおすすめします。ステータスバーのアイコンだけで判断せず、接続がコアに届いているか、対象ドメインが正しいか、どのルールに一致したか、最終的な接続先はどこかを確認してください。

  1. まずポートへの接続を確認:別のWindows PCがある場合は、Test-NetConnection 192.168.1.20 -Port 7890を実行します。TcpTestSucceeded: TrueはTCP接続先に到達できたことを示すだけで、ノードやルールが正常であることまでは保証しません。
  2. 次にプロキシリクエストを確認:curlをインストールした別のPCで次のコマンドを実行し、プロキシを明示的に指定します。これにより、アプリがシステムのプロキシ設定を無視する影響を切り分けられます。
  3. 最後に実際のアプリで確認:ブラウザーで成功したら、テレビのアプリ、LAN内の画面共有なども個別にテストしてください。Webページのテスト結果だけから「すべての通信がプロキシ経由になった」と判断しないでください。
curl --proxy http://192.168.1.20:7890 --connect-timeout 5 --max-time 20 -I https://example.com/

ここで5秒は接続時のタイムアウト上限、20秒はリクエスト全体の制限時間であり、遅延の測定値ではありません。接続一覧でリクエストがDIRECTに一致していても、PCのプロキシ接続口を経由したうえで、PCから接続先へ直接アクセスしている可能性があります。ルールと接続先をあわせて確認してください。

症状まず確認する項目次の対応
ポート接続がタイムアウトするファイアウォール、ゲストネットワーク、AP隔離、PCのアドレス端末間で通信できることを確認し、受信規則が適用されるネットワークプロファイルを確認してください。
接続が拒否されるポートが待ち受けていない、コアが終了した、アドレスのバインドに誤りがある待ち受け状態を確認し、実際の混合ポートを確認してください。
HTTP 407が返るプロキシで認証が必要端末が認証に対応しているか確認し、有効な認証情報を入力してください。
リクエストはログに表示されるが失敗するノード、ルール、PC側のDNS、上流への接続PC本体から同じ接続先にアクセスした結果と比較してください。
ブラウザーは使えるがテレビのアプリは失敗するアプリがHTTPプロキシを使わない、または通信にUDPが必要アプリのプロキシ対応を確認し、必要に応じて端末側の方法を検討してください。

pingが失敗しても、システムがICMP応答を拒否している場合があるため、それだけでプロキシに接続できないとは判断できません。反対に、pingが通っても確認できるのは一部のネットワーク接続性だけです。7890へのTCP接続もテストしてください。PC本体から同じ接続先にアクセスできない場合は、スマホ側のポートを何度も変えるのではなく、設定や上流ノードを先に修正してください。

TUN、DNS、UDP:プロキシ共有でできること・できないこと

PCでTUNを有効にしても、スマホの通信が自動的に取り込まれるわけではない

TUNは主にPCの仮想ネットワークインターフェースに入る通信を処理します。PCのクライアントでTUNを有効にしても、同じネットワーク上のスマホにプロキシが自動配布されたり、一般的なPCが他の端末のデフォルトゲートウェイになったりするわけではありません。この記事で扱う明示的なプロキシ設定では、通常TUNを有効にする必要はありません。PCのシステムプロキシ設定もLAN共有の設定とは異なり、重要なのは待ち受け口と端末側の設定です。

HTTPプロキシですべてのプロトコルを扱えるわけではない

一般的なHTTPプロキシとHTTPS CONNECTが扱うのは主にTCP接続です。ゲームのUDP通信、QUIC、画面共有の検出、LANブロードキャストまで処理できるとは限りません。SOCKS5にはUDP転送の仕組みがありますが、実際に利用できるかはアプリ、コア、ノード、ファイアウォールに左右されます。スマホのWi-Fi設定でHTTPプロキシを指定しても、SOCKS5のUDP機能が自動的に使えるようにはなりません。

DNSの処理場所はリクエスト方法によって異なる

HTTPプロキシには通常、接続先のホスト名が渡され、その後の名前解決や接続はPC側の現在の設定で処理されます。ただし、アプリがあらかじめ名前解決したり、システムのプロキシ設定を無視したりする場合もあります。SOCKS5でホスト名をプロキシに渡して名前解決するかどうかも、アプリのリクエスト方法によります。そのため、Wi-Fiプロキシを設定しただけで端末上のすべてのDNSリクエストがClashで処理されるとは限りません。

日常的に使うための設定:アドレス固定、スリープ対策、ネットワークを離れる前に解除

  • PCのアドレスを固定:再接続後に192.168.1.20から別のIPアドレスに変わらないよう、まずルーターのDHCP設定でPCのアドレスを予約してください。手動で固定IPを設定する場合は、サブネット、ゲートウェイ、アドレスの重複を確認します。
  • 電源状態を確認:ノートPCを閉じたりスリープ状態にしたりすると、通常プロキシ接続は切断されます。共有を続ける必要がある場合は、システムの電源設定を必要に応じて調整し、通気や電力消費にも注意してください。
  • 接続元を制限:既存のファイアウォールに、より広い範囲を許可するアプリ規則がないか確認してください。接続元を限定した規則を追加しても、既存の広範な規則が自動的に制限されるわけではありません。複数のネットワークアダプターがあるPCでは、特に念入りに確認してください。
  • 使用後は端末側の設定を戻す:まずスマホやテレビのプロキシを「オフ」または「なし」に戻してから、PCの共有を停止してください。設定を残すと、端末がオフラインのPCへリクエストを送り続けることがあります。

トラブルシューティングの流れは4段階にまとめられます。PC本体で通信できること、混合ポートがLANで待ち受けていること、端末からファイアウォールを越えてそのポートに接続できること、最後にアプリのリクエストに適用されたルールと接続先を確認します。この順に調べると、サブスクリプションを何度も読み込んだり、複数のネットワーク設定を同時に変更したりするより、問題を特定しやすくなります。