まず共有範囲を確認:Wi-Fiの手動プロキシは端末全体を中継しません

スマホやタブレットから、PC上のClashをLANプロキシサーバーとして利用できます。PCでクライアントを起動し、サブスクリプションを読み込んでルールに沿って通信を振り分けます。モバイル端末では、接続中のWi-Fiのプロキシ設定にPCのアドレスとポートを入力するだけです。利用中はPCの電源とネットワーク接続を維持し、Clashのコアを起動しておく必要があります。

この方法が使えるのは、ブラウザーやWi-FiのHTTPプロキシ設定に従うアプリです。スマホでVPNを使う場合とは異なり、すべてのゲーム、UDP通信、アプリ独自の接続、システムサービスを自動的に中継するものではありません。モバイル端末の通信を幅広く中継したい場合は、必要な機能に対応するクライアントを端末にインストールしてください。詳しくはAndroidの初期設定ガイドをご覧ください。

mixed-port、allow-lan、待ち受けアドレスの役割

混合ポートのmixed-portは、同じTCPポートでHTTPプロキシとSOCKSプロキシのリクエストを受け付けます。スマホのWi-Fi設定では通常HTTPプロキシを指定するため、この混合ポートをそのまま利用できます。「スマホ専用ポート」を別に探す必要はありません。以下では7890を例にしますが、すべてのクライアントで固定されている値ではありません。

設定項目 役割 設定例
mixed-port HTTP・SOCKSプロキシの接続口を提供 7890
allow-lan ほかの端末からプロキシの待ち受けポートへのアクセスを許可 true
bind-address 待ち受けに使用するローカルアドレスを指定 0.0.0.0(すべてのIPv4インターフェース)
mode リクエストをルール、グローバル、直接接続のどれで処理するかを指定 rule(ルールに従って処理)

127.0.0.1はその端末自身を指します。スマホにこのアドレスを入力すると、リクエストはスマホ自身に向かい、PCには届きません。0.0.0.0はサーバー側の待ち受け設定に使うアドレスで、スマホのプロキシサーバー欄には指定できません。スマホにはPCの実際のLAN内IPv4アドレス(例:192.168.1.23)を入力してください。

コントロールパネルのexternal-controllerポートを混合ポートとして使わないでください。これはコアの管理用インターフェースであり、Webプロキシの接続口ではありません。Webアクセスを共有するためにLANへ公開するのも避けてください。

PC側:LAN接続を許可し、有効な設定を確認する

まずはクライアントの設定を使う

  1. クライアントの「設定」を開き、「Allow LAN」または「LAN接続を許可」を探して有効にします。
  2. 「ポート設定」または「混合ポート」を開き、現在のポート番号を確認します。例では7890を使います。サブスクリプションURLのポートやノードサーバーのポートとは異なります。
  3. 「待ち受けアドレス」の項目がある場合は、127.0.0.1だけで待ち受ける設定になっていないことを確認します。LANアダプターのアドレスを指定するか、ファイアウォールで接続元を制限したうえで、すべてのIPv4インターフェースで待ち受けます。
  4. 設定を適用します。コアの再起動を求められた場合は指示に従い、設定が反映されたことを確認してください。

クライアントやバージョンによってメニュー構成は異なります。ここで挙げた名称は探すべき機能項目であり、共通の固定メニュー経路ではありません。設定ファイルを使う場合、ClashおよびClash Meta(mihomo)では次の項目がよく使われます。

# 既存の設定ファイルのトップレベルに追加。サブスクリプション設定全体ではありません
mixed-port: 7890
allow-lan: true
bind-address: '0.0.0.0'
mode: rule

既存のproxies、proxy-groups、rules、DNS設定は残してください。この数行でファイル全体を置き換えないでください。同じ名前の項目を重複して定義するのも避けます。クライアントによっては画面上の設定がYAMLの値を上書きするため、サブスクリプションの元ファイルだけでなく、実際に適用されている設定を確認してください。

PCのIPアドレスを確認し、必要な通信だけファイアウォールで許可する

実際に接続中のネットワークアダプターのIPv4アドレスを確認する

Windowsではターミナルを開いてipconfigを実行し、接続中の「Wireless LAN adapter Wi-Fi」またはイーサネットアダプターのIPv4アドレスを確認します。TUN仮想アダプター、切断中のアダプター、ループバックアドレスは使わないでください。macOSでは「システム設定」→「ネットワーク」→現在の接続→「詳細」→「TCP/IP」を開き、IPアドレスを確認します。

