Shadowrocket Trojan 설정 방법: Address, Port, Password, SNI 입력과 TLS 원리

Trojan은 TLS를 기반으로 동작합니다. 프로토콜 원리와 함께 Add Server에서 Address, Port, Password, SNI 및 인증서 검증 옵션을 설정할 때 자주 발생하는 오류를 살펴봅니다.

이 글 미리보기

서비스 연결 정보를 이미 가지고 있고 Shadowrocket에 Trojan 연결을 추가하려는 사용자를 위한 안내입니다. 네트워크 주소, TLS에서 확인하는 서버 이름, 프로토콜 인증 정보를 구분한 뒤 Add Server의 각 항목을 설정하고, 단계별로 점검해 연결 시간 초과, 인증서 오류, 연결 후 접속 실패의 원인을 좁혀 봅니다. 예시 도메인과 비밀번호는 설명용 가상 값이며 연결에 사용할 수 없습니다.

Trojan 원리: TLS 연결과 Password 인증의 역할

Shadowrocket의 Trojan 유형은 해당 프로토콜을 지원하는 서버에 연결할 때 사용합니다. 일반적인 Trojan 연결은 먼저 서버와 TCP 연결을 맺고 TLS 핸드셰이크를 진행합니다. TLS 채널이 만들어진 뒤 클라이언트가 Trojan 프로토콜 인증 정보와 대상 요청을 전송합니다. TLS는 전송 보호와 서버 신원 확인을 담당하고 Password는 프로토콜 인증에 사용되므로 서로 대체할 수 없습니다.

주소 확인 TCP 연결 TLS 핸드셰이크 프로토콜 인증 대상으로 전달

Address는 실제로 연결할 서버를 가리키고 Port는 서버가 요청을 수신하는 포트를 지정합니다. SNI는 TLS 핸드셰이크에서 접속하려는 호스트 이름을 서버에 알립니다. 인증서 검증에서는 인증서 체인, 유효 기간, 호스트 이름이 조건에 맞는지도 확인해야 합니다. 따라서 주소에 연결된다고 TLS 검증까지 통과하는 것은 아니며, TLS 검증을 통과해도 Password가 올바르다는 뜻은 아닙니다.

이 글은 일반적인 Trojan over TLS를 기준으로 설명합니다. 기존 연결 정보에 WebSocket, Host 또는 Path가 별도로 지정되어 있다면 서버 설정을 항목별로 따르세요. 기본 예시를 기존 설정에 그대로 덮어쓰지 마세요. Type만 바꾼다고 다른 프로토콜의 서버가 Trojan 서버로 바뀌지는 않습니다.

443
TLS에서 자주 쓰이는 포트이며 필수값은 아닙니다
1–65535
Port에 입력할 수 있는 값의 범위
4개
먼저 Address, Port, Password, SNI를 확인하세요

입력 전 준비: 연결 정보와 TLS 정보를 구분해 보관하기

아래 내용은 사용자가 자신의 서비스 제공자와 구독 정보를 이미 보유한 경우를 전제로 합니다. 이 사이트는 노드나 구독을 제공·판매·추천하지 않습니다. 서버 주소만 보고 나머지 항목을 추측하지 말고, 시작 전에 필요한 정보를 모두 확인하세요. Password, 구독 URL, 전체 공유 링크에는 접속 정보가 포함될 수 있으므로 공개 스크린샷이나 문제 해결 기록에 올리지 마세요.

기본 연결 예시

Type
Trojan
Address
edge.example.com
Port
443
Password
demo-only-not-valid

모두 설명을 위한 가상 값입니다. 실제 설정에는 보유한 연결 정보를 입력하세요.

TLS 확인 예시

SNI
tls.example.com
인증서 신원
검증에 사용할 호스트 이름이 인증서에 포함되어야 합니다
인증서 신뢰 여부
인증서 체인과 유효 기간 검증을 통과해야 합니다
Allow Insecure
해당 옵션이 있다면 일반적인 사용 시에는 꺼 두세요

SNI와 Address는 서로 다를 수 있지만, 차이가 있다면 서버 설정에 근거해야 합니다.

Address가 IP 주소이고 서버에서 도메인 인증서를 사용한다면, 일반적으로 제공된 정보에 따라 해당 도메인을 SNI에 입력해야 합니다. 일치시키겠다는 이유로 IP 주소를 SNI에 그대로 복사하거나 흔히 쓰이는 웹사이트 도메인을 임의로 입력하지 마세요. 입력한 이름은 서버의 TLS 설정에 맞아야 하며 인증서 신원 확인 조건도 충족해야 합니다.

Add Server 설정: 입력한 뒤 저장하고 연결 선택하기

