Shadowrocket의 Trojan 설정은 서비스 제공자가 안내한 정보를 항목별로 입력해야 합니다. Address는 연결 대상, Port는 서버 포트, Password는 인증 정보, SNI는 TLS 핸드셰이크에서 전달하는 서버 이름입니다. 사용 가능한 설정 정보를 보유하고 직접 입력하거나 가져온 항목을 확인하려는 경우에 적합한 안내입니다. 먼저 각 값을 점검하고 TLS, 인증, 라우팅 문제를 구분하세요. 포트를 무작정 바꾸거나 인증서 검증을 끄는 방식으로 해결하려 하지 마세요.
1. Trojan 연결에서 TLS와 Password의 역할
일반적인 Trojan 연결은 서버와 TCP 연결을 수립한 뒤 TLS 핸드셰이크를 진행하고, 암호화된 채널에서 인증 정보가 포함된 Trojan 요청을 보냅니다. TLS는 전송 암호화와 서버 신원 확인을 담당하며, Password는 클라이언트에 사용 권한이 있는지 서버가 확인하는 데 쓰입니다. 비밀번호가 맞더라도 인증서가 유효하다는 뜻은 아니며, 인증서가 유효해도 비밀번호가 맞다는 보장은 없습니다.
따라서 ‘주소 확인 → 포트 연결 가능 여부 → TLS 핸드셰이크 → Trojan 인증 → 실제 요청’ 순서로 점검하세요. 일반 웹페이지가 열린다는 사실은 기기에 기본 네트워크 연결이 있다는 뜻일 뿐입니다. 지연 시간 테스트에 값이 표시되어도 Trojan 인증이나 대상 서비스 접속까지 성공했다고 단정할 수 없습니다.
판단 기준: 우선 제공된 값을 그대로 사용하세요
기존 설정과 양식의 항목을 하나씩 대조하세요. 특정 값이 잘못된 것을 확인한 경우에만 해당 항목 하나를 수정한 뒤 다시 테스트합니다. Port를 443으로 바꾸거나 SNI에 Address를 입력하는 방법은 일반적인 해결책이 아닙니다.
2. Add Server 양식에서 네 가지 항목 입력하기
Home 오른쪽 위의 ‘+’를 눌러 Add Server로 이동한 뒤 Type을 Trojan으로 설정하고 나머지 항목을 입력하세요. 인터페이스 언어나 양식 배치에 따라 SNI가 TLS 관련 서버 이름 항목으로 표시될 수 있습니다. 항목의 의미를 확인하고 메모나 Password 입력란에 넣지 마세요. 아래 주소와 비밀번호는 형식을 설명하기 위한 예시이며 연결에 사용할 수 없습니다.
| 항목 | 예시 | 입력 방법 및 자주 하는 실수 |
|---|---|---|
Type | Trojan | 기존 설정과 일치해야 합니다. TLS를 사용한다는 이유만으로 다른 프로토콜을 선택하지 마세요. |
Address | edge.example.com | 서버의 도메인 또는 IP 주소를 입력하세요. https://, 경로, 쿼리 매개변수, 포트 접미사는 포함하지 않습니다. |
Port | 443 | 숫자만 입력하세요. 기존 설정의 값이 8443이라면 일반적으로 쓰이는 값으로 바꾸지 말고 8443을 유지합니다. |
Password | demo-password-not-valid | 기존 값을 그대로 복사하세요. 대소문자를 구분하고 앞뒤 공백이나 줄바꿈이 없는지 확인합니다. App Store 계정 비밀번호가 아닙니다. |
SNI | tls.example.com | 기존 설정에 지정된 TLS 서버 이름을 입력하세요. 보통 도메인이며 프로토콜 접두사, 경로, 포트는 붙이지 않습니다. |
Address와 SNI는 같을 수도, 다를 수도 있습니다. 예를 들어 Address에는 연결 지점의 IP를 입력하고 SNI에는 서버 인증서에 지정된 도메인을 입력할 수 있습니다. 이 경우 SNI까지 해당 IP로 바꾸면 안 됩니다. TLS의 SNI 확장 기능은 서버 이름을 전달하며, 인증서 체인의 신뢰 여부와 인증서 이름의 일치 여부는 별도로 정상 검증되어야 합니다.
3. 수동으로 추가하고 첫 연결 확인하기
추가하기 전에 Trojan 설정 정보를 모두 준비하세요. 서비스 제공자가 구독 링크를 제공했다면 구독 방식으로 가져온 후 생성된 항목을 확인하는 것이 좋습니다. 항목별 설정값을 명확히 알고 있을 때만 아래 단계에 따라 직접 입력하세요. 구독 주소를 Address로 사용할 수는 없습니다.
-
양식 열기
Home → 오른쪽 위 ‘+’ → Add Server를 차례로 열고 Type에서 Trojan을 선택하세요. 저장된 유사 항목과 혼동하지 않도록 알아보기 쉬운 메모를 설정합니다.
-
주소 입력
Address와 Port를 차례로 입력하세요. ‘도메인:포트’ 형식으로 받았다면 두 부분을 나눠 입력합니다. 공유 링크 전체를 Address에 붙여 넣지 마세요.
-
인증 정보 확인
Password와 SNI를 입력하고 기존 TLS 설정을 유지하세요. 기존 설정에 WebSocket 등의 전송 매개변수가 더 있다면 해당 옵션도 원래 값에 맞게 설정해야 합니다. 이 네 항목만 입력했다고 정보가 모두 갖춰진 것은 아닙니다.
-
저장 후 선택
저장한 다음 Home으로 돌아가 방금 만든 항목을 선택하세요. Global Routing의 현재 설정을 확인하고 연결을 켭니다. 처음 사용할 때는 시스템 안내에 따라 VPN 구성을 추가하도록 허용하세요.
-
요청 확인
Home에서 Connectivity Test를 실행한 뒤 정상적으로 이용할 수 있는 HTTPS 페이지에 접속하세요. 연결 기록을 확인해 요청이 선택한 정책을 따르는지 점검합니다. 테스트가 끝나면 평소 사용하는 라우팅 설정으로 되돌리세요.
Settings → On Demand가 활성화되어 있다면 현재 조건을 기록해 두세요. 조건에 따라 연결이 다시 시작될 수 있으므로 점검 중에는 조건에 의한 연결과 선택한 Trojan 항목의 실제 작동 여부를 구분해야 합니다. 잠시 비활성화했다면 테스트 후 기존 조건을 복원하고 모든 설정을 삭제하지 마세요.
4. 연결은 됐지만 접속이 안 될 때: Global Routing 설정 구분하기
Home에서 항목을 선택했다고 해서 모든 요청이 해당 항목을 사용하는 것은 아닙니다. Global Routing은 요청이 어떤 정책을 따를지 결정합니다. 현재 Direct로 설정되어 있다면 웹페이지 접속 결과만으로 선택한 Trojan 항목의 작동 여부를 판단할 수 없습니다. 아래에서는 Shadowrocket의 라우팅 설정만 비교하며, 서비스 출처 선택은 다루지 않습니다.
Config
권장현재 활성화된 구성 규칙에 따라 요청의 경로를 결정합니다. DOMAIN-SUFFIX는 도메인 접미사, IP-CIDR은 IP 주소 대역, GEOIP는 IP의 지리적 위치를 기준으로 매칭하며, FINAL은 앞선 규칙에 일치하지 않은 요청에 적용됩니다. 실제 매칭 결과는 규칙 순서와 대상 정책에 따라 달라집니다.
적합한 경우: 규칙을 확인한 뒤 일상적으로 사용할 때. 규칙에 일치하지 않은 요청이 반드시 직접 연결된다고 가정하지 마세요.
Proxy
클라이언트가 처리하는 요청을 프록시 정책으로 전달하여 규칙의 영향을 일시적으로 분리해 확인할 수 있습니다. Password나 TLS 설정 오류를 해결하지는 않으며 모든 기기의 트래픽을 예외 없이 처리한다는 뜻도 아닙니다.
적합한 경우: 선택한 Trojan 항목으로 실제 요청을 처리할 수 있는지 짧게 확인할 때.
Direct
요청을 선택된 프록시 항목을 거치지 않고 대상에 직접 연결합니다. Direct로 전환한 뒤 페이지가 열려도 직접 연결 경로의 비교 결과일 뿐입니다.
적합한 경우: 기본 네트워크 상태 비교. Trojan 설정값 검증에는 사용할 수 없습니다.
Global Routing의 Scene은 상황에 따라 관련 설정을 적용합니다. 점검할 때는 현재 Scene에서 실제로 어떤 정책을 사용하는지도 확인해야 합니다. Home에서 항목이 선택된 표시만 보고 Scene 및 규칙의 최종 결과를 놓치지 마세요.
판단 기준: 임시 테스트와 일상 설정을 분리하세요
Proxy에서는 요청이 정상이고 Config에서는 같은 요청이 실패한다면 먼저 일치한 규칙과 해당 정책을 확인하세요. 두 설정에서 모두 실패한다면 Address, Port, TLS, Password 순으로 연결 과정을 점검합니다.
5. 자주 발생하는 입력 문제: 증상별 확인 방법
오류 메시지는 문제 범위를 좁히는 데 도움이 되지만 설정값 확인을 대신하지는 않습니다. 아래는 원인을 판단할 때 참고할 수 있는 증상이며 특정 기기에서 측정한 결과가 아닙니다. 값을 수정할 때마다 같은 대상으로 다시 시도하고 현재 네트워크, 선택한 항목, 라우팅 설정, 구체적인 오류 메시지를 기록하세요. 여러 변수를 한꺼번에 바꾸지 마세요.
계속 시간 초과가 발생합니다. Password가 잘못된 건가요?
반드시 그렇지는 않습니다. 먼저 Home → 선택한 항목 → 편집에서 Address와 Port를 확인한 뒤 도메인이 해석되는지, 현재 네트워크에서 해당 포트에 연결할 수 있는지 확인하세요. 시간 초과는 TCP 연결이나 핸드셰이크 단계에서 발생할 수 있으므로 시간 초과만으로 비밀번호를 재설정하지 마세요.
인증서 이름이 일치하지 않는다는 오류가 뜹니다. SNI에는 무엇을 입력해야 하나요?
기존 서비스 제공자가 안내한 서버 이름을 입력하고 https:// 또는 :443을 포함하지 않았는지 확인하세요. Address가 IP이고 기존 설정에 별도의 도메인이 있다면 해당 도메인을 SNI로 유지합니다. 계속 오류가 발생하면 서버 인증서를 확인하고 검증을 건너뛰어 문제를 숨기지 마세요.
Password를 복사했는데 인증에 실패하는 이유는 무엇인가요?
기존 설정에서 다시 복사하고 대소문자, 끝부분의 줄바꿈, 계정 로그인 비밀번호를 잘못 사용했는지 확인하세요. 양식에는 실제 비밀번호를 입력하고 링크에 포함된 퍼센트 인코딩 문자열을 그대로 복사하지 마세요. 서비스 제공자가 인증 정보를 변경했다면 기존 구독을 업데이트하거나 해당 값을 바꿔야 합니다.
지연 시간은 표시되는데 웹페이지가 열리지 않는 이유는 무엇인가요?
먼저 Global Routing이 Direct가 아닌지 확인한 다음 현재 요청에 적용된 규칙과 정책을 점검하세요. 도메인 요청만 실패한다면 DNS 해석 결과를 추가로 확인합니다. 모든 요청이 실패한다면 TLS, 인증, 추가 전송 매개변수를 확인하세요. 지연 시간 테스트만으로 전체 애플리케이션 접속이 정상이라고 판단할 수 없습니다.
6. 공유 링크, 구독 업데이트 및 설정 보안
trojan://은 일반적으로 단일 항목을 위한 공유 링크입니다. 보통 인증 정보, 서버 주소, 포트, 쿼리 매개변수가 포함됩니다. 일반 웹 주소가 아니며 자동으로 업데이트되는 구독 내용도 아닙니다. Shadowrocket의 QR 코드 또는 클립보드 가져오기 기능을 사용한 뒤에도 항목을 열어 Type, Address, Port, Password 및 TLS 관련 옵션을 확인하세요.
https://example.com/sub?token=xxxx는 사용할 수 없는 구독 형식의 예시입니다. 실제 구독 주소에는 접속 인증 정보가 포함될 수 있으므로 구독 입력 기능을 통해 저장하고 클라이언트가 항목을 가져오도록 하세요. 전체 URL을 Trojan의 Address에 입력하면 안 됩니다. 구독에서 생성한 항목은 업데이트 시 덮어써질 수 있으므로 장기적으로 수정하려면 먼저 설정 관리 방식을 확인하세요.
- 기존 구독을 업데이트한 뒤 서버에서 Port, Password, SNI가 변경되었는지 확인하세요. 메모 이름이 같은지만 확인해서는 안 됩니다.
- 복원할 수 있도록 기존 설정을 보관하세요. 비교 테스트가 필요하면 직접 설정한 항목을 별도로 만들어 유일하게 사용할 수 있는 구독 항목을 바로 수정하지 마세요.
- 문제 해결을 위해 문의할 때는 Password, 구독 token, 전체 공유 링크를 가리고 필요한 항목 유형과 오류 메시지만 제공하세요.
- 추가 전송 매개변수를 확인할 수 없다면 기존 서비스 제공자에게 전체 설정을 요청하세요. 일반적인 Trojan 예시만 보고 WebSocket 경로 등의 설정을 추측하지 마세요.