Clashの混合ポートとLAN共有:同じWi-Fiのデバイスをまとめてプロキシ接続する方法

mixed-port、allow-lan、bind-addressの役割を解説し、テレビ・ゲーム機・スマートフォンのプロキシ設定とファイアウォールの許可方法を紹介します。

混合ポートが受け付けるトラフィック

mixed-port は、Clash と mihomo の設定で使用するローカルの受信ポートです。同じ TCP ポートで HTTP プロキシと SOCKS5 プロキシのプロトコルを判別します。パソコンのブラウザーは HTTP プロキシとして利用でき、SOCKS5 に対応したアプリも同じポートへ接続できます。portsocks-port を別々に管理する必要はありません。

一般的な設定では混合ポートを 7890 にします。Clash を実行しているパソコンのアドレスが 192.168.1.20 の場合、LAN内のデバイスに入力するプロキシアドレスは 192.168.1.20:7890 です。ここで指定するのは家庭内ネットワークにおけるホストの IPv4 アドレスであり、127.0.0.1 や Clash のノードサーバーのアドレスではありません。

mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info

external-controller: 127.0.0.1:9090

mixed-port、port、socks-portの違い

項目 プロトコル 主な用途
mixed-port HTTP と SOCKS5 1つのポートでスマートフォン、テレビ、デスクトップアプリに対応
port HTTP 従来型の HTTP プロキシ入口のみを提供
socks-port SOCKS5 SOCKS5 に明示対応したアプリの接続に使用

同じ設定で3つの項目すべてを 7890 にする必要はありません。1つのポートを複数のリスナーで重複して使用することはできません。複数のデバイスに対応するなら mixed-port: 7890 だけを残せば十分です。2つのプロトコルを分けて監査したい場合は、portsocks-port にそれぞれ異なるポートを指定します。

allow-lan と bind-address の実際の役割

allow-lan: true を設定すると、ほかのホストから Clash のプロキシ受信ポートへアクセスできるようになります。これは「LAN接続を受け付けるかどうか」を制御する設定です。グラフィカルクライアントで「システムプロキシ」を有効にしても、通常は現在のパソコンのシステムプロキシが変更されるだけで、テレビやスマートフォンが自動的にそのパソコン経由になるわけではありません。

bind-address は、どのネットワークアドレスで受信を待ち受けるかを指定します。'*' は利用可能なインターフェースで待ち受ける指定で、DHCP によってアドレスが変わる家庭内ネットワークに適しています。一部のクライアントでは、生成された実行用設定が同等の待ち受け方式に変換されます。特定のネットワークアダプターだけにバインドする場合は、パソコンのLANアドレス、たとえば 192.168.1.20 を指定できます。ただし、アドレスが変わったら設定も更新する必要があります。

最低限の確認チェックリスト

  1. Clash の設定で mixed-port7890 などの明確なポート番号が指定されていることを確認します。
  2. LANアクセスを有効にします。対応する設定値は allow-lan: true です。
  3. 待ち受けアドレスが 127.0.0.1 のループバックアドレスだけに限定されていないことを確認します。
  4. 設定を再読み込みするかカーネルを再起動し、変更した受信設定を反映します。
  5. ホストパソコンで ipconfigip addr を実行するかネットワーク設定を確認し、現在の IPv4 アドレスを記録します。
  6. ホストパソコンと接続先デバイスが同じ家庭内ネットワークに接続され、ルーターでクライアント分離が有効になっていないことを確認します。

まず Clash が本当にLANで待ち受けているか確認する

Windows では PowerShell で Get-NetTCPConnection -LocalPort 7890 -State Listen を実行できます。LocalAddress0.0.0.0 またはホストのLANアドレスなら、そのポートは該当インターフェースから接続を受け付けられます。127.0.0.1 だけが表示される場合、ほかのデバイスは接続できません。

Linux では ss -lntp | grep 7890、macOS では lsof -nP -iTCP:7890 -sTCP:LISTEN を実行します。切り分けでは、まず待ち受け状態を確認し、その後にファイアウォールを確認してください。クライアント画面で「LANを許可」と表示されていても、システムのファイアウォールが受信接続を許可しているとは限りません。

スマートフォン、テレビ、ゲーム機でのプロキシ設定

LAN共有の基本は手動プロキシです。接続先デバイスは従来どおり Wi-Fi から IP アドレス、ゲートウェイ、DNS を取得し、プロキシに対応したアプリのリクエストだけを Clash に渡します。ホストパソコンは電源を入れたままネットワークに接続し、Clash のカーネルを実行しておく必要があります。パソコンがスリープすると、ほかのデバイスは直ちにこのプロキシ入口を利用できなくなります。

Android と iPhone