Shadowrocket에서 Home은 연결을 관리하고 선택하는 곳이며, Config는 구성 파일과 규칙, Settings는 앱 설정을 다룹니다. Trojan 연결을 직접 추가하려면 Home의 추가 메뉴에서 Add Server로 이동하세요. Address나 Password를 Config의 규칙 목록에 입력하는 방식이 아닙니다.

  1. Home을 열고 오른쪽 위의 추가 버튼을 눌러 Add Server로 이동한 다음 Type을 Trojan으로 설정합니다.
  2. 원래 받은 연결 정보에 따라 Address와 Port를 입력하세요. 주소가 ‘호스트 이름:포트’ 형식으로 적혀 있다면 두 항목으로 나누어 입력합니다.
  3. Password를 입력합니다. 서버에서 제공한 Trojan 비밀번호를 사용하세요. App Store 구매 정보나 인증서 파일의 내용이 아닙니다.
  4. TLS 설정을 확인하고 원래 연결 정보에 따라 SNI를 입력하세요. 화면에 Allow Insecure가 표시되면 일반적인 사용 시에는 꺼 두세요. 추가 전송 옵션도 서버 설정과 일치해야 합니다.
  5. 저장한 뒤 Home으로 돌아와 방금 추가한 연결을 선택하고 연결 스위치를 켭니다. 처음으로 시스템 VPN 구성 승인 안내가 나타나면 앱을 확인한 뒤 승인을 완료하세요.
  6. Global Routing 설정을 확인한 뒤 해당 연결을 거쳐야 하는 대상에 접속하고 결과와 오류 메시지를 기록하세요.

기존 구독에서 가져온 항목이라면 먼저 가져온 뒤 Type, Address, Port, TLS 정보가 모두 맞는지 확인하세요. 구독을 업데이트하면 구독에서 관리하는 항목이 다시 기록될 수 있습니다. 문제를 임시로 확인할 때는 변경한 내용을 기록하고, ‘기기에서 직접 수정한 값’과 ‘구독에서 받은 값’을 구분하세요. 구독 항목을 수정해 원본 설정의 오류를 장기적으로 해결하려고 하지 마세요.

항목별 오류 증상: 지연 시간 대신 실패 단계에 따라 점검하기

연결 테스트 결과는 해당 테스트 대상과 방법에서 나타난 상태만 보여 줍니다. 지연 시간이 표시된다고 모든 대상에 접속할 수 있는 것은 아니며, 인증·DNS·규칙이 모두 올바르다는 뜻도 아닙니다. 문제를 해결할 때는 먼저 실패한 단계를 기록한 뒤 해당 항목을 확인하세요. 아래 표는 흔히 나타나는 단서이며, 각 오류와 원인이 항상 일대일로 대응하는 것은 아닙니다.

항목 또는 단계자주 나타나는 증상우선 확인할 사항
Address호스트 이름을 확인할 수 없어 연결이 시작되지 않음도메인 철자, 현재 네트워크의 DNS, URL 경로가 잘못 포함되었는지
Port / TCP연결 시간 초과 또는 연결 거부실제 수신 포트, 네트워크 연결 가능 여부, 서버의 연결 허용 여부
SNI / TLS인증서 이름 불일치 또는 TLS 핸드셰이크 실패SNI, 인증서에 포함된 이름, 서버의 TLS 설정, 기기 시간
Password연결 후 요청 실패 또는 연결이 곧바로 종료됨Password의 대소문자와 공백 문자, 서버의 인증 기록
규칙 및 대상일부 웹사이트는 열리지만 특정 대상에는 접속할 수 없음Global Routing, 적용된 정책, 대상의 DNS 및 대상 서비스의 상태

요약: 인증서 오류가 나면 먼저 SNI를 확인하고 검증을 건너뛰지 마세요

인증서 이름이 일치하지 않으면 먼저 SNI와 서버가 제공한 인증서 도메인을 한 글자씩 대조하세요. 유효 기간 오류가 나타나면 기기의 날짜와 인증서 상태를 확인하세요. Allow Insecure를 켜 두는 방식으로 장기 해결을 시도하지 마세요.

인증서 검증을 건너뛰면 서버 신원 확인이 약해지며, 잘못된 포트나 Password, 접속할 수 없는 서버 문제가 해결되는 것도 아닙니다. 검증을 끈 뒤 증상이 달라지더라도 TLS 신원 확인이 점검 대상일 가능성을 보여 줄 뿐, 연결이 안전하다는 근거는 되지 않습니다. 별도의 신뢰 자료가 필요한 환경이라면 서비스 관리자가 제공하는 설정 안내를 확인하세요.

