프록시 프로토콜 · Clash 문서

Hysteria2

현재 Mihomo 필드를 기준으로 Clash 생태계의 Hysteria2 아웃바운드를 설정합니다. 인증, 포트 호핑, 난독화, 혼잡 제어, Realm 매개변수를 다룹니다.

  • password
  • 포트 호핑
  • obfs
  • 혼잡 제어
  • Realm
프록시 프로토콜

프로토콜 범위 및 최소 설정

type: hysteria2 은 새롭게 설계된 Hysteria 2 프로토콜에 해당합니다. QUIC와 UDP에서 작동하고 트래픽을 HTTP/3처럼 보이게 하지만 Hysteria 1.x 서버에는 연결할 수 없습니다.

노드에는 이름, 유형, 서버 및 하나의 유효한 포트 출처가 필요합니다. 단일 port을 입력하거나 ports 을 입력해 포트 호핑을 활성화할 수 있습니다. 둘 다 없으면 클라이언트가 invalid port 오류로 노드 생성을 거부합니다.

name필수
정책 그룹과 규칙에서 참조하는 노드 이름입니다.
type: hysteria2필수
Hysteria 1.x의 호환 모드가 아니라 Hysteria2 구현을 선택합니다.
server필수
서버 도메인 또는 IP 주소입니다.
port / ports두 가지 중 하나
단일 포트를 입력하거나 포트 목록과 범위를 제공해 호핑을 활성화합니다.
password인증
서버 인증 비밀번호를 입력합니다. 현재 생성자는 빈 문자열을 허용하지만 서버에서 빈 인증을 명시적으로 허용할 때만 생략할 수 있습니다.

인증 및 TLS 검증

Hysteria2는 TLS 1.3을 사용합니다. 인증 비밀번호와 TLS 인증서 검증은 서로 독립된 과정이므로 비밀번호가 맞더라도 신뢰할 수 있는 인증서와 올바른 서버 이름을 대신할 수 없습니다.

password인증
서버가 클라이언트 신원을 확인하는 비밀번호입니다. userpass 서버를 사용한다면 서버에서 제공한 전체 형식으로 입력하세요.
sniTLS
인증서에 해당하는 서버 이름을 설정하며 생략하면 server를 사용합니다.
alpnTLS
공식 예시는 h3를 사용합니다. 서버에서 명시적으로 요구할 때만 기본 협상 결과를 덮어쓰세요.
skip-cert-verify위험
인증서 검증을 건너뜁니다. 위험을 명확히 이해한 테스트나 자체 서명 환경에서만 사용하세요.
name-cert-verifyTLS
인증서 이름 검증 대상을 별도로 지정합니다.
fingerprintTLS
서버 인증서의 SHA-256 지문을 고정합니다.
certificate / private-keymTLS
서버에서 클라이언트 인증서를 요구할 때 두 항목을 함께 입력합니다.

포트 호핑

다음을 입력하면 ports 클라이언트는 포트 집합에서 연결을 설정하고 단일 port을 무시합니다. 포트 집합은 현재 코어의 포트 범위 구문을 사용하며 하이픈으로 범위를 표시하고 쉼표나 슬래시로 여러 값을 구분할 수 있습니다.

ports선택 사항
예: 443,20000-21000. 서버와 방화벽에서 정확히 같은 UDP 포트 집합을 열어야 합니다.
hop-interval기본값 30초
고정된 초 단위를 사용하거나 15-30으로 입력해 전환할 때마다 간격을 무작위로 선택할 수 있습니다.
최소 간격5초
현재 구현은 5초보다 작은 시작 값을 5초로 올립니다.
범위 제한중요
hop-interval에는 범위 하나만 입력할 수 있으며 쉼표로 여러 범위를 넣을 수 없습니다. ports가 설정되지 않으면 이 필드는 적용되지 않습니다.

Salamander 및 Gecko 난독화

난독화는 QUIC 패킷의 식별 가능한 특성을 바꾸지만 Hysteria2를 TCP로 바꾸거나 모든 UDP를 차단하는 네트워크를 우회하지는 못합니다. 클라이언트와 서버가 같은 유형과 비밀번호를 사용해야 합니다.