Android の一般的な手順は「設定」→「ネットワークとインターネット」→「Wi-Fi」→接続中のネットワーク→「編集」→「詳細設定」→「プロキシ」→「手動」です。iPhone と iPad は「設定」→「Wi-Fi」→接続中のネットワーク右側にある情報ボタン→「プロキシを構成」→「手動」と進みます。サーバーにはホストパソコンのアドレス、たとえば 192.168.1.20 を入力し、ポートには 7890 を入力します。

システムレベルの Wi-Fi プロキシは主に HTTP プロキシの仕組みを使用します。多くのブラウザーやシステムのネットワーク設定に従うアプリでは有効になりますが、アプリ自身で接続したり、システムプロキシを回避したり、HTTP プロキシで扱えない UDP 通信を使ったりする場合があります。「Webページは開くのに、特定のアプリは直接接続する」という場合でも、mixed-port の設定が無効とは限りません。まず、そのアプリがシステムプロキシに従うか確認してください。

Android TV、Google TV、スマートテレビ

Android TV のメニュー名はメーカーによって異なります。一般的な手順は「設定」→「ネットワークとインターネット」→接続中の Wi-Fi→「プロキシ設定」→「手動」です。プロキシのホスト名にはパソコンのLAN IPを入力し、プロキシポートには 7890 を入力します。テレビに「ホスト名」だけの入力欄しかない場合は数字の IP をそのまま入力し、http:// を付けたり、ポート番号を同じ欄に連結したりしないでください。

テレビによっては手動プロキシの設定項目がないか、ブラウザーだけがプロキシ設定に従う場合があります。その場合、Clash の mixed-port だけでテレビ全体の通信を処理することはできません。すべてのアプリを対象にするには、透過プロキシに対応したルーターや中継ゲートウェイを使うか、対応デバイス上でクライアントを直接実行してください。

PlayStation、Nintendo Switch、その他のゲーム機

PlayStation のネットワーク設定では、カスタム接続の手順中に「プロキシサーバー」を指定できます。アドレスとポートには、ホストパソコンの IP と 7890 を入力します。Nintendo Switch は「本体設定」→「インターネット」→「インターネット設定」→接続中のネットワーク→「設定の変更」→「プロキシ設定」からサーバーとポートを設定します。

ゲーム通信には UDP、P2P 接続、厳密な NAT 検出が含まれることがよくあります。手動の HTTP プロキシでカバーできるのは、通常、アカウントログイン、ストアページ、ダウンロードAPIなどの TCP リクエストに限られ、ゲーム機全体の透過プロキシと同じではありません。オンラインマッチング、ボイスチャット、NATタイプは、HTTP プロキシを入力しただけで必ず変わるわけではありません。ゲーム機全体の TCP と UDP を転送したい場合は、mixed-port の調整を続けるのではなく、ルーター側の透過プロキシ構成を使用してください。

Windows、macOS、Linuxでファイアウォールを許可する

LAN接続がパソコンのネットワークアダプターに到達した後も、OSのファイアウォールを通過する必要があります。プロキシポートへのアクセスは家庭内サブネットだけに許可し、すべてのリモートアドレスへ無制限に公開しないことをおすすめします。以下では家庭内ネットワークを 192.168.1.0/24、混合ポートを 7890 と仮定します。

Windowsの受信ルール

Windows の画面操作は「Windows セキュリティ」→「ファイアウォールとネットワーク保護」→「詳細設定」→「受信の規則」→「新しい規則」です。「ポート」を選択し、プロトコルは TCP、特定のローカルポートには 7890 を入力します。プロファイルは現在使用している「プライベート」だけにチェックを入れます。スコープではリモート IP を家庭内サブネットに制限できます。

管理者権限の PowerShell から、サブネットを限定したルールを作成することもできます:

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

Wi-Fi が Windows に「パブリックネットワーク」として認識され、ルールが「プライベート」にしか適用されない場合、接続はブロックされます。家庭用ルーター配下では「設定」→「ネットワークとインターネット」→「Wi-Fi」→接続中のネットワークからネットワークプロファイルを確認できます。テストのためにすべてのファイアウォールを無効にするのは避け、まずルール、ポート、ネットワークの種類を確認してください。

macOS と Linux

macOS では「システム設定」→「ネットワーク」→「ファイアウォール」→「オプション」で、Clash クライアントが受信接続を許可されているか確認できます。アプリ名はクライアントによって異なり、実際にポートを待ち受けているのはクライアント本体の場合も、独立したカーネルプロセスの場合もあります。カーネルファイルを更新または交換した後、接続を許可するか再度確認を求められることがあります。

UFW を使用している Linux ホストでは、次のルールを実行すると、指定した家庭内サブネットからの TCP 7890 接続だけを許可できます:

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

システムが firewalld、nftables、またはクラウドホストのセキュリティグループを使用している場合は、実際に有効なファイアウォール層で設定し、複数のルールセットを同時に重ねないでください。家庭内LANの共有にルーターのポート転送は必要ありません。ポート転送は内部の待ち受けをルーターの外側へ公開するもので、同じ Wi-Fi 内で共有することとは別の機能です。

