Shadowrocket 지원 프로토콜: Shadowsocks·VMess·VLESS·Trojan·Hysteria2 한눈에 보기

Shadowsocks, VMess, VLESS, Trojan, HTTP/SOCKS5, WireGuard, Hysteria2의 전송 방식과 Add Server에서 입력할 항목을 한눈에 확인하세요.

이 글의 핵심 내용

Shadowrocket은 여러 프록시 및 터널 프로토콜을 지원합니다. 이미 사용할 서비스, 서버 매개변수 또는 구독을 보유한 사용자를 대상으로 각 프로토콜의 인증 방식과 전송 조건을 비교한 뒤, Home → + → Add Server에서 항목을 확인하고 연결 실패, TLS 오류, 규칙 미일치를 구분하는 방법을 안내합니다. 프로토콜은 서버 측 설정과 일치해야 하며, Type만 바꿔 기존 서버를 다른 프로토콜로 전환할 수는 없습니다.

지원 프로토콜 및 입력 항목 빠른 확인

직접 추가하려면 먼저 Add Server의 Type에서 프로토콜을 선택한 다음, 해당 유형에 표시되는 항목을 입력합니다. 프로토콜마다 인증 정보가 달라 서로 바꿔 쓸 수 없습니다. Shadowsocks의 Password는 VMess의 UUID가 아니며, WireGuard 키를 Trojan의 Password에 입력할 수도 없습니다. 아래는 일반적인 설정 참고 사항이며 전체 프로토콜 목록은 아닙니다. 지원되는 확장 기능과 항목 이름은 실제 화면을 기준으로 확인하세요.

프로토콜전송 및 인증 방식추가할 때 확인할 항목
Shadowsocks선택한 암호화 방식과 비밀번호로 인증합니다. TCP를 사용할 수 있으며, UDP는 양쪽 모두 지원해야 합니다.Address, Port, Method, Password. 플러그인을 사용하는 경우 관련 매개변수도 입력합니다.
VMessUUID로 사용자를 식별하며, 전송 방식과 TLS는 설정에 따라 달라집니다.Address, Port, UUID, 암호화 옵션, 전송 방식 및 TLS 매개변수
VLESSUUID로 인증하며, 프로토콜 자체에는 Shadowsocks와 같은 페이로드 암호화 계층이 없습니다.UUID, 전송 방식, 서버에서 요구하는 TLS 또는 기타 보안 계층 매개변수
Trojan일반적인 구성에서는 TLS로 서버에 연결하고 비밀번호로 인증합니다.Password, TLS 서버 이름, 인증서 검증 조건
HTTP / SOCKS5범용 프록시 프로토콜입니다. 인증 및 암호화 여부는 설정에 따라 다릅니다.Address, Port, 인증 정보. HTTP는 TLS 사용 여부도 확인해야 합니다.
WireGuardUDP 기반 암호화 터널이며 공개 키와 개인 키를 쌍으로 사용합니다.로컬 Private Key, 터널 주소, 상대방의 Public Key, Endpoint, 라우팅 범위
Hysteria2QUIC 기반으로 UDP를 사용하며, TLS와 설정된 인증 정보를 사용합니다.Address, Port, 인증 비밀번호, TLS 서버 이름. 대역폭 및 난독화 매개변수도 확인합니다.

이 항목에는 공통 기본값이 없습니다. Address와 Port는 기존 서버의 리슨 주소에 맞춰야 합니다. TLS 사용 여부와 WebSocket 전송 여부도 원래 설정대로 입력해야 합니다. 본문에 나오는 포트 예시는 항목의 의미를 설명하기 위한 것으로 서버 매개변수 대신 사용할 수 없습니다.

Shadowsocks, VMess, VLESS의 차이

Shadowsocks의 Method와 Password는 한 쌍으로 사용합니다. 비밀번호가 같아도 Method가 다르면 인증 또는 복호화에 실패할 수 있습니다. 서버의 UDP 지원 여부와 플러그인 필요 여부는 별개의 조건입니다. 웹 페이지가 열린다고 해서 실시간 음성 통화 등 UDP 트래픽도 통과한다고 단정할 수 없습니다.

WebSocket을 예로 들면 서버 주소, HTTP Host, Path, TLS 서버 이름은 각각 역할이 다릅니다. Address는 연결 진입점을 찾는 데 사용하고, Host와 Path는 애플리케이션 계층에서 요청을 전달하는 데 사용합니다. TLS 서버 이름은 핸드셰이크와 인증서 신원 확인에 사용됩니다. 값이 같은 경우도 있지만, 모두 같은 값으로 바꿔도 된다는 뜻은 아닙니다.

Trojan, HTTP, SOCKS5의 보안 범위

