Clashの混合ポートとLAN接続の設定方法|同じネットワーク内の端末でプロキシを共有

mixed-portとallow-lanの役割、スマホ・タブレット・テレビからPCのLANアドレスで接続する方法、ファイアウォールの設定を解説します。

1. 利用シーン:LAN内の端末からPCのプロキシポートに接続する

スマホ、タブレット、テレビにプロキシクライアントをインストールしにくい場合は、同じLAN内のPCをHTTPプロキシとして利用できます。Clashまたはmihomoカーネルを使うクライアントをPCで起動し、ほかの端末のWi-Fi設定にPCのアドレスと混合ポートを入力します。通信はPCに届いた後、PCで動作中の設定、ルール、プロキシグループに従って直接接続またはプロキシ接続されます。

PCが自動的にルーターになるわけではありません。「LAN接続を許可」を有効にしても、ほかの端末からプロキシの待ち受けポートに接続できるようになるだけです。スマホのゲートウェイは変更されず、すべてのアプリが自動的にプロキシを使うわけでもありません。端末全体の通信を制御したい場合や、UDP転送、システムプロキシに従わないアプリへの対応が必要な場合は、このスイッチを何度も切り替えるのではなく、端末用クライアント、ゲートウェイ方式、TUNを検討してください。

  • 適した用途:家庭内ネットワークでのスマホのブラウジング、タブレットでのウェブ閲覧、手動HTTPプロキシに対応したテレビアプリ。
  • 前提条件:PCと接続先の端末が相互に通信でき、PCの電源が入っていて、プロキシカーネルが正常に動作していること。
  • そのまま適用できないケース:ホテルやゲスト用Wi-Fi、端末間通信が遮断された公衆ネットワーク、すべてのゲーム通信を一括転送したい場合。

2. 各設定項目の違い:mixed-port、allow-lan、bind-address

設定項目役割この記事の例
mixed-port1つのポートでHTTPとSOCKSのプロキシリクエストを受け付ける7890
allow-lanLAN内の端末からプロキシの待ち受け先への接続を許可するtrue
bind-addressLAN接続を許可する場合に待ち受けアドレスを指定する192.168.1.10
modeルール、グローバル、DIRECTのいずれで通信を処理するかを決めるrule

mixed-port の「混合」とは、複数のプロキシプロトコルを受け付けることを指し、複数のノード回線を束ねる意味ではありません。スマホのWi-Fi設定でHTTPプロキシを指定する場合も、このポートに接続できます。HTTPSサイトには通常、HTTP CONNECTでトンネルを確立するため、別途「HTTPSポート」を設定する必要はありません。

allow-lan: true と待ち受けアドレスはセットで確認してください。PC本体からの接続に限定された 127.0.0.1 は、スマホの接続先には使えません。スマホ上の 127.0.0.1 はスマホ自身を指します。bind-address: "*" は通常、すべてのインターフェースで待ち受ける設定ですが、接続可能な範囲が広がります。家庭内での共有だけなら、PCが現在使っているLAN内IPv4アドレスにバインドし、ファイアウォールで接続元を制限できます。

管理用の external-controller と混合ポートは別のものです。スマホからプロキシを使う際にコントローラーへ接続する必要はなく、管理ポートをネットワーク全体に公開する必要もありません。Wi-Fiのプロキシポート欄に、パネルのアドレスや一般的な管理ポート 9090 を入力しないでください。

3. PC側の設定:アドレスを確認してから待ち受けを許可する

1. 現在使用中のLAN内IPv4アドレスを確認する

Windowsではターミナルを開いて ipconfig を実行し、現在接続中の「ワイヤレス LAN アダプター WLAN」またはイーサネットアダプターを確認します。IPv4アドレス、サブネットマスク、デフォルトゲートウェイを控え、未接続のネットワークアダプター、仮想マシン用アダプター、TUN仮想アダプターは除外します。macOSでは「システム設定」→「ネットワーク」→接続中のネットワーク→「詳細」→「TCP/IP」で確認できます。

たとえば、PCが 192.168.1.10、スマホが 192.168.1.25 で、どちらもサブネットマスクが 255.255.255.0 なら、通常は同じサブネットです。ただし、ルーターのゲストネットワーク隔離によって接続できない場合があります。PCを有線、スマホをWi-Fiで接続して共有することもできます。重要なのは、ルーターが両者間の通信を許可していることであり、同じWi-Fi周波数帯を使うことではありません。

2. 混合ポートとLAN接続を設定する

クライアントの設定で「混合ポート」または「Mixed Port」を探し、現在の値を控えてから「LAN接続を許可」または「Allow LAN」を有効にします。クライアントによってメニュー名は異なり、カーネル設定やオーバーライド設定に項目がある場合もあります。サブスクリプションファイルの記述だけで判断せず、最終的に適用された設定と実際の待ち受け状態を確認してください。

次は既存設定のトップレベルに追加できるネットワーク設定の例です。完全なサブスクリプションではありません。既存の proxies、proxy-groups、rules は残してください。この部分でファイル全体を上書きしたり、同じトップレベル項目を重複して定義したりしないでください。