接続できないときのネットワーク層別チェック

ステップ1:デバイス間の到達性を確認する

スマートフォンや別のパソコンからプロキシへ接続する前に、2台のデバイスが同じサブネットにあることを確認します。たとえばホストが 192.168.1.20/24、スマートフォンが 192.168.1.36/24 なら、通常は直接通信できます。一方が 192.168.1.x、もう一方が 192.168.50.x の場合は、ゲスト Wi-Fi、Mesh の分離ネットワーク、異なる VLAN に接続していないか確認してください。

多くのルーターでは、「ゲストネットワーク」「AP分離」「無線クライアント分離」によって、Wi-Fi デバイスからLAN内ホストへのアクセスが遮断されます。この場合、デバイスはインターネットに接続できても、192.168.1.20:7890 には接続できません。2台を通常の家庭内ネットワークへ切り替えるか、ルーターで該当サブネット間の通信を許可してください。

ステップ2:ノードではなく、まずポートをテストする

別のパソコンから Test-NetConnection 192.168.1.20 -Port 7890 を実行して Windows ホストをテストできます。nc -vz 192.168.1.20 7890 も使用できます。TCP接続に失敗する場合、問題は待ち受けアドレス、ファイアウォール、またはLAN分離にあります。先にプロキシノードを変更する必要はありません。

ポートの疎通を確認できたら、コマンドラインプロキシに対応したデバイスで次を実行します:

curl -x http://192.168.1.20:7890 https://example.com/
curl --socks5-hostname 192.168.1.20:7890 https://example.com/

1つ目は mixed-port の HTTP プロキシ入口を、2つ目は SOCKS5 入口を検証します。--socks5-hostname を使うと、ドメイン名の解決を SOCKS5 プロキシ側で処理できます。ローカル DNS とプロキシ経路の問題を切り分けるのに適しています。

ステップ3:Clashのログとルールの適用結果を確認する

ポートには接続できるのに対象サイトが開かない場合は、クライアントの接続一覧やログを確認します。新しい接続がまったく表示されないなら、接続先デバイスにプロキシ設定が保存されていないか、アプリがシステムプロキシを回避している可能性があります。接続ログはあるものの最終的に DIRECT になっている場合は、現在のモードとルールの一致を確認します。プロキシグループに振り分けられた後でタイムアウトする場合は、プロキシグループの選択とノードの状態を確認してください。

  • 接続が拒否される:Clash がそのアドレスで待ち受けていないか、ポート番号が間違っています。
  • 接続がタイムアウトする:ファイアウォール、クライアント分離、またはサブネット間のルーティングによってアクセスが遮断されています。
  • ログはあるのにWebページが開かない:ルール、DNS、プロキシグループ、上流ノードを確認してください。
  • ブラウザーは正常だがアプリは失敗する:アプリがシステムプロキシを読み取らないか、主に UDP を使用している可能性があります。
  • しばらくすると使えなくなる:ホストの DHCP アドレスが変わった、パソコンがスリープした、またはクライアントの設定更新でLANアクセスが無効になった可能性があります。

長期利用時のアドレスとアクセス制御

手動プロキシはホストパソコンの IP に依存します。ルーターが毎回異なるアドレスを割り当てると、スマートフォンやテレビのプロキシ設定が無効になります。ルーターの DHCP 設定でホストパソコンのアドレスを予約し、常に 192.168.1.20 を割り当てることをおすすめします。パソコン側で固定 IP を直接設定するより、ゲートウェイ、DNS、サブネットのパラメーターを一貫して保ちやすくなります。

共有ポートは信頼できるLAN内だけで公開してください。mihomo では受信プロキシに認証を設定できます。利用者が多いネットワークや、すべてのデバイスを完全には信頼できない環境に適しています:

mixed-port: 7890
allow-lan: true
bind-address: '*'

authentication:
  - "livingroom:change-this-password"

認証を有効にすると、テレビやゲーム機にもプロキシのユーザー名とパスワードを入力する必要があります。認証に対応していないデバイスはこの入口を利用できません。家庭内では、ファイアウォールでリモートアドレスを特定のデバイスに限定することもできます。たとえば 192.168.1.36192.168.1.48 だけを許可すれば、同じサブネットにあるほかのデバイスからの接続を減らせます。

LAN共有は、スマートフォン、テレビ、少数のデバイスに一時的に HTTP と SOCKS5 プロキシを提供する用途に適しています。家中のデバイスを自動的に対象にしたい場合、プロキシ非対応アプリも処理したい場合、またはゲームの UDP 通信を扱いたい場合は、ルーターや独立したゲートウェイにプロキシ機能を配置してください。mixed-port はアプリ向けの明確なプロキシ入口であり、透過ゲートウェイではありません。ルーターの転送機能や NAT 設定の代わりにもなりません。

Clash クライアントをダウンロード 各プラットフォームのインストーラーを見る