一般的使用模式#
Clash クライアント使用フロー#
- 購入サブスクリプション、サブスクリプションアドレスを取得
- Clash クライアントのサブスクリプションを設定
- Clash クライアントのルールを設定(通常は設定不要、購入したサブスクリプションアドレスにはルール情報が含まれています)
- Clash クライアントを起動
- ローカルポートを指定(通常は Clash クライアントのデフォルト、例:7890、7897)
サブスクリプション設定情報
サブスクリプションノード情報
ローカルプロキシポート情報
システムプロキシ設定情報
Clash クライアントがサブスクリプションアドレスから取得するサブスクリプションノードは通常複数ありますが、クライアントソフトウェアはデフォルトでその中の 1 つのノードのみを使用します。プロキシの流れは、クライアントソフトウェアがローカルにポートを生成し、そのポートを介して選択したサブスクリプションノードとデータ交換を行うことです。クライアントソフトウェアでプロキシスイッチを操作する際、実際にはオペレーティングシステムのプロキシ設定をクライアントが生成したこのローカルポートアドレス(例:7890)に変更しています。この時、オペレーティングシステムのプロキシ設定には 127.0.0.1:7890 と表示されます。
Clash プロキシの流れは以下の通りです:
オペレーティングシステムのリクエスト -> ローカルポート(7890 または 7897、具体的なポートはクライアントソフトウェアによって異なります)-> Clash クライアント中継 -> Clash ノード -> 制限された外部ネットワーク
この方法は、Clash クライアントを使用して科学的にインターネットを利用する際には通常問題ありませんが、サブスクリプションのノードの大部分はアイドル状態にあります。なぜなら、Clash は 1 つのノードのみを選択してプロキシアクセスを行うからです。
拡張思考#
もし私たちが、Clash サブスクリプションのすべてのノードまたは一部のノードを複数のローカルポートに変換し、各ポートを異なる Clash ノードにマッピングできるメカニズムを実現できれば、異なるフィンガープリンティングブラウザ環境で異なるプロキシを設定できるようになります。これは、複数のプロキシ IP を購入する形式に似ています。このようにすることで、サブスクリプションのノードを十分に活用できるだけでなく、ノードの利用率を向上させ、追加のプロキシ IP を購入するコストを削減できます。
リスナー モード#
Clash は、上記の要求を解決するためのリスニングモードを提供しており、Clash クライアントのすべての機能の正常な使用に影響を与えません。これを実現するためには、既存の Clash クライアント設定に基づいて、設定ファイルを適切に調整する必要があります。
設定ファイルの取得#
以下は一例です。実際に異なるサブスクリプションアドレスから取得した Clash クライアント設定は異なる場合がありますが、以下の proxies
設定部分は含まれています。この部分の設定情報に注目する必要があります。
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info
external-controller: '127.0.0.1:9090'
dns:
enable: true
ipv6: false
default-nameserver: [223.5.5.5, 119.29.29.29]
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
use-hosts: true
nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
fallback: ['https://doh.dns.sb/dns-query', 'https://dns.cloudflare.com/dns-query', 'https://dns.twnic.tw/dns-query', 'tls://8.8.4.4:853']
fallback-filter: { geoip: true, ipcidr: [240.0.0.0/4, 0.0.0.0/32] }
proxies:
- { name: '中国香港', type: ss, server: 2c1pxt70c3wovpi-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: 7c83123b-dbce-4eaa-99d8-a5375e4a5e76, udp: true }
- { name: '中国台湾', type: ss, server: i4bmvbyi1qqmn86-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: b12dbf40-b0f0-4ae7-b467-9770bbe417cc, udp: true }
- { name: '新加坡', type: ss, server: 27yisychzummw6a-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: bf01255e-7d99-4d19-bc04-f3d947d54687, udp: true }
- { name: '日本', type: ss, server: 2hjn0ex4v0wkush-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: 9449285e-9301-429f-ab28-ffeb4c24e322, udp: true }
proxies
設定の各行は 1 つのノード設定情報を表します。特に注目すべきは name
というフィールド名です。
ノードリスニング設定の追加#
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info
external-controller: '127.0.0.1:9090'
dns:
enable: true
ipv6: false
default-nameserver: [223.5.5.5, 119.29.29.29]
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
use-hosts: true
nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
fallback: ['https://doh.dns.sb/dns-query', 'https://dns.cloudflare.com/dns-query', 'https://dns.twnic.tw/dns-query', 'tls://8.8.4.4:853']
fallback-filter: { geoip: true, ipcidr: [240.0.0.0/4, 0.0.0.0/32] }
proxies:
- { name: '中国香港', type: ss, server: 2c1pxt70c3wovpi-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: 7c83123b-dbce-4eaa-99d8-a5375e4a5e76, udp: true }
- { name: '中国台湾', type: ss, server: i4bmvbyi1qqmn86-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: b12dbf40-b0f0-4ae7-b467-9770bbe417cc, udp: true }
- { name: '新加坡', type: ss, server: 27yisychzummw6a-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: bf01255e-7d99-4d19-bc04-f3d947d54687, udp: true }
- { name: '日本', type: ss, server: 2hjn0ex4v0wkush-mca.bgp.skin, port: 37007, cipher: aes-128-gcm, password: 9449285e-9301-429f-ab28-ffeb4c24e322, udp: true }
listeners:
- {name: '中国香港ノードリスニング', type: mixed, port: 46001, proxy: '中国香港'}
- {name: '中国台湾ノードリスニング', type: mixed, port: 46002, proxy: '中国台湾'}
- {name: '新加坡ノードリスニング', type: mixed, port: 46003, proxy: '新加坡'}
- {name: '日本ノードリスニング', type: mixed, port: 46004, proxy: '日本'}
listeners:
リスナーは、指定されたノードのトラフィックをローカルポートに転送するために設定されたノードをリスニングします。各行は 1 つのノードのリスニング設定を表します。name:
現在のリスナーの名前(重複不可)type:
mixed は混合タイプを示します。port:
転送されるローカルポート(未使用のポート)proxy:
リスニングするプロキシノードの名前、すなわちproxies
の中のあるノードのname
名称です。
設定の再適用#
変更された設定ファイルを Clash クライアントに再適用すれば、効果が現れます。
プロキシポートの検証#
以下のいずれかの方法でプロキシポートを検証できます:
- Nmap
https://nmap.org/download.html
- telnet
telnet localhost 44001
telnet localhost 44002
telnet localhost 44003
telnet localhost 44004
- フィンガープリンティングブラウザ
注意事項#
Clash クライアントのサブスクリプション自動更新機能を無効にするためには(設定の意図しない更新による喪失を防ぐため)、サブスクリプション情報を手動で更新する必要があります。サブスクリプション情報を更新すると、以前に変更した設定が上書きされるため、手動更新後に再度設定を行う必要があります。現在、サブスクリプション設定を変換するのに役立つオンラインツールがいくつかあります。変換後に listeners
部分をコピーして自分の Clash 設定に貼り付けることができます。この方法は比較的簡単です。例えば、以下のツールを使用できます:https://www.kjfx.cc/c/socks.html