mixed-port: 7890
allow-lan: true
bind-address: "192.168.1.10"
mode: rule

設定を保存して適用します。カーネルの再起動を求められたら、再起動してください。GUIクライアントが実行用設定を生成する場合は、サブスクリプション更新後に変更が消えないよう、クライアントの永続化されたオーバーライド機能を使います。特定のアドレスにバインドした後でPCの接続先ネットワークが変わったり、DHCPで割り当てられたアドレスが変わったりすると、待ち受けに失敗することがあります。その場合は設定も更新してください。

3. ポートが実際に待ち受けているか確認する

Windows PowerShellで次のコマンドを実行します。LocalPort が 7890 で、LocalAddress が指定したLAN内アドレス、またはそのアドレスを含む待ち受け先になっていることを確認します。127.0.0.1 だけが表示される場合、LAN内の端末からは接続できません。

Get-NetTCPConnection -State Listen -LocalPort 7890 |
  Select-Object LocalAddress, LocalPort, OwningProcess

結果が表示されない場合は、設定の適用失敗、ポートの競合、カーネルの停止を確認してください。ほかのプログラムがそのポートを使っている可能性もあるため、ポート番号だけでClashが起動しているとは判断できません。LAN内アドレスにバインドした後も、PCのシステムプロキシが 127.0.0.1:7890 を参照している場合は、互換性を確認してください。ループバックとLANの両方で待ち受ける必要がある場合は、全インターフェースで待ち受け、ファイアウォールで接続元を厳しく制限します。

4. ファイアウォールの許可:ポート、アドレス、信頼できるネットワークを限定する

待ち受けが成功しても、ほかの端末から接続できるとは限りません。PCのファイアウォールが受信接続をブロックしている場合があります。家庭内ネットワークは信頼できるプライベートネットワークとして設定できますが、共有のために公衆Wi-Fiを安易にプライベートネットワークへ変更したり、ファイアウォール全体を無効にしたりしないでください。

Windows:ローカルサブネットに限定したTCP受信ルールを追加する

現在のネットワークがプライベートネットワークであることを確認し、管理者としてPowerShellを開きます。以下のルールでは、192.168.1.0/24 からPCの 192.168.1.10 にあるTCP 7890 ポートへの接続だけを許可します。この記事で扱うHTTPプロキシのテスト用ルールです。

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

共有を停止するときは、このルールを削除します。

Remove-NetFirewallRule -DisplayName "Clash LAN TCP 7890"

PCに広い範囲を許可する既存のアプリ用ルールがある場合は、古いルールによって接続可能な範囲が広がっていないかも確認してください。上記の範囲を絞ったルールを追加しても、ほかの広範囲な許可ルールは自動で解除されません。また、TCPを許可しても、スマホのゲームなどのUDP通信に対応するわけではありません。

macOS・Linux:実際にプロキシを提供するプロセスを確認する

  • macOS:「システム設定」→「ネットワーク」→「ファイアウォール」→「オプション」で、クライアントまたはカーネルプロセスの受信接続が許可されているか確認します。「すべての受信接続をブロック」が有効な場合は、その影響を確認してください。クライアント側のスイッチだけを何度も切り替えないでください。
  • Linux:UFWを使っていて有効になっている場合は、実際のサブネットに限定したルールを追加できます。ほかのファイアウォールツールでも、同じく必要最小限の範囲に限定してください。内容が把握できていないルールを複数重ねないようにしましょう。
sudo ufw allow proto tcp from 192.168.1.0/24 to 192.168.1.10 port 7890

5. スマホ・タブレット・テレビでの設定方法

iPhone・iPad:接続中のWi-FiにHTTPプロキシを設定する

  1. 「設定」→「Wi-Fi」を開き、接続中のネットワークの右側にある情報ボタンをタップします。
  2. 「プロキシを構成」を開き、「手動」を選択します。
  3. 「サーバ」に 192.168.1.10、「ポート」に 7890 を入力します。サーバ欄に http:// を付けたり、ポート番号を続けて入力したりしないでください。
  4. この記事の基本設定ではプロキシ認証を有効にしていないため、「認証」はオフにします。保存したらブラウザーを開き直してテストしてください。

この設定は現在のWi-Fiに適用され、モバイル通信や別のWi-Fiネットワークには自動で引き継がれません。PCの電源が切れると、このプロキシ設定を使うアプリはインターネットに接続できない場合があります。共有をやめたら、「プロキシを構成」を「オフ」に戻してください。

Android:接続中のネットワークのプロキシ設定を変更する

一般的な手順は、「設定」→「ネットワークとインターネット」→「インターネット」→接続中のWi-Fi→編集→「詳細設定」→「プロキシ」→「手動」です。メーカー独自のシステムでは、「Wi-Fi」→接続中のネットワークの詳細に項目がある場合もあります。ホスト名に 192.168.1.10、ポートに 7890 を入力します。特別な理由がなければ、プロキシを使用しないホストの一覧は初期設定のままにしてください。