연결 후에도 접속할 수 없을 때: Global Routing과 Trojan 설정 구분하기

Trojan 설정은 선택한 서버에 연결하는 방식을 결정하고, Global Routing은 요청에 적용할 라우팅 방식을 결정합니다. Proxy, Direct, Config, Scene은 서로 다른 프로토콜이 아닙니다. Proxy는 프록시 경로를 사용하고, Direct는 직접 연결하며, Config는 구성 규칙에 따라 정책을 결정하고, Scene은 설정된 시나리오에 따라 처리합니다. 단일 연결을 점검할 때는 먼저 현재 라우팅 방식을 확인한 다음 접속 결과를 살펴보세요.

아래 예시는 규칙 순서만 보여 주며 도메인은 설명용 가상 값으로, 실제 서비스 주소가 아닙니다. 첫 번째 규칙은 더 구체적인 도메인에 직접 연결하고, 두 번째 규칙은 해당 도메인 접미사에 속하는 나머지 요청에 PROXY를 사용하며, 마지막 FINAL 규칙이 나머지를 처리합니다. 적용 전에 현재 구성의 PROXY가 원하는 프록시 대상을 가리키는지 확인하세요.

DOMAIN,local.example.com,DIRECT
DOMAIN-SUFFIX,example.com,PROXY
FINAL,PROXY

Settings → On Demand는 조건에 따라 연결을 시작하는 기능이며 Trojan의 Address, SNI, Password를 수정하지 않습니다. 수동 연결이 아직 확인되지 않았다면 직접 제어할 수 있는 방식으로 먼저 테스트하세요. 기본 연결이 정상이라면 On Demand 조건이 의도한 대로 설정되었는지 확인합니다. VPN 자동 연결과 대상이 PROXY 규칙에 일치하는지는 별개의 판단입니다.

Trojan 설정 자주 묻는 질문

Address가 IP 주소인데 SNI를 비워도 되나요?

먼저 보유한 연결 정보를 확인하세요. 서버가 TLS 서비스를 도메인으로 구분하거나 도메인 인증서를 사용한다면 지정된 SNI를 입력해야 합니다. IP 주소만 있고 TLS 신원 정보가 없다면 서비스 관리자에게 확인하세요. 도메인을 하나씩 입력해 보는 방식으로 해결하려고 하지 마세요.

Port에는 반드시 443을 입력해야 하나요?

아닙니다. 443은 자주 쓰이는 포트일 뿐이며 실제 값은 서버가 수신하는 포트와 일치해야 합니다. 안내받은 포트가 8443이라면 Port에 8443을 입력하고, Address에 포트가 중복으로 포함되지 않았는지도 확인하세요.

Password를 먼저 인코딩하거나 변환해야 하나요?

직접 입력할 때는 원래 비밀번호를 사용하세요. 임의로 해시를 계산하거나 공유 링크에 들어 있는 이스케이프 문자열을 비밀번호로 입력하지 마세요. 링크를 가져온 뒤 인증에 실패한다면 파싱된 Password를 원래 정보와 대조하고, 특히 특수문자와 불필요한 공백을 확인하세요.

구독 업데이트 후 다시 연결되지 않으면 무엇부터 확인해야 하나요?

먼저 Home에서 해당 항목의 편집 화면을 열고 Type, Address, Port, SNI가 업데이트되었는지 확인하세요. 현재 선택된 항목이 바뀌지 않았는지도 살펴봅니다. 구독에서 계속 잘못된 값을 가져온다면 원본 설정을 수정해야 합니다. 구독 업데이트만으로 연결 가능 여부가 확인되는 것은 아닙니다.

TLS 오류 화면을 그대로 다른 사람에게 보내도 되나요?

민감 정보를 가린 오류 문구와 실패 단계, 발생 조건은 공유할 수 있습니다. Password와 전체 구독 URL, 공유 링크에 포함된 인증 정보는 숨기세요. 문제 해결에는 대개 포트, SNI, 인증서 이름의 일치 여부만 필요하며 전체 연결 정보를 공개할 필요는 없습니다.

설정 후에는 올바른 항목이 선택되었는지 확인하고, Global Routing을 점검한 뒤 대상에 접속해 테스트하세요. 그런 다음 일상적으로 사용할 규칙과 자동 연결 조건을 복구합니다. 프로토콜과 규칙은 기술 참고 자료에서 더 확인할 수 있습니다. 특정 네트워크에서만 실패한다면 Wi‑Fi와 셀룰러 네트워크의 차이를 기록해 네트워크 연결 문제를 비밀번호 오류로 오인하지 않도록 하세요.

App Store 정품 구매 경로개발자와 앱 ID 확인