Clashの混合ポートとLAN接続を設定する方法|スマホ・テレビでPCのプロキシを共有
Clashのmixed-portでHTTPとSOCKS5を使う方法を解説。allow-lanを有効にし、スマホやテレビからPCのプロキシに接続する手順と、ファイアウォールの設定を紹介します。
まず確認:共有するのはプロキシ接続口であり、PCのネットワーク全体ではありません
スマホやテレビからPC上のClashを利用するには、通常3つの条件が必要です。PCの混合ポートが待ち受けていること、クライアントでLAN接続が許可されていること、信頼できる機器からの接続をOSのファイアウォールが許可していることです。そのうえで、接続する機器にPCのLAN内IPアドレスとポートを設定します。PCの電源を入れ、クライアントと現在の設定を動作させ続ける必要があります。
これはPCのモバイルホットスポットを有効にしたり、ルーターのゲートウェイを変更したりすることとは別の設定です。HTTPプロキシを手動設定しても、Clashを経由するのは、そのプロキシ設定に対応したアプリの通信だけです。ゲーム通信や一部のテレビアプリ、独自のネットワーク処理を行うプログラムは、直接接続する場合があります。PCでTUNモードを有効にしても、同じWi-Fiに接続している他の機器の通信が自動的に経由するわけではありません。
この記事で使用する設定例
- PCのLAN内IPv4アドレス:
192.168.50.10。 - 家庭内ネットワークのサブネット:
192.168.50.0/24、サブネットマスク:255.255.255.0。 - Clashの混合ポート:
7890。 - スマホまたはテレビとPCを、機器間の通信が許可された同じ信頼できるLANに接続します。
ここに記載したアドレスは入力箇所を説明するための例であり、実際のネットワーク情報ではありません。以降の手順では、例のIPアドレスとサブネットを実際に確認した値に置き換えてください。ポートもクライアントの現在の設定に合わせます。一般的な初期値だけで判断しないでください。
mixed-port、allow-lan、待ち受けアドレスの役割
mixed-portは、HTTPプロキシとSOCKS5プロキシが共用する待ち受けポートです。どちらのプロトコルも同じポートに接続でき、コアが接続内容に応じてプロトコルを判別します。HTTPとSOCKS5を相互変換する機能ではなく、接続機器のすべての通信が自動的にプロキシ経由になるわけでもありません。
| 項目 | 設定内容 | この例の値 |
|---|---|---|
mixed-port |
HTTPとSOCKS5が共用する接続ポート | 7890 |
allow-lan |
LAN内からのプロキシ接続を許可するかどうか | true |
bind-address |
LAN接続を許可する場合の待ち受けアドレス | 192.168.50.10 |
mode |
コアに届いた接続を処理するルールモード | rule |
allow-lan: trueと待ち受けアドレスはセットで確認してください。ポートが127.0.0.1だけで待ち受けている場合、他の機器から接続できません。ループバックアドレスは、それを入力した機器自身を指します。スマホに127.0.0.1を設定すると、PCではなくスマホを指します。
bind-address: "*"は、複数のネットワークインターフェースを含む広い範囲で待ち受ける設定です。家庭内の固定ネットワークで使う場合は、まずPCの具体的なLAN内アドレスにバインドし、接続口を公開する範囲を絞る方法があります。PCのアドレスが変わると設定も更新する必要があるため、ルーターでPCのDHCPアドレス予約を設定しておくと便利です。
HTTPSサイトにもHTTPプロキシを利用できる
スマホの設定画面にある「HTTPプロキシ」は、通常、HTTPSサイトへの接続にも利用できます。アプリがプロキシにCONNECTリクエストを送り、トンネル経由でTLSデータを転送する仕組みです。この方法を使うために、通常は追加の証明書をインストールする必要はありません。プロキシの種類が示すのは機器とプロキシ接続口の間の通信方式であり、接続先サイトがHTTPである必要はありません。
PC側の設定:IPアドレスと待ち受けを確認する
手順1:使用中のネットワークアダプターのアドレスを確認
Windowsのターミナルでipconfigを実行し、現在接続しているWi-Fiアダプターまたはイーサネットアダプターを確認します。IPv4アドレス、サブネットマスク、デフォルトゲートウェイを控えてください。仮想ネットワークアダプター、TUNアダプター、切断済みのアダプターのアドレスを使わないように注意します。macOSでは、「システム設定」→「ネットワーク」→接続中のネットワーク→「詳細」→「TCP/IP」で確認できます。
スマホがゲスト用ネットワークに接続していると、Wi-Fi名が似ていてもPCにアクセスできない場合があります。まず両方の機器を、相互通信が許可された家庭内ネットワークに接続してください。異なるサブネット間で接続する必要がある場合は、プロキシの公開範囲をむやみに広げず、ネットワーク管理者にルーティングとアクセス制御を確認してもらいます。
手順2:混合ポートとLAN接続を設定
クライアントの設定で「混合ポート」と「LAN接続を許可」を探します。GUIクライアントによってメニュー名は異なるため、特定の画面操作をそのままなぞるより、最終的に適用される設定を確認するほうが確実です。mihomoコアを使う場合は、次のトップレベル項目を既存の設定に統合できます。既存のプロキシノード、グループ、ルールはそのまま残し、この数行でサブスクリプション全体を置き換えないでください。
mixed-port: 7890
allow-lan: true
bind-address: "192.168.50.10"
mode: rule
YAMLのインデントに注意してください。上記の4項目はすべて同じ階層に記述します。クライアントにオーバーライドや設定のマージ機能がある場合は、次回のサブスクリプション更新で変更が上書きされないよう、そこでローカル設定を保存してください。クライアントによっては、GUIのポート設定から実行時の設定を生成します。編集後に設定を再読み込みし、実際に適用された待ち受けアドレスを確認してください。
手順3:ポートが実際に待ち受けているか確認
Windows PowerShellで次のコマンドを実行し、TCPの待ち受け状態を確認します。
Get-NetTCPConnection -State Listen -LocalPort 7890 |
Select-Object LocalAddress, LocalPort, OwningProcess
192.168.50.10が表示される:この例の特定アドレスにバインドされています。0.0.0.0または::が表示される:ワイルドカードアドレスで待ち受けています。IPv4、IPv6、ファイアウォールの適用範囲を続けて確認してください。127.0.0.1だけが表示される:現状ではPC内からのみ接続できます。LAN接続の設定を確認してください。- 待ち受け結果が表示されない:クライアントが起動しているか、設定が正常に読み込まれたか、ポートが別のプロセスに使用されていないかを確認します。
ポートが使用中でも、正体の分からないプロセスをそのまま終了しないでください。まずOwningProcessを使ってプロセスを特定し、どのプログラムのポートを変更するか判断します。別のポートに変更した場合は、スマホ、テレビ、ファイアウォールのルールも更新してください。
ファイアウォールを許可:ネットワークの種類と接続元を限定
PC自身でプロキシを使えても、LAN内の機器から接続できるとは限りません。PCからループバックアドレスに接続した場合、外部からの受信接続と同じファイアウォール検査を通らないことがあるため、別途確認が必要です。まず現在のネットワークが信頼できる家庭内ネットワークであることを確かめ、該当するネットワークプロファイルを「プライベート」に設定します。プロキシ共有のために公共Wi-Fiを信頼済みネットワークに変更しないでください。
Windowsの受信規則の設定例
管理者権限でPowerShellを開き、この例の実際のアドレスに合わせてTCP受信規則を作成します。実行前にLocalAddressとRemoteAddressを確認してください。前者は受信するPCのアドレス、後者は接続元のサブネットを制限します。
New-NetFirewallRule `
-DisplayName "Clash LAN TCP 7890" `
-Direction Inbound `
-Action Allow `
-Protocol TCP `
-LocalPort 7890 `
-LocalAddress 192.168.50.10 `
-RemoteAddress 192.168.50.0/24 `
-Profile Private
この規則は、この記事のHTTPプロキシ接続テスト用であり、すべてのネットワークにポートを公開するものではありません。適用範囲の広い同種の許可規則がすでにある場合は、そちらも確認してください。範囲を絞った規則を追加しても、既存の規則が自動的に制限されるわけではありません。共有を終了したら、次のコマンドで今回作成した規則を削除できます。
Remove-NetFirewallRule -DisplayName "Clash LAN TCP 7890"
macOSでは、「システム設定」→「ネットワーク」→「ファイアウォール」→「オプション」を開き、実際にプロキシを提供しているクライアントまたはコアのプロセスに受信接続が許可されているか確認します。システムのバージョンによってメニュー名が多少異なる場合があります。ネットワークフィルタリングツールも使っている場合は、そのアクセス規則も確認してください。システムのファイアウォールだけを確認して終わりにしないでください。
スマホ・テレビ・ゲーム機にプロキシを設定
スマホ:接続中のWi-Fiに手動プロキシを設定
- PCと相互に通信できるWi-Fiに接続します。
- 接続中のネットワークの詳細設定を開き、「プロキシ」または「プロキシを設定」を選んで「手動」にします。
- 「サーバー」または「プロキシのホスト名」に
192.168.50.10を入力します。http://を付けたり、ルーターのゲートウェイを入力したりしないでください。 - 「ポート」に
7890を入力して保存し、Webページを開いて接続を確認します。
機種によっては、「設定」→「Wi-Fi」→接続中のネットワークの情報ボタン→「プロキシを設定」から開けます。他の機器では、接続中のネットワークの「ネットワークを変更」や「詳細設定」にある場合があります。この設定は通常、現在のWi-Fiに対して適用されます。モバイルデータ通信に切り替えると、このLAN内の接続先は引き継がれません。
クライアントでプロキシ認証を設定している場合は、対応するユーザー名とパスワードも入力します。認証を設定していない場合は、スマホ側で認証をむやみに有効にしないでください。認証付きの手動プロキシに対応していないアプリや機器もあるため、互換性を確認してから利用方法を決めます。
テレビ:OSとアプリの対応状況を確認
テレビで接続中のネットワークの詳細設定を開き、HTTPプロキシの項目を探します。ホスト名とポートの入力欄があれば、スマホと同じ値を入力します。ネットワーク接続時にしかプロキシを設定できないテレビもあれば、システムのプロキシ設定を無視するアプリもあります。テレビがインターネットに接続でき、ブラウザーでWebページを開けても、動画アプリがプロキシを使うとは限りません。
ネットワーク設定にIPアドレス、サブネットマスク、ゲートウェイ、DNSしか表示されず、プロキシの項目がない場合は、7890をDNSやゲートウェイの欄に入力しないでください。DNSサーバーアドレスはHTTPプロキシのアドレスとは異なります。アプリ独自のプロキシ機能を使うか、別途ゲートウェイ方式を検討してください。
ゲーム機:HTTPプロキシではゲームのUDP通信を中継できない
ゲーム機のネットワーク設定にプロキシサーバーの項目があれば、PCのIPアドレスと混合ポートを入力して試せます。ただし、影響するのはログイン、ストア、ダウンロード、システムの接続テストなど一部の通信だけかもしれません。リアルタイム対戦ではUDPがよく使われます。ストアに接続できたからといって、ゲーム通信もプロキシ経由になったとは判断できません。
SOCKS5でUDPを転送するには、アプリがUDP ASSOCIATEに対応しているか、コアの設定、ノードの対応状況、UDP用ファイアウォール規則なども関係します。この記事のTCP許可設定例は、これらの条件をカバーしていません。明確な必要性がないままUDPを追加で許可しないでください。「allow-lanを有効にする」だけでゲーム通信全体を中継できるわけではありません。
接続を検証:ポートへの到達、リクエスト、ルールの適用
ノードを何度も切り替えるより、段階ごとに確認するほうが原因を特定しやすくなります。まずPC自身からそのポート経由で接続先にアクセスできることを確認し、次に別の機器からプロキシ接続口に到達できるか、最後にルールとノードを確認します。一度に変更する条件は1つに絞り、変更前後の結果を記録してください。
- PCの外向き通信を確認。現在のノードを使い、アクセス可能と分かっているHTTPSページを開きます。PC自身でも接続できない場合は、サブスクリプション、ノード、ルールを先に修正し、スマホの設定には進まないでください。
- LAN内からポートに接続できるか確認。別のWindows PCを使える場合は、
Test-NetConnection 192.168.50.10 -Port 7890を実行し、TcpTestSucceededを確認します。成功しても、確認できるのはTCP接続口に到達できたことだけで、ノードの動作までは保証されません。 - プロキシ経由のリクエストを確認。curlを使える別の機器から、次のコマンドを実行してHTTPプロキシを明示的に指定します。
- 接続ログを確認。クライアントの接続パネルで、接続元機器のIPアドレス、接続先ドメイン、適用ルール、最終的なポリシーが表示されているか確認します。
curl --proxy http://192.168.50.10:7890 --connect-timeout 10 --max-time 20 -I https://clash67.com/
ここでの10と20はテスト時のタイムアウトで、単位は秒です。予想される遅延時間や性能を示す値ではありません。サイトからHTTPレスポンスが返れば、リクエストが応答段階まで到達したことを示します。ステータスコードは接続先サイトの状態にも左右されます。プロキシ認証エラーが返った場合は、ポートの公開範囲を広げず、認証情報を確認してください。
ルールモードでは、スマホやテレビから届いた接続も、PCで現在有効な設定に従って振り分けられます。DIRECTと表示されても、ルールが直接接続を選んでいるだけの場合があり、LANプロキシが動作していないとは限りません。SOCKS5で試す場合、socks5h://192.168.50.10:7890を指定すると、curlはドメイン名の名前解決をプロキシに任せます。通常のsocks5://では名前解決の場所が異なるため、DNSの問題を調べる際は区別してください。
よくあるトラブル:症状から原因を絞り込む
| 症状 | まず確認する項目 | 次に行うこと |
|---|---|---|
| PCでは使えるが、スマホがタイムアウトする | 待ち受けアドレス、ファイアウォール、Wi-Fiの端末間分離 | まずTCPの7890番ポートをテストし、次に接続ログを確認 |
| ブラウザーでは使えるが、テレビのアプリでは使えない | アプリがHTTPプロキシに対応しているか | 接続に失敗したとき、コアにリクエストが届いているか確認 |
| ルーターを再起動したら接続できなくなった | PCのDHCPアドレスが変わっていないか | アドレスを更新し、DHCPアドレス予約を設定 |
| 接続ログはあるが、接続先を開けない | ルール、ポリシーグループ、ノード、名前解決 | 適用されたルールと、実際に選択されたノードを確認 |
| PCがスリープするとすべて切断される | PCの電源状態とネットワーク接続 | PCを起動し、必要に応じて電源接続時のスリープ設定を調整 |
外部コントローラーポートを開放する必要はありますか?
必要ありません。スマホからプロキシを使う場合は、混合ポートだけで接続できます。external-controllerは管理用インターフェースで、機器が使うプロキシ接続口とは異なります。LAN共有のために、ついでに公開しないでください。管理インターフェースはローカルアドレスへのバインドを維持し、クライアントが要求するアクセスキーを設定してください。
TUNを有効にしたり、スマホのDNSを変更したりする必要はありますか?
手動HTTPプロキシを使うだけなら、PCでTUNを有効にする必要はなく、通常はスマホのDNSを先に変更する必要もありません。プロキシに届いたドメイン名の名前解決方法は、プロトコルとコアの設定によって異なります。プロキシを経由しないアプリは、独自に名前解決する場合があります。まずプロキシを明示したリクエストで確認し、その後にDNSの問題があるか判断してください。
共有を終了した後、設定を元に戻すには?
まずスマホとテレビのプロキシ設定を「なし」に戻すか、手動プロキシを無効にします。次にクライアントのLAN接続を無効にし、一時的に作成した許可ルールを削除します。設定を戻さないままPCの電源を切ると、機器がオフラインのプロキシ接続先に接続しようとし続け、Wi-FiにはつながっているのにWebページを開けないことがあります。
最後に、PCの固定アドレス、混合ポート、許可したサブネット、プロキシを使う機器を簡単に記録しておきましょう。クライアントやサブスクリプションを更新した後は、待ち受け状態とルールを確認すれば十分です。ネットワークの許可範囲を再び広げる必要はありません。サブスクリプションの追加やルールの基本を知りたい場合は、Clash設定入門ガイドもご覧ください。