obfs선택 사항
현재 salamander와 gecko를 지원하며 비워 두면 난독화를 비활성화합니다.
obfs-password조건부 필수
obfs를 입력하면 난독화 비밀번호도 함께 입력해야 합니다. 그렇지 않으면 클라이언트가 missing obfs password 오류를 보고합니다.
obfs-min-packet-sizeGecko 전용
핸드셰이크 조각의 최소 전송 패킷 크기를 설정하며 공식 업스트림 기본값은 512바이트입니다.
obfs-max-packet-sizeGecko 전용
핸드셰이크 조각의 최대 전송 패킷 크기를 설정하며 공식 업스트림 기본값은 1200바이트입니다.
Gecko 범위제약 조건
최대값은 최소값보다 작지 않고 2048바이트를 넘지 않아야 합니다. Salamander는 이 두 패킷 크기 필드를 읽지 않습니다.

대역폭, 혼잡 제어 및 QUIC 창

Hysteria2의 updown 은 Hysteria 1.x와 달리 방향별로 Brutal 사용 여부를 결정합니다. 다음을 입력하면 up 클라이언트 업로드 방향에서 Brutal을 활성화하고 다음을 입력하면 down 다운로드 목표 속도를 서버 방향에서 처리하도록 전달합니다.

클라이언트에서 사용하는 bbr-profile 설정은 업로드 Brutal이 활성화되지 않았을 때 로컬 QUIC 송신 방향만 제어하며 서버의 다운로드 방향 혼잡 제어를 대신 선택하지 않습니다. 수신 창은 quic-go 고급 매개변수이므로 대역폭 지연 곱과 메모리 비용을 이해하지 못한 상태에서 변경하지 마세요.

up / down선택 사항
Brutal 속도를 입력합니다. 단위를 쓰지 않으면 Mbps로 해석하며 안정적으로 달성 가능한 연결 속도를 넘지 않아야 합니다.
bbr-profile기본값 standard
standard, conservative 또는 aggressive를 선택할 수 있으며 클라이언트가 다음을 사용하지 않을 때만 영향을 줍니다: up Brutal의 업로드 송신 방향입니다.
initial-stream-receive-window고급
QUIC 개별 스트림의 초기 수신 창입니다.
max-stream-receive-window고급
QUIC 개별 스트림의 최대 수신 창입니다.
initial-connection-receive-window고급
전체 QUIC 연결의 초기 수신 창입니다.
max-connection-receive-window고급
전체 QUIC 연결의 최대 수신 창입니다.

Hysteria2 Realm

realm-opts Hysteria2 Realm 연결을 위한 UDP 홀 펀칭 및 중개 서비스에 사용합니다. 기본적으로 꺼져 있으며 서버 또는 Realm 제공자가 매개변수를 명시적으로 제공한 경우에만 활성화해야 합니다.

realm-opts.enable기본값 false
Realm을 활성화하려면 true로 명시적으로 설정해야 합니다.
realm-opts.server-urlRealm
중개 서비스의 HTTPS 주소입니다.
realm-opts.token / realm-opts.realm-idRealm
중개 서비스 토큰과 대상 Realm 식별자를 각각 입력합니다.
realm-opts.stun-serversRealm
공인 UDP 주소를 검색할 STUN 서버 목록입니다.
realm-opts.sni / skip-cert-verify / fingerprint적용 범위
이 하위 필드는 다음에만 적용되며 realm-opts.server-url프록시 서버의 TLS 필드를 대신하지 않습니다.

기본 예시 및 자주 발생하는 잘못된 설정

먼저 단일 포트와 난독화 없는 설정으로 인증 및 TLS를 확인한 뒤 서버의 실제 설정에 따라 포트 호핑이나 난독화를 추가하세요.

  • Hysteria 1.x의 auth-str 또는 protocol을 복사합니다. 이 필드들은 Hysteria2에 속하지 않습니다.
  • obfs를 입력하면서 obfs-password을 누락하면 노드 생성 단계에서 즉시 오류가 발생합니다.
  • ports를 활성화했지만 서버나 방화벽에서 같은 포트 범위를 열지 않아 주기적으로 연결이 끊깁니다.
  • 설정에서 updown 값을 실제 연결 대역폭보다 훨씬 높게 입력해 혼잡과 패킷 손실을 일으킵니다.
YAML
proxies:
  - name: hysteria2-node
    type: hysteria2
    server: server.example.com
    port: 443
    password: replace-with-server-password
    sni: server.example.com
    alpn:
      - h3
    skip-cert-verify: false