たとえばPCが192.168.1.23、スマホが192.168.1.56で、家庭用ルーターの通常のネットワークに接続していれば、通常は相互に通信できます。ただし、アドレスが似ているだけでは疎通を確認できません。ゲストWi-Fi、AP隔離、VLANの設定によって端末間通信が遮断されることがあります。PCを有線LAN、スマホをWi-Fiで接続しても、両者間の通信が許可されていれば共有できます。

Windowsではプライベートネットワークに限り、TCP 7890を許可する

  1. まず、現在のネットワークが信頼できる自宅または職場のネットワークであることを確認し、Windowsのネットワーク設定で「プライベートネットワーク」に設定します。公共のホットスポットをプライベートネットワークに変更しないでください。
  2. 「Windows セキュリティ」→「ファイアウォールとネットワーク保護」→「詳細設定」を開きます。
  3. 「受信の規則」→「新しい規則」→「ポート」→「TCP」の順に選び、「特定のローカルポート」に7890を入力します。
  4. 「接続を許可する」を選び、「プライベート」プロファイルだけにチェックを入れて、「Clash LAN TCP 7890」という名前を付けます。
  5. 規則のプロパティにある「スコープ」でリモートIPアドレスを制限します。可能であればスマホやタブレットの固定IPアドレスだけを許可してください。アドレスが変わる場合は、実際の環境に合わせてローカルサブネットに制限します。

この例のWi-Fi HTTPプロキシで必要なのはTCPだけです。接続を試すためにすべてのプロトコルやポートを許可しないでください。PCの混合ポートが7897の場合は、ファイアウォールとスマホ側の両方を7897に合わせます。

macOSでアプリケーションファイアウォールを有効にしている場合は、「システム設定」→「ネットワーク」→「ファイアウォール」→「オプション」を開き、接続を受け付けるクライアントまたはコアプログラムが許可されているか確認します。組織のセキュリティソフトで管理されているPCでは、管理者の方針に従い、制限を回避するためにファイアウォールを無効にしないでください。

スマホ・タブレット側:PCのアドレスと混合ポートを入力する

iPhone・iPadのWi-Fiプロキシ設定

  1. 「設定」→「Wi-Fi」を開き、接続中のネットワークの横にある情報ボタンをタップします。
  2. 「プロキシを構成」を開き、「手動」を選択します。
  3. 「サーバ」に192.168.1.23、「ポート」に7890を入力します。http://やパスは付けないでください。
  4. PC側でプロキシ認証を設定していない場合は、「認証」をオフのまま保存します。
  5. そのWi-Fiに接続したまま、ブラウザーで動作を確認します。

AndroidのWi-Fiプロキシ設定

一般的な設定手順は「設定」→「ネットワークとインターネット」→「インターネット」→接続中のWi-Fiの設定ボタン→「編集」→「詳細設定」→「プロキシ」→「手動」です。メーカーによっては「Wi-Fi」→接続中のネットワークの詳細に設定項目があります。実際の画面に従って操作してください。

  • プロキシのホスト名:192.168.1.23。
  • プロキシのポート:7890。
  • プロキシを使用しないアドレス:最初のテストでは初期値のままにし、目的のサイトを除外リストに追加しないでください。
  • IP設定:通常はDHCPのままにします。プロキシを設定するためにIPアドレスを固定する必要はありません。

これらの設定は現在のWi-Fiにのみ適用され、モバイル通信のプロキシにはなりません。ネットワークを切り替えたら設定を確認してください。AndroidのシステムWi-Fiプロキシには、汎用のユーザー名・パスワード入力欄がないことが一般的です。PC側でプロキシ認証を有効にする場合は、端末とアプリがその認証方式に対応しているか確認してください。アドレスとポートを入力しただけでは設定完了とは限りません。

PC経由で接続できているか確認する:接続状況を見てからルールを確認

設定を保存したら、スマホのブラウザーでアクセス可能なHTTPSページを開き、同時にPCクライアントの「接続」または「ログ」画面を確認します。スマホからのリクエスト、宛先ドメイン、適用ルール、使用中のプロキシグループが表示されているか確認してください。クライアントによっては接続元IPアドレスも表示されるため、PC自身の通信とスマホからの通信を見分けられます。

  1. まずリクエストが届いているか確認します。スマホで異なるページを続けて2つ開き、PCの接続一覧に記録が追加されるか確認してください。
  2. 次に振り分け結果を確認します。RuleモードでDIRECTに一致したリクエストは直接接続されます。PCのプロキシを経由しても、必ずリモートノードを使うわけではありません。
  3. 最後に目的のアプリを試します。まずブラウザーで動作を確認し、その後ほかのアプリを試してください。一部のアプリだけ使えない場合は、システムのHTTPプロキシ設定に従うアプリかどうかを確認します。

ターミナルを実行できる別のLAN端末があれば、次のコマンドでプロキシとのハンドシェイクを確認できます。プロキシを動かしているPCではなく、別の端末から実行してください。

