設定 · Clash ドキュメント

Outbound

オリジナル Clash の Shadowsocks、SSR、VMess、SOCKS5、HTTP、Snell、Trojan アウトバウンド形式をまとめ、認証、暗号化、TLS、UDP、プラグインの各フィールドを確認できます。

  • Shadowsocks
  • ShadowsocksR
  • VMess
  • Trojan
  • SOCKS5
設定

Clash には複数のアウトバウンド種別があり、それぞれ特徴と用途が異なります。このページでは、各種別に共通する特徴と、使用方法および設定方法を説明します。

Proxies プロキシノード

Proxies プロキシノードは、設定可能なアウトバウンドの接続先です。プロキシサーバーと同様に、ここでパケットの送信先を定義します。

Shadowsocks

Clash は、次の Shadowsocks 暗号化方式に対応しています:

シリーズ暗号化方式
AEADaes-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 プラグインである obfsv2ray-plugin にも対応しています。

yaml
- name: "ss1"
  type: ss
  # interface-name: eth0
  # routing-mark: 1234
  server: server
  port: 443
  cipher: chacha20-ietf-poly1305
  password: "password"
  # udp: true
yaml
- 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
yaml
- 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: value

ShadowsocksR

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
yaml
- 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: true

Vmess

Clash は、次の Vmess 暗号化方式に対応しています:

  • auto
  • aes-128-gcm
  • chacha20-poly1305
  • none
yaml
- 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
yaml
- 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
yaml
- 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: /
yaml
- 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 プロキシにも対応しています。

yaml
- 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: true

HTTP

Clash は HTTP プロキシにも対応しています:

yaml
- name: "http"
  type: http
  # interface-name: eth0
  # routing-mark: 1234
  server: server
  port: 443
  # username: username
  # password: password
yaml
- name: "http"
  type: http
  # interface-name: eth0
  # routing-mark: 1234
  server: server
  port: 443
  # username: username
  # password: password
  tls: true
  skip-cert-verify: true

Snell

任意の検閲回避プロトコルとして、Clash は Snell への対応も組み込んでいます。

yaml
# 暂不支持 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.com

Trojan

Clash は、一般的なプロトコルである Trojan に標準対応しています:

yaml
- 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
yaml
- 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"
yaml
- 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.com

Proxy 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 オプションを設定します。

yaml
- name: "My Wireguard Outbound"
  type: select
  interface-name: wg0
  proxies: [ 'DIRECT' ]

Proxy Providers プロキシセット

プロキシセットでは、設定ファイルへ直接記述する代わりに、プロキシサーバーの一覧を動的に読み込めます。現在、サーバー一覧を読み込めるプロキシセットは二種類あります:

  • http:Clash は起動時に指定した URL からサーバー一覧を読み込みます。interval オプションを設定すると、Clash はリモートからサーバー一覧を定期的に取得します。
  • file:Clash は起動時に、指定したファイルの場所からサーバー一覧を読み込みます。

ヘルスチェックはどちらのモードでも利用でき、ポリシーグループの fallback と同じように動作します。サーバー一覧ファイルの設定形式も、メイン設定ファイルと同一です:

yaml
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_204
yaml
proxies:
  - 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