프록시 프로토콜을 선택할 때 대부분의 사람들은 "작동하는가?"만 묻습니다. 하지만 은닉 능력, 처리량, 설정 복잡성에는 큰 차이가 있습니다. 이 글에서는 Clash/Mihomo가 지원하는 주요 프로토콜을 기본 원리부터 비교하여 네트워크 환경에 맞는 최선의 선택을 돕습니다.

VMess: V2Ray의 대표 프로토콜

VMess는 V2Ray 프로젝트가 설계한 암호화 전송 프로토콜로, Clash에서 가장 초기부터 널리 사용된 프로토콜 중 하나입니다. VMess는 UUID를 인증 자격 증명으로 사용하고 타임스탬프 검사(서버와 클라이언트가 90초 이내여야 함)를 통합하여 재생 공격을 효과적으로 방지합니다.

VMess는 패킷 헤더를 난독화하여 기본 프로토콜에 어느 정도의 트래픽 핑거프린트 저항성을 부여합니다. ws + TLS(WebSocket over TLS) 또는 grpc + TLS 전송과 결합하면 트래픽이 일반 HTTPS와 거의 구분할 수 없게 됩니다. 주요 단점은 고레이턴시 링크에서 QUIC 기반 프로토콜에 비해 헤더 암호화 오버헤드가 약간 높고, 시간 동기화 요구 사항이 서버 측 운영 부담을 약간 증가시킨다는 것입니다.

VMess + WS + TLS 설정 예제
proxies:
  - name: vmess-ws
    type: vmess
    server: example.com
    port: 443
    uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    alterId: 0           # 0은 AEAD 암호화 활성화 (권장)
    cipher: auto
    tls: true
    network: ws
    ws-opts:
      path: /api/v1/ws
      headers:
        Host: example.com

VLESS: 경량화된 후속 프로토콜

VLESS는 VMess의 간소화된 후속 버전입니다. VMess의 대칭 암호화 레이어를 제거하고 모든 암호화 책임을 외부 TLS에 위임하여 CPU 오버헤드를 낮추고 처리량을 높입니다. XTLS Vision 플로우 컨트롤과 함께 사용하면 VLESS는 내부 TLS 데이터를 그대로 통과시킬 수 있어 이중 TLS의 성능 비용을 피할 수 있습니다. 고대역폭 시나리오에서 최강의 선택입니다.

주의: VLESS는 TLS 없이 배포해서는 안 됩니다. 보안은 완전히 외부 TLS 레이어에 의존합니다. alterId도 지원하지 않으며, 인증은 UUID만으로 이루어집니다.

Trojan: TLS 자체를 위장으로 사용

Trojan은 VMess/VLESS와 완전히 다른 설계 철학을 가집니다. 트래픽을 "HTTPS처럼 보이게 만드는" 대신 실제 TLS 위에서 직접 실행됩니다. TLS 핸드셰이크 후 클라이언트가 인증을 위한 비밀번호를 전송합니다. 잘못된 비밀번호의 요청은 실제 웹 서버(예: Nginx)로 포워딩되므로 방화벽이나 DPI 시스템의 능동적인 프로빙에도 정당한 HTTPS 응답이 반환됩니다.

Trojan의 능동적 프로빙 저항성이 가장 두드러진 특징입니다. 검사자가 Trojan 서버에 직접 연결을 시도해도 올바른 비밀번호 없이는 프로브 트래픽이 실제 웹 백엔드로 서비스되어 검사자는 이것이 프록시임을 알 수 없습니다. 단점으로는 복잡한 설정(실제 도메인 이름과 유효한 인증서 필요)과 VLESS+XTLS에 비해 약간 낮은 단일 연결 처리량이 있습니다.

Trojan 설정 예제
proxies:
  - name: trojan-node
    type: trojan
    server: example.com
    port: 443
    password: your-password
    sni: example.com
    skip-cert-verify: false   # 프로덕션에서는 절대 true로 설정하지 마세요
    udp: true

Hysteria2: QUIC 시대의 속도 챔피언

Hysteria2는 QUIC(UDP 기반의 다중화된 신뢰성 있는 전송) 위에 구축되었으며, BBR 혼잡 제어와 적극적인 대역폭 활용 전략을 채택합니다. 고패킷 손실, 고레이턴시 링크에서 Hysteria2는 모든 TCP 기반 프로토콜을 크게 능가합니다. 테스트에서 30% 패킷 손실 환경에서도 Hysteria2는 거의 전체 대역폭을 유지하는 반면, TCP 기반 프로토콜은 10% 이하로 떨어집니다.

단점: Hysteria2의 UDP 트래픽은 더 특징적인 핑거프린트를 가지며, UDP를 적극적으로 제한하는 네트워크(일부 캠퍼스나 기업 네트워크)에서는 스로틀링되거나 차단될 수 있습니다. 또한 혼잡 알고리즘이 상당한 업스트림 대역폭을 소비하므로 업링크 용량이 제한된 VPS 인스턴스에는 적합하지 않을 수 있습니다.

Hysteria2 팁: updown 필드는 실제 대역폭(Mbps)을 반영해야 합니다. 너무 높게 설정하면 혼잡 알고리즘이 과도하게 공격적이 되어 오히려 성능이 저하됩니다. 먼저 실제 대역폭을 측정하세요.
Hysteria2 설정 예제
proxies:
  - name: hy2-node
    type: hysteria2
    server: example.com
    port: 443
    password: your-password
    up: 50 Mbps
    down: 200 Mbps
    sni: example.com
    skip-cert-verify: false

프로토콜 선택 참고표

프로토콜전송은닉성고레이턴시 성능설정 복잡성적합한 용도
VMess+WS+TLSTCP★★★★☆보통보통범용, 광범위한 호환성
VLESS+XTLSTCP★★★★★보통높음고대역폭, 성능 우선
TrojanTCP★★★★★보통보통능동적 프로빙 저항, 셀프호스팅
Hysteria2UDP/QUIC★★★☆☆최강낮음고패킷 손실/고레이턴시 환경

하나의 설정에 여러 프로토콜 혼합

Clash에서는 서로 다른 프로토콜의 노드를 같은 프록시 그룹에 배치할 수 있습니다. 실용적인 접근: Hysteria2 노드와 TCP 프로토콜 노드를 모두 url-test 그룹에 추가하세요. Clash가 자동으로 벤치마크하여 가장 빠른 것을 선택합니다. 네트워크 환경이 QUIC에 유리하면 Hysteria2가 선택되고, UDP가 제한되면 Clash가 자동으로 Trojan이나 VMess로 폴백합니다.