応用設定 読了目安 9分

mixed-port 7890とLAN接続の許可:スマホでPCのプロキシを使う方法

mixed-portがHTTPとSOCKS5を同時に受け付ける仕組みを解説。allow-lanの有効化、PCのLAN内IPアドレスの確認、スマホのWi-Fiプロキシ設定まで紹介します。

まず確認:PCが接続でき、スマホとPCが通信できること

スマホでPCのプロキシを使う場合、PC上のClashまたはmihomoクライアントをLAN内のプロキシ入口として利用します。スマホからプロキシ対応の通信をPCへ送り、PCが現在の設定に基づいてルールやグループを適用し、直接接続するかノードを経由するかを判断します。この接続経路ではスマホにサブスクリプションを再度インポートする必要はありませんが、PCの電源を入れ、インターネットに接続した状態でプロキシコアを動かし続ける必要があります。

まずPCでプロキシが必要なWebサイトを開きます。サブスクリプションが有効で、グループに利用可能なノードが選択されていることを確認してから、LAN共有を設定してください。PC自体が接続できない場合は、先にサブスクリプションやノードの問題を解決しましょう。スマホのプロキシアドレスを変更しても、上流側の問題は解消しません。

  • ネットワーク要件:PCは有線LAN、スマホはWi-Fiでも構いませんが、両者の間でLAN通信が許可されている必要があります。家庭用ルーターに両方を接続するのが最も簡単です。
  • ネットワーク分離の制限:ゲストWi-Fi、無線クライアントの分離、企業ネットワークのアクセス制御などにより、スマホからPCへ接続できない場合があります。同じWi-Fi名でも、必ず通信できるとは限りません。
  • 利用範囲:スマホのWi-Fiで設定する手動HTTPプロキシを利用できるのは、主にシステムのプロキシ設定に従うアプリです。端末全体の通信を制御する機能ではありません。

この記事では、PCのアドレスを192.168.1.50、スマホのアドレスを192.168.1.80、mixed-portを7890として説明します。これらは例示用のプライベートIPアドレスで、自動検出された値ではありません。実際に設定する前に自分のアドレスを確認してください。

mixed-port、allow-lan、待ち受けアドレスの仕組み

mixed-portは、1つのTCP待ち受けポートでプロトコルを判別し、HTTPプロキシリクエストとSOCKS5接続を受け付ける入口です。2つのプロトコルを重ねて使うものではなく、スマホで両方のプロキシを設定する必要もありません。スマホのWi-Fi設定には通常HTTPプロキシが用意されているため、mixed-portを指定するとHTTPプロキシ機能が使われます。

項目役割設定例
mixed-portHTTPとSOCKS5で共用するプロキシ入口7890
allow-lanLANからのプロキシ接続を許可true
bind-addressプロキシの待ち受け先となるローカルアドレスを指定192.168.1.50

7890はよく使われる設定値ですが、必須の標準値ではありません。クライアントによって別のポートが使われることもあるため、現在の実行設定と実際の待ち受け状態を確認してください。通常、portはHTTPポート、socks-portはSOCKSポートです。ポート番号を見ただけでスマホに入力しないようにしましょう。

127.0.0.1はループバックアドレスです。PCがこのアドレスで待ち受けている場合、接続できるのはPC自身だけです。スマホに入力すると、接続先はスマホ自身になってしまいます。bind-addressを'*'にすると通常はすべてのインターフェースで待ち受けますが、公開範囲が広くなります。この記事では特定のLAN内IPv4アドレスを指定し、ファイアウォールでアクセス範囲を絞ります。

HTTPSサイトでもHTTPプロキシを使える理由

HTTPSサイトへ接続するとき、プロキシ対応アプリは通常HTTP CONNECTでトンネルを確立し、その中で接続先サイトとTLS通信を行います。通常の中継にルート証明書のインストールや証明書検証の無効化は必要ありません。共有設定後に証明書の警告が出た場合は、機密情報を扱う操作を中止し、時刻やネットワーク、接続先サイトを確認してください。見知らぬ証明書をインストールしてプロキシを「修復」しようとしないでください。

手順1:PCの現在のLAN内IPv4アドレスを確認する

Windows:使用中のネットワークアダプターを確認

Win + Rを押し、cmdと入力してEnterキーを押し、次のコマンドを実行します。有線LAN接続の場合は「イーサネット アダプター」、Wi-Fi接続の場合は接続中の「ワイヤレス LAN アダプター」を確認してください。

ipconfig

該当アダプターの「IPv4 アドレス」を控えます。たとえばIPv4アドレスが192.168.1.50、デフォルトゲートウェイが192.168.1.1なら、スマホのプロキシサーバーに入力するのは前者です。ゲートウェイは入力しません。未接続のアダプター、VPN仮想アダプター、TUNアダプターのアドレスは使わず、グローバルIP確認サイトに表示されるアドレスもコピーしないでください。

macOS:ネットワークの詳細を確認

