프록시 프로토콜 · Clash 문서

HTTP / HTTPS 아웃바운드 프록시

현재 Mihomo 필드를 기준으로 Clash 생태계의 HTTP 아웃바운드를 설정합니다. CONNECT 터널, 프록시 인증, HTTPS 업스트림, 인증서 검증을 다룹니다.

  • CONNECT
  • TLS
  • SNI
  • 인증서 검증
  • mTLS
프록시 프로토콜

HTTP 아웃바운드의 연결 방식

클라이언트가 먼저 연결할 대상은 server:port 지정된 업스트림 프록시이며, 이어서 HTTP CONNECT 요청을 보내 대상 호스트까지 TCP 터널을 설정합니다. 대상 사이트가 HTTP를 사용하는지 HTTPS를 사용하는지는 여기서 지정하는 노드 유형에 영향을 주지 않습니다.

type: http 기본값은 업스트림 프록시에 평문으로 연결한다는 뜻입니다. 다음을 설정한 경우에만 tls: true클라이언트와 업스트림 프록시 사이 구간에서 TLS를 사용합니다. HTTP 아웃바운드 자체는 UDP 전달을 제공하지 않습니다.

최소 필수 필드

다음 네 항목으로 인증이 필요 없는 최소 HTTP 아웃바운드를 구성할 수 있습니다. 노드 이름은 정책 그룹과 규칙에서 참조하므로 다른 노드와 중복되어서는 안 됩니다.

name필수
노드 이름입니다. 이후 proxy-groups 또는 규칙에서 사용합니다.
type필수
고정값 http
server필수
업스트림 HTTP 프록시의 도메인 또는 IP 주소입니다.
port필수
업스트림 프록시가 수신하는 포트입니다. 포트 번호 자체로 TLS 활성화 여부가 결정되지는 않습니다.

인증 및 CONNECT 요청 헤더

업스트림에서 Basic 프록시 인증을 요구하면 사용자 이름과 비밀번호를 함께 입력하세요.headers CONNECT 요청에 추가되며, 게이트웨이 요구 사항에 따라 기본 Host, User-Agent 또는 Proxy-Connection 등의 요청 헤더를 덮어쓸 수 있습니다.

username필요한 경우
업스트림 프록시 인증 사용자 이름입니다. 현재 구현에서는 사용자 이름과 비밀번호가 모두 비어 있지 않을 때만 Basic 인증을 전송합니다.
password필요한 경우
와 함께 사용하는 username 프록시 인증 비밀번호입니다.
headers필요한 경우
키-값 형식의 CONNECT 요청 헤더입니다. 대상 웹사이트의 일반 요청 헤더를 여기에 설정하지 마세요.

HTTPS 업스트림 및 인증서 검증

TLS를 켜면 SNI, 인증서 이름 및 인증서 체인은 최종 접속 사이트가 아니라 업스트림 프록시를 대상으로 합니다. 일반적인 환경에서는 인증서 검증을 유지해야 합니다.

tls필요한 경우
다음 값으로 설정하면 true TLS로 업스트림 HTTP 프록시에 연결합니다.
sni필요한 경우
TLS 핸드셰이크의 서버 이름입니다. 생략하면 server
name-cert-verify필요한 경우
인증서 DNSName 검증 대상을 별도로 지정하며 SNI는 변경하지 않습니다.
skip-cert-verify주의
인증서 검증을 건너뜁니다. 위험을 명확히 이해한 상태에서 일시적으로 문제를 진단할 때만 사용하세요.
fingerprint필요한 경우
전체 인증서의 SHA-256 지문이며 브라우저 클라이언트 지문이 아닙니다.
certificate / private-key필요한 경우
두 항목을 함께 입력하면 mTLS가 활성화됩니다. PEM 내용이나 해당 파일 경로를 사용할 수 있습니다.

인증을 사용하는 HTTPS 노드 예시

이 예시는 업스트림 TLS와 Basic 인증을 함께 활성화합니다. 업스트림에 인증이 필요하지 않으면 username 와 함께 사용하는 password을 삭제하고, 업스트림이 평문 HTTP 프록시라면 tls 와 함께 사용하는 sni

  • TLS 핸드셰이크 오류가 발생하면 먼저 업스트림이 실제로 HTTPS 프록시 서비스를 제공하는지 확인하세요.
  • 407 Proxy Authentication Required가 발생하면 계정, 비밀번호 및 업스트림에서 허용하는 인증 방식을 확인하세요.
  • CONNECT method not allowed가 발생하면 업스트림이 포워드 프록시가 아니거나 CONNECT 메서드를 허용하지 않는 것일 수 있습니다.
YAML
proxies:
  - name: http-upstream
    type: http
    server: proxy.example.com
    port: 443
    username: user
    password: pass
    tls: true
    sni: proxy.example.com