일반적인 Trojan 설정은 TLS로 클라이언트와 서버 간 연결을 보호합니다. Password가 맞더라도 TLS 연결에 성공한다고 볼 수는 없습니다. 인증서 만료, 설정과 다른 인증서 이름, 기기 시간 오류 등이 비밀번호 인증 전에 연결을 중단시킬 수 있습니다. 원래 매개변수와 인증서 조건을 확인하고, 인증서 검증을 끄는 방법을 일반적인 해결책으로 사용하지 마세요.

443
TLS 서비스에서 흔히 볼 수 있는 포트 예시이며, 모든 프로토콜에 고정된 Port는 아닙니다.
1080
SOCKS5에서 흔히 볼 수 있는 포트 예시입니다. 실제 리슨 포트에 맞춰 입력하세요.
128 bit
UUID의 길이입니다. VMess/VLESS에서 식별자로 사용하며 암호화 강도를 의미하지 않습니다.

요점: 포트만으로 프로토콜을 판단할 수 없습니다

포트가 443이어도 먼저 Type, 인증 방식, TLS 매개변수를 확인하세요. 443을 사용하는 모든 항목을 Trojan으로 입력해서는 안 됩니다.

HTTP 프록시는 CONNECT를 통해 HTTPS 대상과 터널을 설정할 수 있지만, 클라이언트와 프록시 서버 사이의 연결에도 반드시 TLS가 사용된다는 뜻은 아닙니다. SOCKS5 자체도 전송 암호화를 제공하지 않으며, 사용자 이름과 비밀번호 인증은 암호화 계층을 대신할 수 없습니다. HTTPS 대상에 접속할 때 대상과의 TLS 연결 및 프록시 진입점의 보안은 서로 다른 계층이므로 따로 이해해야 합니다.

Hysteria2 및 WireGuard의 UDP 조건

Hysteria2와 WireGuard는 모두 하위 계층에서 UDP를 사용하지만 같은 종류의 터널은 아닙니다. Hysteria2는 QUIC 기반이고 WireGuard는 자체 암호화 터널 방식을 사용합니다. 현재 네트워크에서 해당 UDP 포트를 차단하면 두 프로토콜 모두 정상적으로 연결되지 않을 수 있습니다. TCP 포트가 열려 있는지만 확인해서는 이 서비스를 검증할 수 없습니다.

설정 항목Hysteria2WireGuard
인증 정보서버 설정에 지정된 인증 정보로, 일반적으로 비밀번호를 사용합니다.로컬 개인 키와 상대방의 공개 키. 설정에서 요구하면 사전 공유 키도 필요합니다.
보안 계층TLS 이름, 인증서, 선택적 난독화 설정을 확인합니다.키 쌍, 터널 주소, 상대방 설정을 확인합니다.
네트워크 조건진입점의 UDP 포트에 연결할 수 있어야 합니다.Endpoint에 지정된 UDP 포트에 연결할 수 있어야 합니다.
추가 매개변수대역폭 값과 포트 범위 등은 기존 설정에 맞춰 입력합니다.Allowed IPs, DNS, MTU 등은 터널 구성에 맞춰 입력합니다.

WireGuard의 터널 주소는 서버의 공인 주소가 아니며, Private Key는 상대방의 Public Key가 아닙니다. Allowed IPs는 터널 내부의 대상 범위를 지정하므로 Shadowrocket의 Global Routing과 혼동해서는 안 됩니다. 가져온 뒤 터널 주소를 임의로 변경하면 Endpoint에 연결할 수 있어도 응답 트래픽을 받지 못할 수 있습니다.

Hysteria2의 대역폭 매개변수는 속도 측정 결과가 아니며, 값이 클수록 좋은 것도 아닙니다. 입력이 필요한 경우 기존 설정에서 지정한 값을 사용하세요. 같은 설정이 Wi-Fi에서는 작동하지만 셀룰러 네트워크로 전환한 뒤 시간 초과가 발생한다면 네트워크 전환 전후의 상황을 기록하고 UDP 연결 가능 여부를 확인하세요. 한 번의 실패만으로 프로토콜의 속도나 안정성을 판단할 수는 없습니다.

Add Server에서 추가하고 연결 확인하기

아래 단계는 서버 매개변수 전체를 이미 보유한 경우를 전제로 합니다. 기존 구독에 항목 전체가 포함되어 있다면 수동 입력 중 누락되는 일을 줄이기 위해 원래 가져온 항목을 우선 사용하세요. 직접 추가하기 전에 원래 설정을 기록하고, 테스트할 때는 한 번에 하나의 항목만 변경해 오류 원인을 파악합니다.

  1. 추가 화면 열기

    Home → 오른쪽 위의 +를 눌러 Add Server를 엽니다. Type에서 이름이 비슷한 프로토콜을 추측하지 말고 기존 서버와 같은 프로토콜을 선택하세요.

  2. 연결 진입점 입력

    Address와 Port를 입력합니다. Address에는 제공받은 도메인이나 IP를 사용하세요. 항목에서 전체 URL을 요구하지 않는 한 웹 경로나 프로토콜 접두사를 붙이지 마세요.

  3. 인증 정보 확인

    유형에 맞춰 Password, UUID 또는 키 정보를 입력합니다. Method, TLS 이름, 전송 방식, Host, Path를 항목별로 확인하세요. 제공되지 않은 확장 설정은 임의로 추측하지 마세요.

  4. 저장하고 선택

    저장한 다음 Home으로 돌아가 해당 서버를 선택하고 왼쪽에 선택 표시가 나타나는지 확인하세요. 연결 스위치를 켠 뒤 처음 사용할 때 시스템 안내에 따라 VPN 구성을 허용합니다.

  5. 연결 상태 테스트

    Home에서 Connectivity Test를 실행한 뒤 확인하려는 대상에 접속합니다. 단순히 “연결됨”이라고만 기록하지 말고 테스트 시간 초과, TLS 오류, 특정 대상만 열리지 않는 상황을 구분해 기록하세요.

