프록시 프로토콜 · Clash 문서

SOCKS5 아웃바운드 프록시

현재 Mihomo 필드를 기준으로 Clash 생태계의 SOCKS5 아웃바운드를 설정합니다. TCP CONNECT, UDP Associate, 인증, TLS 래핑을 다룹니다.

  • CONNECT
  • UDP Associate
  • TLS
  • 인증서 검증
  • ip-version
프록시 프로토콜

SOCKS5의 TCP 및 UDP 동작 방식

TCP 요청은 SOCKS5 CONNECT 명령으로 업스트림 프록시에 전달됩니다. 다음을 켜면 udp 클라이언트가 다음을 통해 UDP ASSOCIATE UDP 전달을 설정하고 해당 TCP 제어 연결을 유지합니다.

SOCKS5 프로토콜 자체는 클라이언트와 업스트림 사이의 연결을 암호화하지 않습니다.tls: true 는 SOCKS5 핸드셰이크 바깥에 TLS 래핑을 추가합니다. 업스트림 서비스도 같은 방식으로 수신해야 합니다.

최소 설정 및 인증 필드

인증이 필요하지 않다면 노드 이름, 유형, 서버 및 포트만 입력하면 됩니다. 업스트림에서 사용자 이름과 비밀번호 인증을 요구할 때 인증 필드를 추가하세요.

name필수
노드 이름이며 현재 설정 안에서 고유해야 합니다.
type필수
고정값 socks5
server필수
업스트림 SOCKS5 서비스의 도메인 또는 IP 주소입니다.
port필수
업스트림 SOCKS5 서비스 포트입니다.
username필요한 경우
업스트림에서 사용자 이름과 비밀번호 인증을 사용하는 경우 입력합니다.
password필요한 경우
사용자 이름에 해당하는 인증 비밀번호입니다.

TLS 및 인증서 검증

TLS 필드에서는 업스트림 SOCKS5 서버의 인증서를 검증합니다. 현재 SOCKS5 아웃바운드에는 별도의 sni 필드가 없으며 TLS ServerName은 기본적으로 server

tls필요한 경우
업스트림이 TLS로 래핑된 SOCKS5 서비스를 제공할 때 다음 값으로 설정합니다: true
skip-cert-verify주의
인증서 검증을 건너뜁니다. 인증서 문제를 잠시 진단할 때만 사용하는 것이 좋습니다.
name-cert-verify필요한 경우
연결 주소는 변경하지 않고 인증서 DNSName 검증 대상만 변경합니다.
fingerprint필요한 경우
전체 인증서의 SHA-256 지문이며 uTLS 브라우저 지문이 아닙니다.
certificate / private-key필요한 경우
두 항목을 함께 입력하면 업스트림 TLS 연결에 클라이언트 인증서 인증을 사용합니다.

UDP 및 IP 버전

UDP Associate에서는 업스트림이 UDP 릴레이 주소를 반환합니다. 지정되지 않은 주소를 반환하면 클라이언트가 업스트림 서버 주소로 보완합니다. 업스트림은 해당 UDP 포트와 소스를 허용해야 합니다.

udp필요한 경우
이 노드가 UDP를 처리하도록 허용하며 기본값은 꺼짐입니다.
ip-version필요한 경우
다음 값이 server 도메인일 때 IPv4, IPv6, 듀얼 스택 또는 우선순위를 제어합니다.
dialer-proxy필요한 경우
현재 SOCKS5 노드가 다른 노드나 정책 그룹을 통해 업스트림 연결을 설정하도록 합니다.

인증을 사용하는 SOCKS5 예시

이 예시는 사용자 이름과 비밀번호 인증을 사용하고 UDP 전달을 요청합니다. 업스트림이 UDP를 지원하지 않으면 udp을 삭제하고, 업스트림에서 TLS 래핑을 사용한다면 tls: true 및 해당 인증서 검증 필드를 추가하세요.

  • TCP는 작동하지만 UDP가 작동하지 않으면 업스트림이 UDP Associate를 구현했는지 먼저 확인하세요.
  • TLS 핸드셰이크에 실패하면 해당 포트에서 일반 SOCKS5가 아니라 TLS로 래핑된 SOCKS5 서비스가 실행 중인지 확인하세요.
  • 인증에 실패하면 서버에서 실제로 지원하는 인증 방식을 기준으로 확인하세요. SOCKS5 아웃바운드는 서드파티 인증 플러그인을 자동으로 협상하지 않습니다.
YAML
proxies:
  - name: socks-upstream
    type: socks5
    server: proxy.example.com
    port: 1080
    username: user
    password: pass
    udp: true