mixed-portとallow-lanの役割
LAN経由のプロキシ共有はシンプルです。パソコンでClash、Clash Meta、またはmihomoクライアントを起動してプロキシポートを待ち受け、スマートフォン、タブレット、テレビ側で、そのパソコンのLAN内IPv4アドレスをプロキシサーバーとして指定します。他の端末から送られたHTTPまたはSOCKSリクエストはまずパソコンに届き、パソコン上のコアが現在のルールとプロキシグループに従って処理します。
mixed-portは、HTTPプロキシとSOCKS5プロキシを同じポートで受け付ける混合プロキシポートです。たとえば7890に設定すると、手動HTTPプロキシに対応したテレビはこのポートに接続でき、SOCKS5対応アプリも同じポートを利用できます。portとsocks-portを別々に設定する方法に比べ、家庭内ネットワークで手軽に共有したい場合に向いています。
allow-lanは、本機以外からのLAN接続をコアが受け付けるかどうかを決めます。falseの場合、パソコンのブラウザが127.0.0.1:7890でプロキシを使えても、スマートフォンから192.168.1.20:7890へ接続することはできません。共有するには、待ち受けアドレス、ファイアウォール、Wi-Fiのネットワーク分離設定を合わせて確認する必要があり、1つのスイッチを変更するだけでは不十分です。
| 設定項目 | 設定例 | 実際の役割 |
|---|---|---|
mixed-port |
7890 |
1つのポートでHTTPとSOCKS5プロキシ接続を受け付ける |
allow-lan |
true |
LAN内の端末から本機のプロキシ待ち受けポートへの接続を許可する |
bind-address |
'*' |
プロキシポートを利用可能なネットワークインターフェースで待ち受け、本機のループバックアドレスだけに限定しない |
authentication |
lanuser:任意のパスワード |
プロキシポートへ接続する端末にユーザー名とパスワードの入力を求める |
Clash、Clash Meta、またはmihomoの待ち受けポートを設定する
YAML設定を直接編集する
設定の上書きに対応したクライアントでは、現在の設定またはグローバル上書きファイルに次の内容を追加できます。GUIクライアントによって項目名は多少異なりますが、一般的には「設定」→「パラメータ設定」→「LAN接続を許可」、または「設定」→「上書き」→「グローバル上書き」と進みます。変更後は設定を再読み込みするかコアを再起動してください。そうしないと、以前の待ち受け状態が維持されます。
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info
クライアントがすでにmixed-portを自動管理している場合は、メイン設定、上書きファイル、クライアントの環境設定で異なる値が書き込まれないよう、GUIのポート設定から変更するのが安全です。確認時は購読ファイルの項目だけで判断せず、クライアントのログに実際に表示されている待ち受けポートを基準にしてください。
共有ポートに認証を追加する
mihomoではauthenticationを使ってHTTPおよびSOCKSプロキシに認証を設定できます。家庭内に来客の端末がある場合や、パソコンが完全には管理できないネットワークに接続されている場合は、専用の認証情報を設定すると安心です。ユーザー名とパスワードは利用者自身で作成し、購読サイト、メール、OSアカウントのパスワードを使い回さないでください。
mixed-port: 7890
allow-lan: true
bind-address: '*'
authentication:
- "lanuser:強力なサンプルパスワードに置き換えてください"
テレビの手動プロキシ設定にユーザー名とパスワードの入力欄があるとは限りません。端末がプロキシ認証に対応していない場合は、ファイアウォールの受信元を指定したIPに限定し、たとえばスマートフォン192.168.1.35からTCP7890へのアクセスだけを許可します。ルーターで信頼できる端末に固定DHCPアドレスを割り当てる方法もあります。
パソコンのLANアドレスを確認し、待ち受けを検証する
WindowsでIPv4アドレスを確認する
Windows 11では「設定」→「ネットワークとインターネット」→「Wi-Fi」→「現在のネットワークのプロパティ」を開き、「IPv4アドレス」を確認します。PowerShellでipconfigを実行し、現在使用中の無線LANアダプターを確認する方法もあります。WSL、Hyper-V、Tailscale、仮想マシンが作成したアドレスと取り違えないでください。
ipconfig
Wireless LAN adapter WLAN:
IPv4 Address . . . . . . . . . . . : 192.168.1.20
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.1
この例で他の端末に入力するプロキシサーバーは192.168.1.20、ポートは7890です。127.0.0.1は常に端末自身を表します。スマートフォンに入力すると、スマートフォン自身の7890ポートへ接続しようとします。
macOSとLinuxでアドレスを確認する
- macOS:「システム設定」→「ネットワーク」→「Wi-Fi」→「詳細」→「TCP/IP」を開き、IPv4アドレスを確認します。
- Linuxデスクトップ:「設定」→「ネットワーク」→「現在の接続」→「詳細」を開くか、
ip -4 addressを実行します。 - アドレスは通常、
192.168.0.0/16、10.0.0.0/8、172.16.0.0/12のプライベートネットワークに含まれますが、実際に現在のネットワークから割り当てられた値を優先してください。
アドレスを確認したら、ポートが待ち受け状態か確認します。Windows PowerShellではGet-NetTCPConnection -LocalPort 7890、Linuxではss -lntp | grep 7890、macOSではlsof -nP -iTCP:7890 -sTCP:LISTENを使用できます。出力が127.0.0.1:7890だけなら、本機からの接続に限定されています。0.0.0.0:7890またはパソコンのLANアドレスが表示されて初めて、LAN接続を受け付けられる状態です。
Windows、macOS、Linuxのファイアウォールで通信を許可する
Windows Defenderファイアウォール
まず「設定」→「ネットワークとインターネット」→「Wi-Fi」→「現在のネットワーク」で、ネットワークプロファイルを「プライベート」に設定します。次に「Windows セキュリティ」→「ファイアウォールとネットワーク保護」→「詳細設定」→「受信の規則」→「新しい規則」を開き、「ポート」を選択します。プロトコルはTCP、特定のローカルポートには7890を入力し、「接続を許可する」を選択します。プロファイルは「プライベート」だけにチェックを入れてください。
管理者権限のPowerShellで、ローカルサブネットからのアクセスだけを許可するルールを作成することもできます。
New-NetFirewallRule `
-DisplayName "Clash mixed-port LAN" `
-Direction Inbound `
-Action Allow `
-Protocol TCP `
-LocalPort 7890 `
-RemoteAddress LocalSubnet `
-Profile Private
HTTPプロキシとSOCKS5の通常の接続にはTCPを使用します。クライアント、アプリ、コアのすべてがSOCKS5 UDP転送を明示的に使用する場合だけ、必要に応じてUDP7890も追加で許可してください。「ポートテストに失敗した」ことをすぐUDPの問題と判断しないでください。スマートフォンのWi-Fi設定で指定するHTTPプロキシは、まずTCP接続に依存します。
macOSとLinux
macOSのファイアウォールは、アプリ単位で受信接続を管理します。「システム設定」→「ネットワーク」→「ファイアウォール」→「オプション」を開き、使用中のClashクライアントまたはコアプロセスが受信接続を許可されていることを確認します。クライアントの更新後にコアのファイルパスが変わった場合は、許可設定を再確認してください。
UFWを使用するLinuxホストでは、接続元を現在のサブネットに限定できます。LANが192.168.1.0/24の場合:
sudo ufw allow from 192.168.1.0/24 to any port 7890 proto tcp
sudo ufw status numbered
スマートフォン、タブレット、テレビでプロキシを設定する方法
iPhoneとiPad
- 「設定」→「Wi-Fi」を開き、現在接続しているWi-Fiの右側にある情報ボタンをタップします。
- 画面下部までスクロールし、「プロキシを構成」を開いて「手動」を選択します。
- サーバーにはパソコンのLANアドレスを入力します。例:
192.168.1.20。 - ポートには
7890を入力します。認証を設定した場合は、「認証」をオンにしてユーザー名とパスワードを入力してください。 - 保存後にブラウザを再起動し、Clashクライアントの接続一覧で新しい接続を確認します。
この設定が適用されるのは現在のWi-Fiだけです。別の無線ネットワークやモバイルデータ通信に切り替えると、このパソコンのプロキシは使われません。一部のアプリはシステムのHTTPプロキシを無視し、UDPベースのプロトコルもWi-Fiの手動HTTPプロキシでは完全に処理できない場合があります。これは端末側のプロキシ方式による制限です。
Androidとテレビ端末
標準Androidでは、「設定」→「ネットワークとインターネット」→「インターネット」→「現在のWi-Fi」→「編集」→「詳細設定」→「プロキシ」→「手動」と進むのが一般的です。メーカーによっては「WLAN」→「接続済みネットワーク」→「プロキシ設定」にあります。ホスト名にはパソコンのアドレス、プロキシポートには7890を入力し、除外リストにはLAN内のドメインや内部アドレスを残しておけます。
Android TV、Google TV、一部のテレビボックスでは、通常「設定」→「ネットワークとインターネット」→「現在のWi-Fi」→「プロキシ設定」から設定します。テレビによってはHTTPプロキシのみ対応し、SOCKS5やユーザー名・パスワードには対応していません。この場合はmixed-portのHTTP機能を利用できますが、システムプロキシに従うかどうかはアプリ側の仕様によります。
| 端末側の方式 | 適した用途 | 制限 |
|---|---|---|
| Wi-Fiの手動HTTPプロキシ | ブラウザ、アプリストア、システムプロキシに従うアプリ | UDPを確実に処理できず、システムプロキシを回避するアプリもある |
| アプリ内SOCKS5 | SOCKS5を個別に指定できるダウンローダーやプレーヤー | 現在のアプリにだけ適用される |
| パソコンをゲートウェイにする | プロキシを設定できず、より多くのプロトコルを転送したい端末 | IPフォワーディング、ルーティング、NATも必要で、allow-lanを有効にするだけでは実現しない |
TUNモードだけでは他の端末と自動共有されない理由
TUNモードはClashを実行しているパソコン上に仮想ネットワークインターフェースを作成し、システムルートを通じて本機の通信を処理します。これは「本機のアプリがシステムプロキシを読み取らない」問題を解決する機能であり、パソコンをLANのデフォルトゲートウェイに変えるものではありません。スマートフォンが家庭用ルーターをデフォルトゲートウェイにしている限り、パソコンでTUNを有効にしても通信はパソコンを経由しません。
LANの手動プロキシとTUNモードは同時に利用できます。パソコン自身の通信はTUNに入り、スマートフォンは192.168.1.20:7890へ接続します。どちらの通信も最終的には同じmihomoコアで処理されますが、入口は異なります。接続画面では、LAN端末からの接続元としてスマートフォンやテレビのLAN IPが表示されることが多く、共有リクエストが実際にコアへ届いたかを確認できます。
プロキシ設定に対応していないゲーム機、テレビアプリ、IoT機器の通信をパソコン経由にしたい場合は、パソコンをゲートウェイとして構成し、IPv4フォワーディングを有効にしたうえで、NAT、ポリシールーティング、DNS転送を設定する必要があります。Windowsのモバイルホットスポット、Linuxのnftables、ソフトウェアルーターの透過ゲートウェイはいずれも別のネットワーク構成です。allow-lan: trueを追加するだけでは、他の端末のデフォルトルートは変わりません。
接続できない場合の段階別チェックリスト
第1段階:端末が相互通信可能な同一ネットワークにあるか確認する
- パソコンとスマートフォンのアドレスを確認します。例:パソコンが
192.168.1.20、スマートフォンが192.168.1.35で、サブネットマスクがどちらも255.255.255.0。 - ルーターの「AP分離」「クライアント分離」「ゲストネットワークの端末分離」を無効にします。ゲストWi-Fiでは通常、メインネットワークの端末へのアクセスが禁止されています。
- パソコンが有線LAN、Wi-Fi、仮想NICに同時接続されている場合は、スマートフォンと同じネットワークセグメントにある物理インターフェースのアドレスを使います。
- DHCPによってアドレスが再割り当てされると、スマートフォンに保存した古いプロキシアドレスは使えなくなります。ルーターでパソコンのDHCPアドレスを予約してください。
第2段階:コアが正しいインターフェースで待ち受けているか確認する
- 購読元ファイルだけでなく、
allow-lanの実行時状態を確認します。 - 実際のmixed-portが
7890であることを確認します。クライアントによって7897、7893など別のポートへ自動変更されていないかも確認してください。 - 設定を再読み込みした後にログを確認し、ポートが他のプログラムに使用されていないことを確認します。
- 待ち受けアドレスが
127.0.0.1のままなら、クライアントにYAML設定を上書きする「バインドアドレス」または「LAN接続」の独自スイッチがないか確認します。
第3段階:ファイアウォールとプロキシプロトコルを確認する
- 一度だけプロキシ認証を無効にして比較テストを行います。成功したら認証を戻し、端末が認証情報の入力に対応しているか確認してください。
- Windowsファイアウォールのルールは、現在のネットワークプロファイルと一致している必要があります。ルールが「プライベート」だけに適用され、現在の接続が「パブリック」と認識されている場合、受信接続はブロックされます。
- 端末側の手動プロキシでHTTPを選択しても、mixed-portには接続できます。ポートをコントロールポートの
9090と間違えないでください。 - Clashの接続一覧を確認します。接続元IPがまったく表示されない場合、問題は通常LANまたはファイアウォールにあります。接続は表示されるのにリクエストが失敗する場合は、ルール、DNS、ノード、プロキシグループを確認してください。
第4段階:すべて失敗しているのか、一部のアプリだけ失敗しているのか判断する
ブラウザではウェブページを開けるのに、特定の動画アプリ、ゲーム、キャスト機能だけ失敗する場合、プロキシポートとLAN経路はおそらく利用可能です。この場合はallow-lanを何度も変更するのではなく、そのアプリがQUIC、UDP、LAN内検出プロトコル、証明書ピンニングを使用していないか確認してください。手動HTTPプロキシはmDNSブロードキャストを中継せず、LAN内キャストに必要な端末検出の代わりにもなりません。
すべてのウェブサイトにアクセスできない一方で、Clashの接続一覧にリクエストが表示される場合は、適用されたルールとプロキシグループを確認します。REJECTに一致した、ノードが利用できない、購読の有効期限が切れている、ルールプロバイダーの読み込みに失敗している、といった原因はいずれも「プロキシには接続できるがページを開けない」状態になります。ログレベルを一時的にinfoへ変更し、対象ドメイン、適用ルール、出口ポリシーを記録してから対処してください。
安定した共有運用のための設定ポイント
- Clashを実行するパソコンにDHCPアドレス予約を設定します。たとえば
192.168.1.20を固定割り当てにすると、ルーター再起動後に端末側のプロキシアドレスが変わるのを防げます。 - 実際に使うmixed-portだけを開放し、ファイアウォールの接続元を
LocalSubnetまたは明示した端末IPに限定します。 - パソコンをスリープさせず、ネットワークにも接続したままにします。パソコンがスリープしたり、Wi-Fiを切り替えたり、クライアントを終了したり、コアが再起動したりすると、共有中の端末はすぐにプロキシ接続を失います。
- 設定を変更したら、まず1台のスマートフォンで確認します。その後、テレビやタブレットを1台ずつ追加し、複数端末の違いを同時に調べないようにします。
- 接続一覧で接続元アドレスと適用ルールを確認します。通常、スマートフォンからリクエストを送ると、数秒以内に対応するLAN IP、対象ドメイン、出口ポリシーが表示されます。
保守しやすい家庭内共有構成に必要な情報は、通常4つだけです。パソコンのLANアドレス、mixed-portのポート番号、アクセスを許可する端末の範囲、現在のファイアウォールルールです。まずこの4点を一致させ、その後でアプリがシステムプロキシに従うか、UDPに別の構成が必要かといった上位の問題を確認すると、切り分けを短縮できます。