macOS 13以降では、「システム設定」→「ネットワーク」→使用中のWi-FiまたはEthernet→「詳細」→「TCP/IP」の順に開き、IPv4アドレスを控えます。「Wi-Fi」画面で接続中のネットワークの「詳細」を開き、「TCP/IP」を確認する方法もあります。

ルーターからDHCPで割り当てられるアドレスは、再接続後に変わることがあります。初回接続に成功したら、ルーターのDHCPアドレス予約機能でPCの現在のアドレスを固定するのがおすすめです。予約しない場合、PCのアドレスが192.168.1.50から別の値に変わると、待ち受け設定とスマホのプロキシ設定の両方を更新する必要があります。

手順2:LAN共有を有効にしてポートを確認

ClashのGUIクライアントによってメニュー名は異なります。「設定」で「LAN接続を許可」または「Allow LAN」を探して有効にし、「ポート」または「mixed-port」の実際の値を確認してください。クライアントで永続化設定を編集できる場合は、次の3つのトップレベル項目を既存の設定に追加します。この数行でサブスクリプションファイル全体を置き換えないでください。

既存設定に追加するトップレベル項目
mixed-port: 7890
allow-lan: true
bind-address: 192.168.1.50

項目の前にインデントを追加せず、proxiesやdnsの中にも入れないでください。同じ項目を重複して定義するのも避けます。保存後、クライアントの再読み込み機能、またはコアの再起動で設定を反映します。PCの実際のアドレスが例と異なる場合は、先にbind-addressを変更してください。変更しないと、コアがアドレスをバインドできないことがあります。

サブスクリプションの更新で、直接編集したファイルの内容が上書きされる場合があります。また、GUIクライアントが画面上の設定でポートやLAN許可の項目を書き換えることもあります。クライアントの永続化設定またはオーバーライド機能を優先して使い、再読み込み後に実行結果を確認してください。ファイルにtrueと書かれているだけでは、現在のコアに設定が反映済みとは限りません。

7890が実際に待ち受けていることを確認

Windowsではコマンドプロンプトで次を実行します。

netstat -ano -p tcp | findstr ":7890"

ローカルアドレス列と状態列を確認します。192.168.1.50:7890で状態がLISTENINGなら、この例では正常です。0.0.0.0:7890はすべてのIPv4インターフェースで待ち受けていることを示します。127.0.0.1:7890しかない場合、接続できるのはPC自身だけです。出力のリモートアドレスに7890が表示されても、PCが待ち受けていることにはなりません。

macOSではターミナルでlsof -nP -iTCP:7890 -sTCP:LISTENを実行します。待ち受け結果が表示されない場合は、コアが起動しているか、ポートを別のプログラムが使用していないか、設定の再読み込みでエラーが出ていないかを確認してください。

LAN接続の許可は、インターネットからのアクセスを許可する設定ではありません。ルーターで7890のポート転送を設定したり、プロキシ共有のために外部コントローラーのポートを公開したりしないでください。制御APIとスマホが利用するプロキシポートは、別々の入口です。

手順3:信頼できる接続元だけをファイアウォールで許可

待ち受けに成功していても、システムのファイアウォールがスマホからの接続を遮断することがあります。ファイアウォールを無効にしないでください。Windowsの家庭用ネットワークが信頼できることを確認し、「設定」→「ネットワークとインターネット」→現在の接続のプロパティでネットワークプロファイルを確認してから、プライベートネットワーク向けに範囲を限定した受信規則を作成します。

次のPowerShellコマンドは管理者権限が必要です。例にあるスマホの192.168.1.80から、このPCのTCP 7890への接続だけを許可し、プライベートネットワークでのみ有効にします。実行前に、スマホのWi-Fi詳細に表示される実際のアドレスに置き換えてください。

New-NetFirewallRule -DisplayName "Mihomo LAN TCP 7890" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 7890 -RemoteAddress 192.168.1.80 -Profile Private

範囲を限定した規則を追加しても、すでに設定済みの広範囲な許可規則は削除されません。「Windows セキュリティ」→「ファイアウォールとネットワーク保護」→「詳細設定」→「受信の規則」を開き、すべての接続元を許可する規則がクライアントにないか確認し、必要に応じて範囲を絞ってください。スマホのアドレスが変わった場合は、接続元の範囲も更新します。

macOSでは「システム設定」→「ネットワーク」→「ファイアウォール」→「オプション」で、クライアントまたは実際に動作するコアのプログラムがブロックされていないか確認します。認証のないプロキシ入口を公共Wi-Fiで公開するのは避けてください。LAN内の利用者を制限できない場合は、受信制限を広げるのではなく、スマホに専用クライアントを導入する方法を検討してください。

手順4:スマホのWi-Fi設定でHTTPプロキシを入力

iPhone/iPad

  1. 「設定」→「Wi-Fi」を開き、接続中のネットワークの右側にある情報ボタンをタップします。
  2. 「プロキシを構成」を開き、「手動」を選択します。
  3. 「サーバー」にPCのLAN内アドレス(例:192.168.1.50)、「ポート」に7890を入力します。
  4. この例ではプロキシ認証を設定していないため、「認証」はオフのままにします。保存後、SafariでWebページを開いてテストしてください。

