共有方法を確認:端末からスマホのプロキシに手動接続
同じLANに接続したパソコンでAndroid版Clashを使うには、通常3つの設定が必要です。スマホでプロキシポートを開き、LAN接続を許可して、パソコンにスマホのローカルIPアドレスとポートを入力します。この記事では混合ポートの例として7890を使用します。よく使われる設定値ですが、すべてのクライアントで固定されたポートではありません。
これは「明示的プロキシ」です。パソコンのブラウザーやアプリからスマホに接続し、その後Clashがルールに応じて通信先を選びます。スマホでVPNやTUNを有効にしても、接続中のすべての端末が自動的にプロキシ経由になるわけではありません。特にAndroidのテザリングでは、システムが転送する通信がスマホのVPNを通らない場合があります。まず手動プロキシで動作を確認してください。
- スマホとパソコンを同じ信頼できるWi-Fiに接続します。ゲストネットワークは使わないでください。
- スマホのWi-Fi詳細画面でIPv4アドレスを確認します。例:
192.168.1.23。 - Clashで混合ポート、LAN接続の許可、実際のリッスンアドレスを確認します。
- パソコンでHTTPプロキシを設定し、アドレスにスマホのIP、ポートに
7890を入力します。 - ウェブページを開き、スマホの接続履歴に新しいリクエストが表示されるか確認します。
mixed-port・HTTP・SOCKSポートの違い
mixed-portは、同じリッスンポートでHTTPプロキシとSOCKSプロキシのリクエストを受け付けます。パソコンのHTTPプロキシとして接続でき、SOCKS5対応アプリからも利用できますが、アプリ側で正しいプロキシプロトコルを選ぶ必要があります。混合ポートが任意の通信を自動的にプロキシリクエストとして判別するわけではありません。
| 設定項目 | 対応するプロキシプロトコル | 接続端末での設定 |
|---|---|---|
mixed-port: 7890 | HTTPとSOCKS | アプリの対応状況に応じてHTTPまたはSOCKS5を選び、ポートに7890を入力 |
port: 7891 | HTTPプロキシ(CONNECTトンネル対応) | HTTPプロキシを選択し、ポートに7891を入力 |
socks-port: 7892 | SOCKSプロキシ | SOCKS5を選択し、ポートに7892を入力 |
表に記載した3つのポートは違いを示すための例で、すべてを有効にする必要はありません。手動で共有する場合は、通常mixed-port: 7890だけで十分です。異なる3つのリッスン項目すべてに7890を設定しないでください。ポートが競合し、起動できなくなる場合があります。
HTTPSサイトもHTTPプロキシ経由でアクセス可能
プロキシ設定の「HTTP」は、クライアントとプロキシの接続方式を指し、HTTPサイトしか開けないという意味ではありません。HTTPSサイトでは通常、アプリがHTTP CONNECTでトンネルを確立します。通常の転送にパソコンへの証明書インストールは不要です。プロキシ共有のためにサイトの証明書検証を無効にしないでください。
SOCKS5のUDP転送は、アプリやカーネル、ノードのプロトコル、ネットワーク環境にも左右されます。システムにHTTPプロキシを設定しただけでは、ゲームのUDP通信やすべてのメッセージアプリの通信、システムプロキシを参照しないアプリまで対象になるわけではありません。
Android側の設定:LAN接続とリッスンアドレスを許可
従来のClash for Androidでは、まず「プロファイル」を開いて使用する設定が選択されていることを確認し、「設定」→「オーバーライド」でポートや「LAN接続を許可」に関する項目を探します。派生版ではメニューや表記が異なる場合があります。該当項目が見つからない場合は、そのクライアントの設定編集やオーバーライドの説明を確認し、最終的に適用される設定を基準にしてください。他のクライアントのメニューをそのまま探す必要はありません。
設定項目の例
以下は共有用の入口に必要なトップレベル項目であり、単独で動作する完全なサブスクリプションではありません。ノード、プロキシグループ、ルールを含む既存設定に統合してください。同名の項目がすでにある場合は値を変更し、重複して追加しないでください。
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
mixed-port:スマホでプロキシリクエストを受け付けるポートです。パソコンにも同じ番号を入力します。allow-lan: true:スマホ以外の端末からプロキシの接続口へのアクセスを許可します。bind-address: '*':この項目に対応するカーネルでは、利用可能なインターフェースで待ち受けます。現在のWi-Fiだけに限定する設定ではありません。mode: rule:ルールに基づいて通信先を決定します。パソコンからスマホのプロキシに接続しても、すべてのサイトがプロキシノード経由になるわけではありません。
127.0.0.1だけで待ち受けている場合、スマホ上のアプリは接続できますが、パソコンからスマホのWi-Fiアドレスを使って接続することはできません。アドレス指定に対応したクライアントでは、待ち受け先をスマホの現在のWi-Fi IPv4アドレスに変更して接続範囲を絞ることもできます。ただし、アドレスが変わった場合は設定も更新しないと、待ち受けを開始できないことがあります。
保存後、クライアントの指示に従って設定を再読み込みするかサービスを再起動し、ログに待ち受け成功やポート競合のエラーがないか確認します。クライアントによっては画面上のオーバーライド値がYAMLを上書きしたり、サブスクリプション更新時にファイルを置き換えたりします。そのため、ファイルに記述しただけでは設定が適用されたとは限りません。設定を変更するたびに、適用状態を確認してください。
パソコンや別のスマホでプロキシアドレスを設定する方法
Clashを実行しているスマホのWi-Fiアドレスを192.168.1.23、混合ポートを7890とします。他の端末にはこのアドレスを入力してください。ルーターのアドレスやノードサーバーのアドレス、127.0.0.1ではありません。最後のアドレスは、入力した端末自身を指します。
Windows 11:手動プロキシを設定
- 「設定」→「ネットワークとインターネット」→「プロキシ」を開きます。
- 「手動プロキシ セットアップ」の「セットアップ」をクリックし、「プロキシ サーバーを使う」をオンにします。
- プロキシのIPアドレスに
192.168.1.23、ポートに7890を入力して保存します。 - ブラウザーを開き直してウェブページにアクセスし、スマホの接続画面でリクエストを確認します。
Windowsのシステムプロキシをすべてのプログラムが利用するとは限りません。ブラウザーでは使えて特定のプログラムでは使えない場合、まずそのプログラム独自のプロキシ設定を確認してください。すぐにノードやDNSを変更する必要はありません。
別のAndroidスマホ:Wi-Fiプロキシを変更
プロキシを利用するスマホで「設定」→「Wi-Fi」または「ネットワークとインターネット」→接続中のWi-Fiの詳細を開き、ネットワーク編集画面の「プロキシ」を「手動」にします。プロキシのホスト名に192.168.1.23、ポートに7890を入力してください。2つの項目をプロトコル付きURLにまとめて入力しないでください。メニューの位置はメーカーによって異なり、「詳細設定」を開く必要がある場合もあります。
通常、この設定は接続中のWi-Fiだけに適用され、アプリによっては使用されません。アプリに個別のSOCKS5設定がある場合はSOCKS5を選び、サーバーにスマホのIP、ポートに混合ポートを入力します。共有を終えたら、接続端末のプロキシを「なし」に戻すか手動プロキシを無効にしてください。設定を残したままスマホがネットワークから切断されると、その端末でウェブページを開けなくなることがあります。
接続経路ごとにトラブル対処:タイムアウト・接続拒否・ルールによる出口
トラブル対処では、パソコンからスマホのポートに到達できるか、スマホがプロキシプロトコルを受け付けるか、ノードから接続先にアクセスできるかの3段階に分けて確認します。ポート、DNS、プロキシモードを同時に変更すると、どの変更が効いたのか判断できません。
まずコマンドでHTTPプロキシをテスト
Windowsのターミナルではcurl.exeを使用します。一部の古いPowerShellではcurlが別のコマンドとして解釈されるためです。以下のアドレスは例です。実行前にスマホの現在のIPv4アドレスに置き換えてください。
curl.exe -I --connect-timeout 5 --max-time 15 --proxy http://192.168.1.23:7890 https://example.com/
macOSまたはLinuxでは、curl.exeをcurlに置き換えます。このコマンドは接続タイムアウトを5秒、全体の制限時間を15秒に設定します。HTTPレスポンスヘッダーが表示されれば、少なくともプロキシ経由の接続処理は完了しています。ただし、すべてのドメインにアクセスできるとは限らず、リクエストが必ずリモートノードを経由したとも限りません。最終的な出口はClashのルール照合ログで確認してください。
| 症状 | まず確認する項目 |
|---|---|
| 接続が拒否される | サービスが動作しているか、7890が待ち受けているか、ループバックアドレスにバインドされていないかを確認します。ファイアウォールが明示的に拒否している可能性もあります。 |
| 接続がタイムアウトする | スマホのIPアドレスが変わっていないか、ゲストネットワークによる端末間通信の遮断、ファイアウォールによる破棄、テザリング端末間の通信制限を確認します。 |
| 407レスポンスが返る | プロキシの接続口で認証が設定されていないか、アプリに正しいユーザー名とパスワードを設定しているかを確認します。 |
| ポートには接続できるが、接続先にアクセスできない | ノードの状態、ルールの適用状況、接続先ドメインの名前解決、上流接続のログを確認します。 |
| ブラウザーでは使えるが、他のアプリでは失敗する | アプリがシステムプロキシに対応しているか、SOCKS5を個別に設定する必要があるか、UDPに依存していないかを確認します。 |
SOCKS5のテストとDNSの名前解決先
curl.exe -I --connect-timeout 5 --max-time 15 --proxy socks5h://192.168.1.23:7890 https://example.com/
curlではsocks5hを指定すると、接続先のホスト名をプロキシ側で解決します。socks5では通常、接続先ドメインをローカルで解決します。HTTPプロキシは正常でも、特定のドメインでSOCKSアプリが失敗する場合は、「プロキシ経由でDNSを解決する」設定が有効か確認してください。HTTPプロキシを設定しただけで、接続端末のすべてのDNS通信がスマホ経由になるわけではありません。
ファイアウォール、ゲストWi-Fi、テザリングでの注意点
同じWi-Fi名でも端末同士が通信できるとは限らない
ルーターの「APアイソレーション」「クライアント分離」やゲストネットワークの設定によって、同じWi-Fi名に接続していても端末間通信が遮断されることがあります。まず両方の端末を信頼できるメインネットワークに接続し、スマホのポートをテストしてください。Pingが通らなくても、ICMPが遮断されている可能性があるため、プロキシが使えないとは限りません。実際のポートテストと接続ログを合わせて判断してください。
この方法ではWindowsから接続を開始するため、通常、パソコン側で受信ポート7890を開放する必要はありません。アクセスを許可する必要があるのは、プロキシを実行しているスマホです。スマホにファイアウォールや企業管理ソフトがインストールされている場合は、LANからの着信制限を確認してください。VPN型ファイアウォールの中にはClashのVPNサービスと競合するものもあります。トラブル対処のために端末全体の保護を恒久的に無効にしないでください。
スマホをテザリングする場合はアドレスを再確認
テザリングのネットワークは、スマホが接続している家庭内Wi-Fiとは別のインターフェースです。パソコンをスマホのテザリングに接続した後、Windowsでipconfigを実行し、そのワイヤレス接続の「デフォルト ゲートウェイ」を確認します。通常は、そのネットワーク上にあるテザリング元スマホのアドレスです。Androidのテザリングで192.168.43.1が必ず使われるわけではありません。ネット上のアドレスをそのまま使わないでください。
- スマホのテザリングを有効にしてパソコンを接続し、その接続のゲートウェイアドレスを確認します。
- Clashがテザリングのインターフェースからアクセス可能で、元のWi-Fiアドレスだけにバインドされていないことを確認します。
- パソコンの手動プロキシアドレスをテザリングのゲートウェイに変更し、ポートには実際の混合ポートを指定します。
- プロキシを再度テストします。接続ログがまったく表示されない場合は、テザリング端末間の通信制限と待ち受け設定を優先して確認してください。
システムによっては、テザリング中の端末からスマホ本体のサービスへのアクセスや、VPNとネットワーク共有の同時利用が制限されます。到達性とシステムの制限を満たせば明示的プロキシを使えますが、すべてのAndroid端末で使えるとは限りません。USBテザリングでも、専用のネットワークに合わせてアドレスを確認してください。
共有終了後の設定とよくある質問
- 画面ロック後に切断される:システムの「設定」→「アプリ」→対象クライアント→電池関連の設定で、バックグラウンド動作の制限を確認します。項目名はシステムによって異なります。設定を変更した後、画面をロックして接続が維持されるか確認してください。
- Wi-Fiを変えたら使えなくなった:スマホのIPアドレスを確認し直してください。家庭内ネットワークではルーターでスマホのDHCPアドレスを予約すると、アドレスの変更を減らせます。ランダムMACを有効にしている場合は、ルーターに登録された端末のアドレスも確認してください。
- 9090を開放する必要はありますか:ありません。設定によっては9090が外部コントロールインターフェースとして使われますが、ブラウザーに入力するプロキシの接続口ではなく、共有のために開放する必要もありません。
- グローバルモードを有効にする必要はありますか:ありません。ルールモードでも共有でき、スマホ経由のリクエストは現在のルールに従って処理されます。特定のルールを確認する場合は、その接続に適用されたポリシーと出口を確認してください。
- 公共ネットワークで共有できますか:認証なしのプロキシ接続口を公開することは推奨しません。認証が必要な場合は、使用しているカーネルが
authenticationに対応しているか確認し、接続端末側もプロキシ認証に対応していることを確認してください。認証を設定しても、ネットワークアクセスの制限に代わるものではありません。
動作確認が終わったら、まずパソコンや別のスマホで手動プロキシを解除し、その後スマホのLAN接続を無効にしてください。次回は「スマホのIP → 待ち受けポート → 接続端末の設定 → 接続ログ」の順に確認すると、クライアントを何度も再インストールするより原因を見つけやすくなります。インストール手順はクイックスタートガイド、設定項目の詳しい説明はドキュメントをご覧ください。