Connectivity Test는 연결 상태를 파악하는 데 참고가 되지만 모든 앱, 모든 대상 주소, UDP 트래픽의 통과를 보장하지 않습니다. 문제 해결을 위해 Global Routing을 변경했다면 테스트 후 원래 설정으로 되돌려 임시 진단 설정을 계속 사용하지 않도록 하세요.

연결 상태와 규칙 라우팅을 따로 확인

서버 프로토콜은 연결 설정 방식을 결정하고, Global Routing은 요청의 라우팅 방식을 결정합니다. Proxy는 프록시 라우팅, Direct는 직접 연결, Config는 현재 구성된 규칙에 따른 처리, Scene은 설정된 장면에 따른 처리를 의미합니다. 서버 매개변수가 올바르더라도 모든 요청이 해당 서버를 통과하는 것은 아닙니다.

Config에서 DOMAIN-SUFFIX는 도메인 접미사를, IP-CIDR은 IP 대역을, GEOIP는 IP의 지리적 위치를 기준으로 매칭합니다. FINAL은 앞선 규칙에 일치하지 않을 때 적용할 최종 정책을 지정합니다. 이러한 규칙은 트래픽의 경로를 바꾸지만 Password, UUID, TLS 이름 오류를 해결하지는 않습니다. Settings → On Demand는 조건에 따라 연결을 설정하며 프로토콜 인증 정보를 변경하지 않습니다.

프로토콜 선택 및 오류 관련 자주 묻는 질문

어떤 프로토콜이 가장 빠른가요? 가장 빠른 것을 선택하면 되나요?

먼저 서버에서 실제로 지원하는 프로토콜을 사용한 뒤, 같은 네트워크에서 비슷한 시간대에 같은 대상을 기준으로 비교하세요. 지연 시간, 패킷 손실, 서버 부하, 전송 설정이 모두 결과에 영향을 줍니다. Type만 Hysteria2나 WireGuard로 바꿔도 기존 서버에서 해당 프로토콜을 지원하게 되지는 않습니다.

가져온 항목은 표시되는데 왜 연결되지 않나요?

항목이 표시된다는 것은 내용이 파싱되었다는 뜻일 뿐, 인증이 유효하다는 의미는 아닙니다. 먼저 Home에서 해당 항목을 선택하고 Connectivity Test를 실행한 다음 Address, Port, 프로토콜 인증 정보를 확인하세요. 기존 구독에서 가져온 항목이라면 구독을 원래 방식으로 업데이트한 뒤 다시 확인해 오래된 매개변수를 사용하지 않도록 하세요.

TLS 오류가 발생하면 인증을 꺼야 하나요?

먼저 기기 시간, TLS 서버 이름, 서버 인증서 조건을 확인하고 연결 진입점을 올바르게 입력했는지 살펴보세요. 인증서 신원 확인에 실패했다면 설정이나 인증서를 수정해야 합니다. 인증 끄기를 평소 설정으로 사용하지 말고, 인증서 이름 불일치 문제를 비밀번호 변경으로 해결하려고 하지 마세요.

웹 페이지는 열리는데 음성 통화는 왜 실패하나요?

웹 페이지는 주로 TCP를 사용하지만 음성 통화는 UDP에 의존할 수 있습니다. 현재 프로토콜, 서버, 네트워크에서 필요한 UDP 전달을 지원하는지 확인한 뒤 Config의 라우팅 경로도 확인하세요. HTTP 프록시를 통한 웹 페이지 테스트에 성공해도 실시간 통신 트래픽이 작동한다고 단정할 수 없습니다.

구독을 업데이트하면 직접 수정한 매개변수도 바뀌나요?

구독 관리의 항목은 업데이트할 때 원격 콘텐츠를 기준으로 다시 생성되거나 덮어써질 수 있습니다. 수정 전에 원래 매개변수를 저장하고, 업데이트한 뒤 선택된 항목과 확장 필드를 다시 확인하세요. 계속 유지해야 할 변경 사항은 따로 기록하고, 한 번 직접 수정한 것을 구독 측 설정에도 반영된 것으로 간주하지 마세요.

App Store 정품 확인