Android

標準的なAndroidの画面を例にすると、「設定」→「ネットワークとインターネット」→「インターネット」→現在のWi-Fi→ネットワークを編集→「詳細設定」→「プロキシ」→「手動」の順に進みます。メーカーによっては、Wi-Fiの詳細画面にある「ネットワークを変更」から設定します。

  • プロキシのホスト名:192.168.1.50。アドレスだけを入力し、http://やポート番号は付けません。
  • プロキシのポート:7890。PCのmixed-portと同じ値を入力します。
  • プロキシを使用しないアドレス:最初の動作確認では初期設定のままにし、テスト対象のサイトを除外リストに誤って入力しないでください。

保存後、ブラウザーを開き直します。この設定は通常、現在のWi-Fiネットワークに適用され、モバイルデータ通信のプロキシには自動で適用されません。Androidアプリの中にはシステムのHTTPプロキシを無視するものがあります。また、設定前から確立していた接続を再利用するアプリもあるため、必要に応じてアプリを完全に終了してから開き直してください。

接続経路を確認:接続ログを見て、アプリごとの対応範囲を判断

PCのクライアントで「接続」またはログ画面を開き、スマホでWebページを再読み込みします。スマホのアドレスから新しい接続が確認できれば、スマホからPCのプロキシまで到達しています。続いて、その接続に適用されたルールとグループを確認します。DIRECTに一致した場合は直接接続、プロキシ用のポリシーに一致した場合は対応するノードを使用します。

つまり、スマホが利用するのはPCで現在使われているルーティング設定であり、すべてのサイトが自動的に同じノードを経由するわけではありません。問題を調べるときは個々のリクエストの経路を確認し、外部IPが変わったかどうかだけで共有の成否を判断しないでください。また、「ブラウザーでアクセスできる」ことを「すべてのアプリとプロトコルがプロキシ経由になった」と解釈しないようにしましょう。

症状まず確認する項目次の対応
すべてのWebページがタイムアウトし、PCにスマホの接続記録がないIPアドレス、ポート、待ち受けアドレス、ファイアウォール、ゲストネットワークの分離ネットワークの入口から順に確認する
PCにスマホの接続は表示されるが、接続先にアクセスできない適用ルール、グループ、ノードの状態、コアのログまずPCから同じ接続先をテストする
ブラウザーは使えるが、特定のアプリだけ失敗するアプリがシステムプロキシに対応しているか、UDPを使用しているかスマホ用クライアントで通信制御を検討する
PCがスリープするとスマホがインターネットに接続できなくなるプロキシ入口が応答を停止しているPCを復帰させるか、スマホの手動プロキシをオフにする
Wi-Fiに再接続すると使えなくなるPCまたはスマホのDHCPアドレスが変わったアドレス、待ち受け設定、ファイアウォールの許可範囲を更新する

DNS・UDP・TUNでできることとできないこと

HTTPプロキシのリクエストやCONNECTでは接続先のドメイン名を指定でき、PC側でコアの設定に従って後続の名前解決を処理できます。ただし、スマホから送られるすべてのDNSリクエストがPCを経由するとは限りません。アプリが先に名前解決を行ったり、別の接続を独自に確立したりすることもあります。そのため、Wi-Fiプロキシの設定だけでは、DNS漏えいを完全に防ぐ対策にはなりません。

スマホのWi-Fiに設定するHTTPプロキシは、汎用のUDP転送入口でもありません。ゲーム、音声通話、QUICを使う一部の通信では挙動が異なる場合があります。PCでTUNモードを有効にしても、PCへルーティングされていないスマホの通信を自動で取り込めるわけではありません。より多くのアプリを対象にするにはスマホに対応クライアントをインストールしてください。ゲートウェイ単位で通信を制御する場合はルーティングや透過プロキシの設定が必要で、この3項目を変更するだけでは実現できません。

共有を終了する:先にスマホの設定を戻し、PC側の入口を閉じる

共有をやめるときは、iPhoneで「プロキシを構成」を開いて「オフ」を選び、Androidでは現在のWi-Fiのプロキシ設定を「なし」に戻します。通常のネットワーク経由でWebにアクセスできることを確認してから、PCのLAN接続許可を無効にするかクライアントを終了してください。スマホが停止済みのプロキシ入口へ接続し続けるのを防げます。

今回のテスト用にWindowsのファイアウォール規則を追加した場合は、管理者として起動したPowerShellで削除できます。

Remove-NetFirewallRule -DisplayName "Mihomo LAN TCP 7890"

最後に、3つの対応関係を確認しましょう。スマホのサーバーアドレスにはPCのLAN内IPアドレス、ポートには実際に待ち受けているmixed-portを入力します。スマホでプロキシが使える範囲は、各アプリがシステムのHTTPプロキシに対応しているかどうかで決まります。「PCで接続確認→LAN内から到達確認→ポートの待ち受け確認→スマホに設定→接続ログで検証」の順に進めると、問題のある箇所を特定しやすくなります。

クライアントをダウンロード