Clash には複数のアウトバウンド種別があり、それぞれ特徴と用途が異なります。このページでは、各種別に共通する特徴と、使用方法および設定方法を説明します。
Proxies プロキシノード
Proxies プロキシノードは、設定可能なアウトバウンドの接続先です。プロキシサーバーと同様に、ここでパケットの送信先を定義します。
Shadowsocks
Clash は、次の Shadowsocks 暗号化方式に対応しています:
| シリーズ | 暗号化方式 |
|---|---|
| AEAD | aes-128-gcm, aes-192-gcm, aes-256-gcm, chacha20-ietf-poly1305, xchacha20-ietf-poly1305 |
| ストリーム方式 | aes-128-cfb, aes-192-cfb, aes-256-cfb, rc4-md5, chacha20-ietf, xchacha20 |
| ブロック方式 | aes-128-ctr, aes-192-ctr, aes-256-ctr |
さらに、Clash は一般的な Shadowsocks プラグインである obfs と v2ray-plugin にも対応しています。
- name: "ss1"
type: ss
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
cipher: chacha20-ietf-poly1305
password: "password"
# udp: true- name: "ss2"
type: ss
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
cipher: chacha20-ietf-poly1305
password: "password"
plugin: obfs
plugin-opts:
mode: tls # or http
# host: bing.com- name: "ss3"
type: ss
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
cipher: chacha20-ietf-poly1305
password: "password"
plugin: v2ray-plugin
plugin-opts:
mode: websocket # 暂不支持 QUIC
# tls: true # wss
# skip-cert-verify: true
# host: bing.com
# path: "/"
# mux: true
# headers:
# custom: valueShadowsocksR
Clash は、検閲回避プロトコルとして悪名のある ShadowsocksR にも対応しています。
対応する ShadowsocksR 暗号化方式:
| シリーズ | 暗号化方式 |
|---|---|
| ストリーム方式 | aes-128-cfb, aes-192-cfb, aes-256-cfb, rc4-md5, chacha20-ietf, xchacha20 |
対応する難読化方式:
- plain
- http_simple
- http_post
- random_head
- tls1.2_ticket_auth
- tls1.2_ticket_fastauth
対応するプロトコル:
- origin
- auth_sha1_v4
- auth_aes128_md5
- auth_aes128_sha1
- auth_chain_a
- auth_chain_b
- name: "ssr"
type: ssr
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
cipher: chacha20-ietf
password: "password"
obfs: tls1.2_ticket_auth
protocol: auth_sha1_v4
# obfs-param: domain.tld
# protocol-param: "#"
# udp: trueVmess
Clash は、次の Vmess 暗号化方式に対応しています:
- auto
- aes-128-gcm
- chacha20-poly1305
- none
- name: "vmess"
type: vmess
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
uuid: uuid
alterId: 32
cipher: auto
# udp: true
# tls: true
# skip-cert-verify: true
# servername: example.com # 优先于 wss 主机
# network: ws
# ws-opts:
# path: /path
# headers:
# Host: v2ray.com
# max-early-data: 2048
# early-data-header-name: Sec-WebSocket-Protocol- name: "vmess-http"
type: vmess
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
uuid: uuid
alterId: 32
cipher: auto
# udp: true
# network: http
# http-opts:
# # method: "GET"
# # path:
# # - '/'
# # - '/video'
# # headers:
# # Connection:
# # - keep-alive- name: "vmess-h2"
type: vmess
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
uuid: uuid
alterId: 32
cipher: auto
network: h2
tls: true
h2-opts:
host:
- http.example.com
- http-alt.example.com
path: /- name: vmess-grpc
type: vmess
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
uuid: uuid
alterId: 32
cipher: auto
network: grpc
tls: true
servername: example.com
# skip-cert-verify: true
grpc-opts:
grpc-service-name: "example"Socks5
さらに、Clash は Socks5 プロキシにも対応しています。
- name: "socks"
type: socks5
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
# username: username
# password: password
# tls: true
# skip-cert-verify: true
# udp: trueHTTP
Clash は HTTP プロキシにも対応しています:
- name: "http"
type: http
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
# username: username
# password: password- name: "http"
type: http
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
# username: username
# password: password
tls: true
skip-cert-verify: trueSnell
任意の検閲回避プロトコルとして、Clash は Snell への対応も組み込んでいます。
# 暂不支持 UDP
- name: "snell"
type: snell
# interface-name: eth0
# routing-mark: 1234
server: server
port: 44046
psk: yourpsk
# version: 2
# obfs-opts:
# mode: http # or tls
# host: bing.comTrojan
Clash は、一般的なプロトコルである Trojan に標準対応しています:
- name: "trojan"
type: trojan
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
password: yourpsk
# udp: true
# sni: example.com # aka server name
# alpn:
# - h2
# - http/1.1
# skip-cert-verify: true- name: trojan-grpc
type: trojan
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
password: "example"
network: grpc
sni: example.com
# skip-cert-verify: true
udp: true
grpc-opts:
grpc-service-name: "example"- name: trojan-ws
type: trojan
# interface-name: eth0
# routing-mark: 1234
server: server
port: 443
password: "example"
network: ws
sni: example.com
# skip-cert-verify: true
udp: true
# ws-opts:
# path: /path
# headers:
# Host: example.comProxy Groups ポリシーグループ
Proxy Groups ポリシーグループは、ルールから渡されたリクエストをポリシーに応じて振り分けます。ルールから直接参照することも、別のポリシーグループから参照することもでき、最上位のポリシーグループがルールから参照されます。
relay リレー
リクエストは、指定したプロキシサーバーを順に経由します。現在 UDP には対応していません。指定するプロキシサーバーに、別の relay リレーを含めないでください。
url-test 遅延テスト
Clash は指定した URL へ HTTP HEAD リクエストを定期的に送り、一覧内の各プロキシサーバーの遅延を測定します。許容値の上限、テスト間隔、対象 URL を設定できます。
fallback 可用性テスト
Clash は指定した URL へ HTTP HEAD リクエストを定期的に送り、一覧内の各プロキシサーバーの利用可否を確認します。最初に利用可能と判定されたサーバーが使用されます。
load-balance 負荷分散
同じ eTLD+1 へのリクエストには、同じプロキシサーバーが使用されます。
select 手動選択
Clash は起動時、既定でポリシーグループの最初のプロキシサーバーを使用します。使用するサーバーは RESTful API で選択できます。このモードでは、設定にサーバーを直接記述するか、Proxy Providers プロキシセット で動的に追加できます。
どちらの方式でも、パケットを直接接続でルーティングしたい場合があります。その場合は、DIRECT の直接接続アウトバウンドを使用できます。
別のネットワークインターフェースを使用するには、DIRECT の直接接続アウトバウンドを含むポリシーグループを用意し、interface-name オプションを設定します。
- name: "My Wireguard Outbound"
type: select
interface-name: wg0
proxies: [ 'DIRECT' ]Proxy Providers プロキシセット
プロキシセットでは、設定ファイルへ直接記述する代わりに、プロキシサーバーの一覧を動的に読み込めます。現在、サーバー一覧を読み込めるプロキシセットは二種類あります:
http:Clash は起動時に指定した URL からサーバー一覧を読み込みます。intervalオプションを設定すると、Clash はリモートからサーバー一覧を定期的に取得します。file:Clash は起動時に、指定したファイルの場所からサーバー一覧を読み込みます。
ヘルスチェックはどちらのモードでも利用でき、ポリシーグループの fallback と同じように動作します。サーバー一覧ファイルの設定形式も、メイン設定ファイルと同一です:
proxy-providers:
provider1:
type: http
url: "url"
interval: 3600
path: ./provider1.yaml
# filter: 'a|b' # golang regex 正则表达式
health-check:
enable: true
interval: 600
# lazy: true
url: http://www.gstatic.com/generate_204
test:
type: file
path: /test.yaml
health-check:
enable: true
interval: 36000
url: http://www.gstatic.com/generate_204proxies:
- name: "ss1"
type: ss
server: server
port: 443
cipher: chacha20-ietf-poly1305
password: "password"
- name: "ss2"
type: ss
server: server
port: 443
cipher: chacha20-ietf-poly1305
password: "password"
plugin: obfs
plugin-opts:
mode: tls