서비스 제공업체에서 받은 설정값이나 구독을 보유한 사용자를 위해 Shadowrocket에서 Trojan의 연결 주소, 인증 비밀번호, TLS 이름이 각각 무엇을 의미하는지 설명합니다. 네트워크 연결, 인증서 검증, 프로토콜 인증의 차이를 짚은 뒤 Add Server 설정 방법을 안내하고, 시간 초과·인증서 오류·인증 실패 증상에 따라 점검 범위를 좁혀 갑니다. 인증서 검증을 꺼서 해결을 시도할 필요는 없습니다.
Trojan 연결의 세 가지 점검 단계
Shadowrocket의 Trojan은 연결 프로토콜 유형이지 구독 주소 유형이 아닙니다. 일반적인 Trojan 연결은 먼저 서버와 TCP 연결을 설정한 다음 TLS 핸드셰이크를 거치고, 암호화된 채널에서 Trojan 인증과 요청 전송을 진행합니다. TLS는 HTTPS와 유사한 암호화 전송 특성을 제공하지만, 트래픽을 식별할 수 없게 하거나 대상 웹사이트가 프록시 서버를 신뢰하게 만드는 것은 아닙니다.
세 단계는 각각 다른 문제를 확인합니다. 주소와 포트는 서비스 접속 지점에 도달할 수 있는지를 결정하고, TLS 검증은 상대 서버의 신원을 확인하며, Trojan 비밀번호는 해당 접속 지점을 이용할 권한이 있는지를 확인합니다. 비밀번호가 맞아도 인증서 이름이 일치하지 않으면 연결되지 않을 수 있고, 인증서가 유효해도 비밀번호가 맞다는 뜻은 아닙니다. 문제를 점검할 때는 연결이 성립되는 순서대로 확인하고 여러 항목을 한꺼번에 바꾸지 마세요.
이 글에서는 일반적인 Trojan over TLS 설정을 다룹니다. 기존 설정에 WebSocket 등의 전송 옵션이 포함되어 있다면 전송 유형, Host, 경로도 함께 확인해야 합니다. 주소, 포트, 비밀번호만 그대로 옮겨서는 안 됩니다. Trojan과 다른 프로토콜의 항목은 서로 바꿔 쓸 수 없습니다. 설정에 긴 문자열이 있다고 해서 이를 다른 프로토콜의 사용자 ID로 간주하지 마세요.
Add Server 항목별 설정 기준
직접 추가하기 전에 보유한 설정 정보에서 서버 주소, 서버 포트, Trojan 비밀번호, TLS 서비스 이름을 확인하세요. 아래 도메인과 주소는 항목 간 관계를 설명하기 위한 예시이며 실제로 연결할 수 있는 서버가 아닙니다. 예시에서는 연결 주소를 192.0.2.10, 포트를 443, TLS 서비스 이름을 gateway.example.com으로 가정합니다. 실제 입력 시에는 자신의 설정값으로 모두 바꿔야 합니다.
| 항목 | 입력 기준 | 흔한 실수 |
|---|---|---|
| Type | Trojan 선택 | 다른 프로토콜을 선택해 인증 방식이 맞지 않음 |
| Address | 보유한 설정에 적힌 서버 도메인 또는 IP 주소 | 구독 URL 전체를 붙여 넣거나 https://와 경로까지 입력 |
| Port | 서버에서 실제로 수신 대기 중인 포트. 예: 443 | TLS가 보인다는 이유로 원래 포트를 무시하고 443으로 변경 |
| Password | 서비스 제공업체가 제공한 Trojan 연결 비밀번호 | 계정 로그인 비밀번호를 입력하거나 복사할 때 공백·줄바꿈이 포함됨 |
| SNI | 설정에 지정된 TLS 서비스 이름 | 프로토콜 접두사가 붙은 URL, IP 주소 또는 임의의 웹사이트 도메인을 입력 |
| Allow Insecure | 일반적인 사용에서는 끄고 인증서 검증을 유지 | 인증서 검증 건너뛰기를 연결 문제 해결 방법으로 오해 |
Password는 프로토콜 인증 정보입니다. 원래 값 그대로 입력하고 대소문자를 구분하세요. 직접 해시하거나 인코딩하지 마세요. 가져오기 링크의 비밀번호는 URL 인코딩되어 있을 수 있으므로 원본 링크를 앱에서 파싱하는 방법을 우선 사용하세요. 웹페이지에서 설정값을 복사해 입력할 때는 보이지 않는 문자가 섞이지 않았는지 확인합니다. 메모는 원하는 대로 바꿀 수 있지만 인증 항목은 아닙니다. 메모를 수정해도 원격 서비스의 신원은 달라지지 않습니다.
요약: 먼저 포트가 설정된 경로를 확인하세요
보유한 설정에 다른 포트가 명시되어 있다면 해당 값을 그대로 사용하세요. 설정에 443이 명시된 경우에만 443을 입력합니다. 연결 시간이 초과되면 먼저 Address와 Port를 확인하고 Password를 바꾸거나 인증서 검증을 끄지 마세요.
SNI와 인증서 이름의 관계
SNI는 TLS ClientHello에서 서버에 대상 서비스 이름을 알리는 확장 항목입니다. 하나의 IP 주소에서 여러 TLS 서비스를 제공할 수 있으며, 서버는 SNI에 따라 인증서와 백엔드를 선택할 수 있습니다. 따라서 연결에 사용하는 IP를 Address에 입력하고, 기존 설정에서 지정한 도메인을 SNI에 입력할 수 있습니다. 두 항목은 서로 모순되지 않습니다. 하나는 “어디에 연결할지”, 다른 하나는 “어떤 TLS 서비스를 요청할지”를 나타냅니다.
인증서를 검증할 때는 신뢰 체인과 유효기간, 그리고 인증서가 예상한 서비스 이름을 포함하는지도 확인해야 합니다. 예를 들어 gateway.example.com에 연결할 수 있다고 해서 SNI를 임의로 www.example.com으로 바꾸면 안 됩니다. 이름이 일치하지 않으면 비밀번호가 정확해도 Trojan 인증 단계에 도달하기 전에 실패할 수 있습니다.
- Address에 도메인을 입력하는 경우: 해당 도메인이 예상한 서버로 확인되는지 점검하세요. 설정에 별도의 SNI가 지정되어 있다면 그 값을 입력합니다.
- Address에 IP를 입력하는 경우: 설정에 별도의 SNI가 있는지 확인하세요. 일반적인 도메인 인증서는 직접 연결하는 IP 주소를 포함하지 않는 경우가 많습니다.
- SNI를 비워 두는 경우: 기본값이 무엇일지 추측하지 마세요. 원본 구독이나 서비스 설정을 확인해 명시적으로 입력해야 하는지 판단하세요.
- 기기 시간이 맞지 않는 경우: 시스템의 “설정 → 일반 → 날짜 및 시간”에서 시간을 확인하세요. 시간이 잘못되면 인증서 유효기간 판단에 영향을 줄 수 있습니다.
SNI는 비밀번호가 아니며 접속 권한을 부여하지도 않습니다. 일반 TLS 핸드셰이크에서 SNI는 보통 암호화되지 않으므로 민감한 토큰을 입력하지 마세요. SNI를 바꿔 TLS 연결이 성립하더라도 설정이 정상이라고 단정할 수 없습니다. Trojan 인증과 실제 요청도 확인해야 합니다.
Allow Insecure: 인증서 검증 설정
Allow Insecure는 정상적인 서버 인증서 검증을 건너뛸지 결정합니다. 이 옵션을 켜면 TLS 암호화 연결이 유지되더라도 상대가 예상한 서버인지 신뢰성 있게 확인할 수 없습니다. 암호화와 신원 확인은 서로 다른 기능입니다. 잘못되었거나 교체되었거나 신뢰할 수 없는 인증서 문제를 이 옵션으로 가려서는 안 됩니다.
Allow Insecure 끄기
권장정상적인 인증서 검증을 유지합니다. 인증서 오류가 발생하면 SNI, 기기 시간, 인증서 유효기간, 서버 인증서 체인을 확인하고 문제의 원인을 바로잡으세요.
권장 상황: 일상적인 연결, 장기간 사용할 설정
Allow Insecure 켜기
서버 인증서 검증을 완화해 신원 확인을 보장할 수 없습니다. 잘못된 포트나 비밀번호, 일치하지 않는 전송 설정을 해결해 주는 옵션은 아닙니다.
사용 상황: 위험을 이해하고 통제할 수 있는 짧은 진단. 장기 설정에는 사용하지 마세요.
이 옵션을 켜야만 연결된다면 이를 “해결됨”이 아니라 “인증서 검증 관련 문제”로 기록하세요. 다시 끄고 인증서 오류 정보를 서비스 제공업체에 전달해 확인을 요청합니다. 상대의 신원을 확인할 수 없는 연결에서는 민감한 작업을 하지 마세요. 인증서 검증을 계속 끄는 것을 일반적인 문제 해결 방법으로 삼지 마세요.
설정 입력부터 요청 확인까지
기존 구독에 해당 Trojan 항목이 이미 생성되어 있다면, 직접 새로 추가하지 말고 가져온 항목과 원본 설정을 먼저 비교하세요. 구독 관리 항목은 업데이트할 때 다시 생성될 수 있으며, 직접 수정한 내용이 유지되는지는 항목을 가져온 방식에 따라 다릅니다. 문제를 진단하기 전에 변경 사항을 기록해 두면 로컬 수정으로 원격 문제가 해결된 것으로 착각하지 않을 수 있습니다.
-
새 항목 추가
Home → 오른쪽 상단의 “+” → Add Server로 이동한 다음 Type에서 Trojan을 선택합니다. 기존 항목을 확인하는 중이라면 이름이 같은 항목을 새로 만들지 말고 해당 항목의 편집 화면을 여세요.
-
설정값 입력
Address, Port, Password, SNI 순서로 확인합니다. Allow Insecure는 끈 상태로 유지하세요. 전송 관련 추가 항목은 기존 설정에 따라 입력하고, 제공되지 않은 옵션은 켜지 않은 다음 저장합니다.
-
서버 선택
Home으로 돌아가 방금 저장한 Trojan 항목을 선택합니다. 기존 Global Routing 설정을 기록한 다음, 테스트 중에는 규칙 분산의 영향을 줄이기 위해 잠시 Proxy를 선택합니다.
-
요청 보내기
연결 스위치를 켜고 처음 연결할 때는 시스템 안내에 따라 VPN 구성을 승인합니다. 이미 접근 가능한 것으로 알고 있는 테스트 페이지를 열어 새 요청을 보내고 결과와 앱 로그를 확인하세요. 지연 시간만 표시된다고 해서 요청이 정상적으로 완료된 것은 아닙니다.
-
라우팅 설정 복원
테스트가 끝나면 기존 Global Routing 설정으로 되돌립니다. Proxy에서는 정상인데 Config로 돌아간 뒤 문제가 생기면 현재 Config의 규칙 일치 여부와 정책 방향을 점검하세요. Trojan 비밀번호를 계속 무작정 바꾸지 마세요.
Global Routing의 Proxy는 라우팅 모드이고, 규칙에 쓰이는 PROXY는 정책 키워드입니다. 두 항목을 같은 설정으로 혼동하지 마세요. Proxy로 잠시 전환하면 규칙이 원인인지 분리해 확인할 수 있지만, 인증서와 인증 절차를 점검하는 대신 사용할 수는 없습니다. 테스트 중 Settings → On Demand를 함께 바꿀 필요도 없습니다. 필요 시 연결 조건과 개별 Trojan 설정은 서로 다른 점검 대상입니다.
핸드셰이크 실패 점검 순서
먼저 어느 단계에서 실패했는지 기록한 뒤, 한 번에 하나의 설정만 바꾸세요. 로그 문구는 시스템과 오류 발생 지점에 따라 다를 수 있습니다. 아래 내용은 증상별 분류이며 특정 문구 하나만으로 원인을 확정해서는 안 됩니다. 문의할 때는 오류 유형, 발생 시각, 네트워크 유형, 확인한 항목을 남기고 Password와 전체 구독 링크는 공개하지 마세요.
- 도메인을 확인할 수 없음: Address에 오타나 불필요한 경로가 없는지 확인한 다음 현재 네트워크의 DNS 확인을 점검하세요. 주소 자체를 확인할 수 없는 상태라면 Trojan 비밀번호를 바꿔도 해결되지 않습니다.
- 연결 시간 초과 또는 거부: Address와 Port를 확인하고 해당 포트에서 서비스가 수신 대기 중인지 점검하세요. 시간 초과는 네트워크 경로와 관련될 수 있고, 연결 거부는 포트가 열려 있지 않은 경우일 수 있습니다. 증상만으로 어느 쪽의 문제인지 단정할 수는 없습니다.
- TLS 또는 인증서 오류: SNI, 기기 시간, 인증서 이름과 유효기간을 확인하세요. 서비스 제공업체에 인증서 체인과 해당 TLS 서비스를 점검해 달라고 요청하고 인증서 검증은 유지하세요.
- TLS 연결 직후 연결이 끊김: Type, Password, 전송 옵션을 다시 확인하세요. 핸드셰이크 후 연결이 끊겼다고 반드시 비밀번호가 틀린 것은 아닙니다. 서버 로그도 함께 확인하세요.
- 연결 후 일부 요청만 실패: Global Routing과 현재 Config를 확인해 요청이 선택한 항목을 통과하는지 점검하세요. 그다음 대상 사이트 오류, DNS 문제, 규칙의 영향을 구분합니다.
비밀번호를 복사했는데도 연결되지 않는 이유는 무엇인가요?
먼저 복사한 값이 계정 로그인 비밀번호가 아니라 Trojan의 Password인지 확인하세요. Home에서 해당 항목의 편집 화면을 열어 앞뒤 공백, 줄바꿈, 대소문자를 확인한 다음 포트와 SNI를 점검합니다. 이미 정확한 비밀번호를 반복해서 바꿀 필요는 없습니다.
Address에 IP를 입력하면 SNI에도 IP를 입력해야 하나요?
반드시 그런 것은 아닙니다. 기존 설정에서 TLS 서비스 이름으로 도메인을 지정했다면 SNI에는 해당 도메인을 입력하고, Address에는 연결에 사용할 IP를 그대로 입력하세요. 예시 도메인을 자신의 설정에 사용하거나 접속 가능한 웹사이트 도메인을 임의로 선택하지 마세요.
Allow Insecure를 켜니 연결됩니다. 계속 켜 둬도 되나요?
이를 장기적인 해결 방법으로 삼으면 안 됩니다. 다시 끄고 SNI와 기기 시간을 확인한 뒤, 서비스 제공업체에 인증서 유효기간과 체인을 점검해 달라고 요청하세요. 이 증상은 검증 단계에 문제가 있을 수 있다는 뜻이지, 서비스의 신원이 신뢰할 만하다는 증거는 아닙니다.
구독을 업데이트한 뒤 다시 연결되지 않습니다. 무엇을 확인해야 하나요?
업데이트 전후의 Address, Port, SNI, 전송 설정을 비교하고 Home에서 실제로 선택된 항목을 확인하세요. 업데이트로 로컬 수정이 덮어써졌다면 원본 구독 설정과 비교해 출처를 확인합니다. 비밀번호나 전체 구독 토큰을 공개 문의에 올리지 마세요.
앱을 구입하는 일과 연결 서비스를 이용하는 일은 별개입니다. Shadowrocket은 App Store에서 한 번 구매해 이용하는 상용 폐쇄형 앱으로, 주로 iPhone과 iPad에서 사용합니다. 시스템 요구 사항은 App Store 페이지를 기준으로 확인하세요. 클라이언트 앱 구매와 회선 요금제는 별개입니다. 이 글은 이미 보유한 설정을 사용하는 방법만 설명하며 연결 서비스나 구독을 제공·판매·추천하지 않습니다.