mixed-port 7890とLAN接続許可の設定方法|スマホ・テレビでPCのClashプロキシを使う
mixed-portとHTTP/SOCKSポートの違い、LAN接続を許可してスマホ・テレビ・ゲーム機にプロキシを設定する方法、ファイアウォールの注意点を解説。
スマホやテレビからPCのプロキシを使うには、PCのプロキシポートでLAN接続を受け付けること、ファイアウォールで接続先デバイスからの通信を許可すること、デバイス側にPCのLANアドレスを設定することの3点が必要です。PCで「システムプロキシ」を有効にしただけでは、同じWi-Fiにつながった他のデバイスの通信経路は変わりません。
ここではPCのアドレスを192.168.1.20、mixed-portを7890として説明します。これらは設定例であり、実測値ではありません。実際にはPCで現在使われているLAN側のIPv4アドレスを指定してください。mihomoコアを使うクライアントでは、以下の設定項目を確認できます。ClashXなどのクライアントは、バージョンによってメニュー名や利用できる機能が異なります。
1. mixed-port 7890で受け付ける接続
mixed-portは、HTTPとSOCKSで共用する待ち受けポートです。接続内容に応じてプロキシプロトコルが判別されるため、スマホのシステム設定ではHTTPプロキシ、コマンドラインではSOCKS5を選び、同じ7890ポートに接続できます。ポート番号だけでプロトコルや、最終的に使われるノードが決まるわけではありません。
| 設定項目 | 対応プロトコル | 用途 |
|---|---|---|
mixed-port: 7890 | HTTP/SOCKS | 複数のデバイスで1つのプロキシポートを共用 |
port: 7890 | HTTPプロキシ | システムのWi-Fiプロキシ、HTTP CONNECT |
socks-port: 7891 | SOCKSプロキシ | SOCKS5対応アプリ |
external-controller | コントロール用インターフェース | 管理パネル用。デバイスの通信ポートではない |
上の表は設定方法ごとの違いを示したもので、すべてのポートを有効にする必要はありません。portとmixed-portで、同じ待ち受けアドレスの7890を取り合わないようにしてください。mixed-portを使う場合、通常はHTTP用ポートを別途設定する必要はありません。
2. PCのアドレス・待ち受けアドレス・LAN接続許可を確認する
実際に使っているネットワークアダプターを確認
- Windowsではターミナルを開き、
ipconfigを実行して、現在接続中のWi-FiまたはイーサネットアダプターのIPv4アドレスとサブネットマスクを確認します。仮想アダプター、TUNアダプター、切断中のアダプターのアドレスは使わないでください。 - macOSでは「システム設定」→「ネットワーク」→接続中のネットワーク→「詳細」→「TCP/IP」の順に開き、IPアドレスを確認します。
- スマホとPCが相互に通信できるLANに接続されていることを確認してください。PCを有線LAN、スマホをWi-Fiに接続しても構いませんが、ルーターの設定で別々のゲストネットワークに分離されていない必要があります。
- 継続して共有する場合は、ルーターのDHCPアドレス予約でPCのIPアドレスを固定してください。PCの再接続後にアドレスが変わると、スマホに保存したプロキシサーバーの設定が使えなくなることがあります。
設定を実行中のコアに反映する
クライアントの設定で「LAN接続を許可」または「Allow LAN」を探し、mixed-portも確認します。設定画面の場所はクライアントによって異なるため、実際に動作している設定とポートの待ち受け状態を確認してください。以下は既存設定のトップレベルに追加できるmihomoの設定例です。ノードやルールを含む完全なサブスクリプション設定ではありません。
mixed-port: 7890
allow-lan: true
bind-address: 192.168.1.20
mode: rule
allow-lan: trueはLANからの接続を許可し、bind-addressは待ち受けアドレスを指定します。この例ではPCの192.168.1.20だけを待ち受け先にしています。アドレスが変わった場合は、設定も更新してください。クライアントによってはこれらの項目を自動生成します。サブスクリプションの設定ファイルを直接編集すると更新時に上書きされることがあるため、クライアントの保存可能な設定やオーバーライド機能を使い、再読み込み後に設定を確認してください。
クライアントがbind-address: "*"しか使えない場合は、すべてのインターフェースで待ち受ける設定です。接続元はファイアウォールで制限してください。「すべてのインターフェース」は「自宅のWi-Fiからのみ接続可能」という意味ではありません。PCのほかのネットワークインターフェースからも接続される可能性があります。
ここで必要なのはプロキシの待ち受け設定であり、TUNを有効にする必要はありません。mode: ruleは、LAN内のデバイスから受け取ったリクエストにも現在のルールを適用する設定です。すべてのリクエストが自動的に同じプロキシノードを使うわけではありません。該当するルールのポリシーグループと、選択中のノードが利用可能かを確認してください。
3. ファイアウォールで必要な接続元だけを許可する
「LAN接続を許可」とOSのファイアウォールは、それぞれ独立した制御です。コアが待ち受けていても、WindowsやmacOSが受信接続を許可するとは限りません。まず家庭内ネットワークが信頼できることを確認し、必要最小限のルールを設定してください。問題の切り分けに、ファイアウォールを常時無効にする方法は使わないでください。
Windows:プライベートネットワーク・TCP 7890・接続元の範囲を指定
「Windows セキュリティ」→「ファイアウォールとネットワーク保護」→「詳細設定」→「受信の規則」を開き、ポート規則を作成して「スコープ」でリモートIPアドレスを制限します。管理者として起動したPowerShellで、以下の例を実行する方法もあります。
New-NetFirewallRule -DisplayName "mihomo LAN TCP 7890" `
-Direction Inbound -Action Allow -Protocol TCP `
-LocalAddress 192.168.1.20 -LocalPort 7890 `
-RemoteAddress 192.168.1.0/24 -Profile Private
ここで指定している192.168.1.0/24は、この家庭内ネットワークに限った例です。スマホ1台だけに許可する場合は、リモートアドレスをスマホの固定IPに変更し、範囲をさらに絞れます。ネットワークプロファイルが実際に「プライベート」である場合にのみ、規則が想定どおりに適用されます。この規則を使うために、ホテルや公共のWi-Fiをプライベートネットワークに変更しないでください。
この記事で説明するHTTP共有ではTCPを使用します。SOCKS5でUDPを転送するには、アプリの対応状況、コアの設定、UDP用ファイアウォール規則も関係します。すべてのポートをむやみに開放して解決しようとしないでください。共有を停止したら、以下のコマンドでこの例の規則を削除できます。
Remove-NetFirewallRule -DisplayName "mihomo LAN TCP 7890"
macOS:接続を受け付けるアプリを許可する
「システム設定」→「ネットワーク」→「ファイアウォール」→「オプション」を開き、実際に動作しているクライアントまたはコアのプログラムが受信接続を許可されているか確認します。「すべての受信接続をブロック」が有効な場合は、共有に必要な通信と競合しないか確認してください。サードパーティ製のセキュリティソフトに、独自のネットワークフィルタールールがある場合もあります。
4. スマホ・テレビ・ゲーム機にプロキシを設定する
接続先デバイスに設定するのは「PCのLAN IPアドレス+プロキシポート」です。ノードサーバーのアドレスやサブスクリプションURLではありません。以下ではサーバーを192.168.1.20、ポートを7890とします。サーバー欄には通常IPアドレスだけを入力し、http://を付けたり、ポート番号を同じ欄に入力したりしないでください。
iPhone・iPad:接続中のWi-Fiに手動でプロキシを設定
- 「設定」→「Wi-Fi」を開き、接続中のネットワークの右側にある情報ボタンをタップします。
- 「プロキシを構成」→「手動」の順に選択します。
- サーバーに
192.168.1.20、ポートに7890を入力して保存します。 - コアで認証を設定していない場合は、「認証」をオフにします。認証を設定している場合は、コアと同じユーザー名とパスワードを入力してください。
- ブラウザーでHTTPSページを開き、PCのクライアントに接続やログの記録が表示されるか確認します。
この設定は接続中のWi-Fiにのみ適用され、モバイル通信には自動で適用されません。システムのHTTPプロキシを使わないアプリもあるため、ブラウザーで接続できても、すべてのアプリがPC経由になるとは限りません。使い終わったら「プロキシを構成」を「オフ」に戻してください。PCがスリープした後もスマホが接続を試み続けるのを防げます。
Android:接続中のネットワークのプロキシを編集
PixelのAndroid 14を例にすると、「設定」→「ネットワークとインターネット」→「インターネット」→接続中のWi-Fiの設定ボタン→「ネットワークを編集」→「詳細設定」→「プロキシ」→「手動」の順に進みます。ほかのメーカーでは「ネットワークを変更」や「詳細設定」内に項目がある場合があります。
- プロキシのホスト名:
192.168.1.20。 - プロキシのポート:
7890。 - プロキシを使用しないアドレス:最初のテストでは初期設定のままにし、接続を確認してからローカルサービスの例外を追加します。
AndroidのシステムWi-Fiプロキシも、すべての通信を透過的に中継する機能ではありません。独自に接続を行い、システムプロキシを参照しないアプリは、直接接続することがあります。システム画面に認証情報の入力欄がなく、コア側で認証が必要な場合、その画面からは接続できない可能性があります。その場合も、共有ネットワークで必要なアクセス制限を安易に解除しないでください。
テレビ・ゲーム機:HTTPプロキシに対応しているか確認
テレビのネットワーク設定は機種によって異なります。接続中のネットワークの詳細設定に「プロキシサーバー」と「ポート」の入力欄がある場合のみ、上記の値を設定してください。該当する項目がないテレビは、PCでAllow LANを有効にしただけではプロキシを利用できません。対応クライアントを使うか、ルーター側で通信を振り分ける方法を検討してください。
PS5の場合、「設定」→「ネットワーク」→「設定」→「インターネット接続を設定」の順に開き、登録済みネットワークを選択して「詳細設定」に進み、「プロキシサーバー」を確認します。HTTPプロキシを入力できても、ゲームのリアルタイム通信、ボイスチャット、すべてのダウンロードがプロキシ経由になるとは限りません。PCの接続記録も確認してください。
5. 「待ち受け→到達性→プロキシ→ルール」の順にトラブルを切り分ける
手順1:ループバックアドレスだけで待ち受けていないか確認
WindowsのPowerShellで実行:
Get-NetTCPConnection -State Listen -LocalPort 7890 |
Select-Object LocalAddress, LocalPort, OwningProcess
macOSのターミナルで実行:
lsof -nP -iTCP:7890 -sTCP:LISTEN
結果が127.0.0.1:7890だけの場合、LAN内のデバイスからPCのWi-Fiアドレス経由で接続できません。この記事の例のように設定すると、192.168.1.20:7890で待ち受けていることを確認できます。結果が何も表示されない場合は、コアが起動しているか、設定の再読み込みに失敗していないか、ほかのプログラムがポートを使用していないか確認してください。
手順2:別のデバイスからTCP接続とプロキシリクエストをテスト
LAN内に別のWindows PCがある場合は、以下のコマンドでポートをテストできます。必ず別のデバイスから実行してください。PC自身からのテストでは、Wi-Fiの端末間通信の遮断や受信ファイアウォールの問題を確認できません。
Test-NetConnection 192.168.1.20 -Port 7890
TcpTestSucceededがTrueでも、確認できるのはTCP接続が確立したことだけです。プロキシプロトコルや外向きのノードが正常とは限りません。続けてプロキシに対応したcurlでテストします。Windows PowerShellではcurl.exeを明示して実行できます。
curl --proxy http://192.168.1.20:7890 --connect-timeout 5 --max-time 20 -I https://example.com/
curl --socks5-hostname 192.168.1.20:7890 --connect-timeout 5 --max-time 20 -I https://example.com/
2つ目のコマンドはSOCKS5経由で接続先ドメイン名を渡し、名前解決をプロキシ側で行います。これにより、ローカル側で名前解決する経路と区別できます。コマンド内の接続タイムアウト5秒、全体のタイムアウト20秒はトラブルシューティング用の設定であり、遅延の測定結果ではありません。2つのコマンドでmixed-portのHTTP経路とSOCKS経路を個別に確認できます。デバイスで両方のプロキシを同時に設定する必要はありません。
手順3:症状から原因を絞り込む
| 症状 | まず確認する項目 | 対処方法 |
|---|---|---|
| 接続がタイムアウトし、PCにリクエストの記録がない | ファイアウォール、ゲストネットワーク、AP隔離、IPアドレス | デバイス同士の通信とTCP 7890への接続を確認 |
| すぐに接続拒否と表示される | ポートが待ち受けていない、または入力したポートが違う | 実行中の設定と待ち受けアドレスを確認 |
| HTTP 407が返る | プロキシ認証 | コア側の認証設定とデバイスの認証情報を確認 |
| リクエストの記録はあるが、Webサイトを開けない | ポリシーグループ、ノード、DNS、ルール | 該当リクエストの適用ルールと外向き接続のエラーを確認 |
| ブラウザーでは使えるが、特定のアプリでは使えない | アプリがシステムプロキシに従うか | アプリ独自のプロキシ設定と通信プロトコルを確認 |
| PCのスリープ解除後や再接続後に使えなくなる | PCのアドレス変更、コアの停止 | DHCPアドレスを固定し、待ち受け状態を再確認 |
IPアドレスへの接続テストは正常なのに、ドメイン名でのリクエストだけ失敗する場合は、mihomoコアのDNS設定とログを確認してください。スマホのDNSサーバーを安易にPCのアドレスへ変更しないでください。mixed-portはDNSサーバーではありません。7890で待ち受けていても、PCがポート53でDNSを提供しているとは限りません。
6. 長期間共有する場合の注意点と終了時の設定
LANプロキシを使うには、PCが継続してネットワークに接続され、コアが動作し、IPアドレスが変わらないことが必要です。テレビで長期間利用する場合は、画面をオフにした後にPC全体がスリープしないよう、電源とスリープの設定を確認してください。サブスクリプションの更新やクライアントのアップグレード後は、LAN接続の許可、mixed-port、オーバーライド設定が引き続き有効か確認してください。
- ルールの適用範囲:スマホからのリクエストはPCに届いた後、PCで現在有効なルールに従って振り分けられます。PC上のアプリのプロセス名で、スマホのアプリを判別するルールはそのまま適用できません。通常のLANプロキシのリクエストには、スマホ側のローカルなプロセス情報が含まれないためです。
- TUNの適用範囲:PCでTUNを有効にしても、スマホが自動的にその下流デバイスになるわけではありません。通信を透過的に中継するには、ゲートウェイ、ルーティング、DNS、転送の設定も必要です。手動でHTTPプロキシを設定する方法とは異なります。
- セキュリティ上の注意:信頼できるネットワーク内で接続元を制限してください。共有ネットワークではmihomoの
authentication設定を利用できますが、事前に端末が該当する認証方式に対応していることを確認してください。 - 共有を終了する:スマホやテレビのプロキシ設定をオフに戻し、クライアントのLAN接続許可を無効にして、不要になったファイアウォール規則を削除してください。
最短で確認するには、まずPCが192.168.1.20:7890で待ち受けていることを確認し、次に別のデバイスからポートへ接続できるかテストして、最後にクライアントに該当リクエストが記録されているかを確認します。3段階をすべて通過した後でノード、ルール、アプリの互換性を調べると、TUNやシステムプロキシ、DNSを何度も切り替えるより原因を特定しやすくなります。基本項目についてはドキュメントのmixed-portの説明もご覧ください。