プロキシ設定に合わせて、IPアドレスの取得方法を固定IPに変更しないでください。IPアドレスの取得方法とプロキシ設定は別の項目です。ゲートウェイやDNSを安易に変更すると、別の問題が発生するおそれがあります。AndroidアプリがWi-Fiプロキシを使うかどうかは、アプリのネットワーク実装によって異なります。ブラウザーで接続できても、すべてのアプリが同じ経路を使うとは限りません。

テレビ:手動HTTPプロキシに対応しているか確認する

一部のAndroid TVやGoogle TV端末では、「設定」→「ネットワークとインターネット」→接続中のネットワーク→「プロキシ設定」で「手動」を選び、同じアドレスとポートを入力できます。この設定項目がない場合や、対象アプリがシステムプロキシを使わない場合は、そのアプリにはこの方法を適用できません。PCのアドレスをテレビのDNS欄に入力しないでください。DNSとプロキシは別の機能です。

6. 接続確認:ポート、リクエスト、ルールの順に確認する

まず別のPCからテストすると、ネットワークの到達性とスマホアプリの互換性を切り分けやすくなります。Windows PowerShellでのポートテストで確認できるのはTCP接続の確立までで、ノードが使えることを示すものではありません。

Test-NetConnection 192.168.1.10 -Port 7890

TcpTestSucceeded: True はTCP接続に成功したことを示します。次に、プロキシを明示してリクエストを送信します。Windowsでは、古いPowerShellで同名のエイリアスによる引数解析の影響を避けるため、curl.exe を使ってください。

curl.exe --proxy http://192.168.1.10:7890 --connect-timeout 5 --max-time 15 -I https://example.com/

macOSまたはLinuxでは、curl.exe を curl に置き換えます。接続先サイトのレスポンスヘッダーが返ってきたら、PCのクライアントの接続ログを確認し、対象ドメイン、適用されたルール、実際の接続先を確認してください。HTTP CONNECTの成功表示はトンネルが確立したことを示すだけです。その後のTLS接続や接続先サイトからの応答も確認してください。

症状まず確認する項目判断の目安
接続がすぐに拒否されるカーネル、待ち受けアドレス、ポート番号対応するプロセスが待ち受けていないか、端末側で接続が拒否されています
待機後にタイムアウトするファイアウォール、ゲストネットワークの隔離、PCのスリープリクエストが破棄されているか、接続先の端末に到達できません
HTTP 407が返るプロキシ認証の設定ポートには接続できていますが、プロキシ認証に失敗しています
接続できるが接続先サイトが表示されないノードの状態、DNS、ルール、ログLAN内の接続口には到達しています。続けてプロキシ接続の先を確認してください
ブラウザーは正常だが、ほかのアプリは失敗するアプリがHTTPプロキシを使用するかこの症状だけで、さらにポートを開放する必要があるとは判断できません

すべてのリクエストが直接接続される場合は、まずDIRECTモードになっていないか確認し、次にルールの順序とプロキシグループの選択を確認してください。LAN接続を許可しても、ルールモードが自動でグローバルプロキシに切り替わることはありません。ドメイン名の解決についても、実際のリクエスト経路に沿って確認してください。HTTP CONNECTでは接続先ドメインをプロキシ側に渡せますが、アプリがローカルで別途DNS問い合わせを行う場合もあります。手動プロキシを設定したからといって、すべてのDNS通信がPC経由になるわけではありません。

7. セキュリティ上の注意点と継続利用時の確認

家庭内LANでも接続範囲を制限してください。すべてのインターフェースで待ち受けると、PCのほかのネットワークアダプターでも同じポートが公開される可能性があります。VPNや仮想ネットワークに接続した後は、接続元の制限を再確認してください。この方法ではルーターに外部向けポート転送を設定する必要はありません。7890 や管理インターフェースをインターネットに公開しないでください。

  • PCのアドレスを固定する:PCの再接続後にアドレスが変わり、スマホが古いアドレスを参照し続けないよう、ルーターでDHCPアドレス予約を設定する方法がおすすめです。
  • 必要に応じて認証を使う:Clash系カーネルでは authentication でHTTP/SOCKS認証を設定できますが、認証への対応状況は端末によって異なります。有効にした場合は各端末にも認証情報を入力し、HTTP 407などの応答で動作を確認してください。認証はファイアウォールの代わりにはなりません。
  • 管理インターフェースを分離する:プロキシ共有にリモート管理は必要ありません。管理インターフェースへのアクセスは必要な端末だけに限定し、認証とファイアウォールのルールは別途管理してください。
  • 更新後に再確認する:サブスクリプションの更新、クライアントのアップデート、ネットワークの切り替え後に、混合ポート、LAN接続の許可、バインドアドレス、実際の設定が一致しているか確認してください。
  • 使い終わったら設定を戻す:まずスマホやテレビの手動プロキシをオフにし、その後PCのLAN共有と関連するファイアウォールの許可を無効にします。すでに使えない接続先へ端末がアクセスし続けるのを防げます。