설정 · 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