curl -I -v --connect-timeout 5 --max-time 15 --proxy http://192.168.1.23:7890 https://example.com/

ここでのexample.comは説明用の実在ドメインです。接続がタイムアウトする場合は、まずスマホからPCまでのネットワークとファイアウォールを確認します。接続がすぐ拒否される場合は、ポートが待ち受け状態か確認してください。CONNECTに成功してから上流エラーが出る場合は、プロキシグループ、ノード、ルールを確認します。HTTPステータスコードだけでは共有の成否を判断できません。ハンドシェイクと接続先サイトの応答もあわせて確認してください。

よくあるトラブル:接続経路を段階ごとに確認

PCでは使えるのに、スマホは接続がタイムアウトする

  • スマホに127.0.0.1、0.0.0.0、または古いPCのIPアドレスを入力していないか確認します。
  • allow-lanが有効で、混合ポートがループバックアドレスだけで待ち受けていないことを確認します。
  • ファイアウォール規則が現在のネットワークプロファイルに適用されているか、ポート番号がクライアントと一致しているか確認します。
  • ゲストネットワークの分離、ルーターのAP隔離、ほかのVPNによるローカルネットワークへのアクセス制限を確認します。

Windowsでは次のコマンドを実行して、ローカルの待ち受け状態を確認できます。結果に0.0.0.0:7890または実際のネットワークアダプターのアドレスが表示されれば、そのIPv4アドレスで待ち受けています。127.0.0.1:7890だけの場合、ほかの端末からはその待ち受けにアクセスできません。何も表示されない場合は、コアが起動しているか、ポート番号が正しいか確認してください。

netstat -ano | findstr LISTENING | findstr :7890

ブラウザーは使えるのに、ゲームや動画アプリがプロキシを経由しない

アプリがWi-FiのHTTPプロキシ設定に従っていないか、この方法では中継できない接続方式を使っている可能性があります。その場合、混合ポートを何度も切り替えても解決しません。PCでTUNを有効にしても、スマホからPCに送られていない通信は中継されません。PC本体のTUNによる通信制御と、PCをネットワークゲートウェイにすることは別の仕組みです。詳しくはTUNの使い方をご覧いただき、端末に適した通信制御方法を選んでください。

Webページで認証エラーや証明書エラーが表示される

HTTPの407は通常、プロキシ認証が必要であることを示します。PC側の認証設定と端末の対応状況を確認してください。通常のHTTPプロキシはCONNECTでHTTPS通信を中継するため、この手順でルート証明書をインストールする必要はありません。証明書の警告が表示された場合は、端末の日時、接続先サイトの証明書、ネットワーク環境を確認してください。警告を無視したり、提供元の不明な証明書をインストールしたりしないでください。

PCがスリープすると、スマホから通常のWebページにも接続できなくなる

手動プロキシの接続先が、すでにサービスを停止したPCのままになっているため、その設定に従うアプリは接続できません。共有を終えたら、スマホの現在のWi-Fiプロキシ設定を「オフ」または「なし」に戻してください。DHCPによってPCのIPアドレスが変わった場合は、スマホ側のアドレスを更新します。継続して利用するなら、ルーターでPCのDHCPアドレスを予約できます。

共有時の安全対策と終了後の設定:接続元を制限し、インターネットには公開しない

allow-lan: trueを設定し、すべてのインターフェースで待ち受けると、プロキシサービスにアクセスできる範囲が広がります。この設定自体にアクセス制御機能はありません。ファイアウォールで接続元を制限してください。ルーターで7890をインターネットにポート転送しないでください。また、スマホからプロキシに接続できない問題を解決するために、コアの管理インターフェースを公開するのも避けてください。

  • 信頼できるネットワークでのみ有効にします。ホテル、空港などの公共Wi-Fiに接続する前に、LAN共有を無効にしてください。
  • 必要な端末だけに許可します。スマホやタブレットの個別IPアドレスに制限するのが理想です。ローカルサブネット全体を許可する場合は、同じサブネット内のほかの端末からも接続される可能性があります。
  • サブスクリプションの利用条件を確認します。共有端末の通信量はPCで利用しているサブスクリプションに加算されます。サービス提供元が同時接続数や端末の利用方法を制限している場合もあります。
  • 認証は対応状況を確認して設定します。認証が必要な場合は専用の強力なパスワードを設定し、モバイル端末が対応していることを確認してください。サブスクリプションURLや管理インターフェースのキーをプロキシのパスワードとして使わないでください。
  • 共有を終えたら設定を戻します。スマホの手動プロキシをオフにし、PCのLAN共有を無効にして、不要になった受信規則も無効にしてください。