사용 중인 서비스의 Trojan 정보를 가지고 있다면 먼저 원본 안내에 따라 Address, Port, Password를 확인하고 SNI와 인증서 이름이 일치하는지 살펴보세요. 잘못 입력한 값을 인증서 검증 비활성화로 해결하려 해서는 안 됩니다. 이 글에서는 수동 추가 방법, TLS 연결 과정, 구독 업데이트의 영향, 연결은 되었지만 접속할 수 없는 경우의 단계별 점검 방법을 안내합니다. 예시 도메인, 주소, 비밀번호는 설명용이며 연결에 사용할 수 없습니다.
Trojan 매개변수는 연결·인증·TLS 세 그룹으로 나뉩니다
Shadowrocket에서 Trojan을 선택한다고 비밀번호만 입력하면 되는 것은 아닙니다. 먼저 서버를 찾고 TLS 연결을 설정한 다음 서버에 Trojan 인증 정보를 전달합니다. Address와 Port는 연결할 대상을 지정하고, Password는 Trojan 인증에 사용됩니다. SNI와 인증서 검증은 TLS 단계에서 서버의 신원을 확인하는 데 관여합니다. 각 그룹은 서로 다른 단계에서 쓰이므로 서로 대신 사용할 수 없습니다.
이 글은 이미 유효한 매개변수를 가지고 있다는 전제에서 설명합니다. 완전한 구독 정보를 받았다면 가져온 설정을 우선 그대로 사용하세요. 필드를 확인해야 하거나 수동 추가를 안내받은 경우에만 Add Server로 이동합니다. 구독 주소를 서버 Address로 입력하거나 구독 링크의 token을 Trojan Password로 사용하지 마세요.
결론: 문제가 발생한 단계에 맞춰 매개변수를 점검하세요
인증서 이름 오류가 발생하면 먼저 SNI와 인증서를 확인하고 Password는 바꾸지 마세요. 연결 시간 초과가 발생하면 Address, Port, 네트워크 연결 가능성을 확인하세요. 비밀번호를 계속 바꾸며 원인을 찾으려 하지 마세요.
Add Server에서 수동 추가: 저장한 다음 테스트
수동 추가는 Home 오른쪽 위의 “+”에서 시작합니다. Add Server로 이동한 뒤 Type에서 Trojan을 선택하세요. 표시되는 필드는 Type과 전송 설정에 따라 달라집니다. 이 글에서는 일반적인 Trojan 연결에서 확인해야 할 항목만 설명합니다. 원본 안내에 별도의 전송 방식이나 추가 매개변수가 지정되어 있다면 해당 값도 그대로 입력하세요. 기본 예시로 덮어쓰지 마세요.
-
Type 확인
Home → “+” → Add Server → Type으로 이동해 Trojan을 선택합니다. 매개변수에 도메인과 비밀번호가 있다는 이유로 다른 Type을 선택하지 마세요.
-
연결 정보 입력
Add Server로 돌아가 Address와 Port를 각각 입력합니다. Address에는 도메인이나 IP 주소만 입력하고, Port에는 서버에서 지정한 정수만 입력합니다. 프로토콜 접두사는 붙이지 마세요.
-
인증 정보 입력
기존 매개변수의 비밀번호를 Password에 빠짐없이 입력합니다. 대소문자와 기호를 그대로 유지하세요. 붙여넣은 내용의 앞뒤에 공백이나 줄바꿈이 들어가지 않았는지도 확인합니다.
-
서버 신원 확인
TLS 관련 설정에서 SNI와 인증서 검증 옵션을 확인합니다. 안내에 SNI가 명시되어 있다면 해당 값을 그대로 입력하세요. Allow Insecure는 끄고 정상적인 인증서 검증을 유지합니다.
-
저장 후 테스트
저장한 뒤 Home으로 돌아가 해당 항목을 선택하고 연결을 시작합니다. 처음 연결할 때는 시스템 안내에 따라 VPN 구성을 허용하세요. 테스트 전에 Home → Global Routing에서 현재 선택된 항목을 기록해 두면 분기 처리 결과를 서버 연결 결과로 오인하지 않을 수 있습니다.
테스트할 때는 한 번에 한 항목만 변경하세요. 예를 들어 Port를 수정한 뒤 다시 연결하고 결과를 확인합니다. Address, Password, SNI를 동시에 바꾸지 마세요. 여러 항목을 한꺼번에 바꾸면 연결이 복구되더라도 실제 원인을 알 수 없어 구독 업데이트 후 같은 문제가 다시 발생할 수 있습니다.
Address, Port, Password, SNI에는 각각 무엇을 입력해야 하나요?
아래 매개변수는 설명용이며 연결에 사용할 수 없습니다. 192.0.2.10은 문서 예시 주소이고 example.com은 예시 도메인입니다. 표는 필드 간 관계를 설명하기 위한 것으로, 해당하는 서비스가 있다는 뜻은 아닙니다.
| 필드 | 예시 값 | 확인할 사항 |
|---|---|---|
| Type | Trojan |
원본 매개변수에 지정된 프로토콜과 일치해야 합니다. |
| Address | 192.0.2.10 |
IP 주소나 도메인을 입력합니다. https://, 경로, 쿼리 매개변수는 포함하지 않습니다. |
| Port | 443 |
서버에서 실제로 수신 대기하는 포트와 일치해야 합니다. TLS를 사용한다는 이유만으로 443을 입력하지 마세요. |
| Password | Demo-Only-Not-A-Real-Password |
원본 비밀번호를 입력하세요. 직접 해시값을 계산하거나 구독 token으로 대신하지 마세요. |
| SNI | tls.example.com |
서버에서 지정한 TLS 이름을 사용하세요. 프로토콜, 포트, 경로는 포함하지 않습니다. |
| Allow Insecure | 끔 | 인증서 검증을 유지하세요. 인증서에 문제가 있으면 매개변수를 바로잡거나 해당 서비스를 관리하는 담당자에게 문의하세요. |
Address와 SNI는 서로 다를 수 있습니다
Address는 실제 네트워크 연결을 맺을 대상을 지정합니다. SNI는 TLS 핸드셰이크 중 서버에 요청할 이름을 전달하는 매개변수입니다. 서버는 이 이름에 따라 인증서를 선택하거나 연결을 처리할 수 있습니다. Address에 IP를 사용하더라도 SNI에는 도메인이 필요할 수 있습니다. 예를 들어 표의 tls.example.com처럼 입력할 수 있습니다. 이는 서로 모순되는 설정이 아니며 Address를 해당 도메인으로 억지로 바꿔야 한다는 뜻도 아닙니다.
Address가 인증서에 지정된 도메인이고 원본 안내에 별도 SNI가 없다면 가져온 값이나 기본 설정을 우선 유지할 수 있습니다. 인증서 이름 오류가 발생하면 해당 서비스의 관리 담당자에게 필요한 이름을 확인하세요. 접속 가능한 웹사이트의 도메인을 임의로 입력하지 마세요. SNI는 임의로 적는 메모가 아니며, 잘못 입력하면 서버가 다른 인증서를 반환하거나 핸드셰이크가 실패할 수 있습니다.
Password에는 공유 링크 전체를 입력하지 않습니다
- 수동으로 입력할 때는 디코딩된 실제 필드 값을 사용하고,
trojan://공유 링크 전체를 Password에 붙여넣지 마세요. - 공유 링크에서 매개변수를 확인할 때는 URI 인코딩에 유의하세요. 비밀번호의 특수 문자가 퍼센트 인코딩으로 표시될 수 있으며, 인코딩된 부분을 그대로 복사하면 원래 비밀번호와 다를 수 있습니다.
- 완전한 공유 링크가 있다면 앱에서 지원하는 가져오기 기능을 이용해 매개변수를 보존하세요. 이후 항목을 열어 확인하는 방법이 내용을 일일이 나누어 수동으로 입력하는 것보다 누락이 적습니다.
TLS 인증서 검증: 연결 성공이 올바른 서버 신원을 뜻하지는 않습니다
TLS는 전송 데이터를 암호화할 뿐 아니라 서버의 신원을 확인하는 역할도 합니다. 정상적인 검증을 위해서는 인증서 신뢰 체인, 유효 기간, 이름 일치 여부를 확인해야 합니다. Password가 정확해도 인증서 오류를 보완할 수 없습니다. 반대로 TLS 핸드셰이크가 성공했다고 해서 서버가 Trojan 비밀번호를 승인했다는 뜻도 아닙니다.
인증서 오류가 발생하면 먼저 SNI를 확인한 뒤 iPhone 또는 iPad의 날짜와 시간이 정확한지 살펴보고 서버 인증서가 만료되지 않았는지 확인하세요. 인증서 체인이 누락되었거나 이름 설정이 잘못된 경우에는 서비스 관리 담당자가 수정해야 합니다. 알림을 없애려고 기기의 날짜와 시간을 잘못된 값으로 바꾸지 마세요.
정상적인 인증서 검증 유지
권장Allow Insecure를 끈 상태로 유지하세요. 인증서 오류가 있으면 정상적인 연결이 차단되므로 이름, 유효 기간, 신뢰 체인을 확인해야 합니다. 문제를 숨겨서는 안 됩니다.
적합한 경우: 일상적인 연결 및 매개변수를 수정한 뒤 정상적으로 복구되었는지 확인할 때
인증서 검증 건너뛰기
Allow Insecure를 켜면 서버 신원 확인이 약화됩니다. 연결 상태가 달라지더라도 인증서 문제가 해결되었다거나 의도한 서버에 연결되었다고 볼 수 없습니다.
적합한 경우: 이 문제 해결 옵션의 기능과 위험을 이해할 때. 이 글의 복구 단계로 사용하지 마세요.
결론: 이름을 바로잡은 다음 다시 연결하세요
SNI를 수정한 뒤 연결이 복구되더라도 인증서 검증은 계속 켜 두고 실제 접속을 테스트하세요. 문제를 확인하는 과정에서 변경한 검증 옵션을 완화된 상태로 남겨 두지 마세요.
연결은 되었지만 접속할 수 없을 때: 서버·라우팅·요청 시 연결을 구분해 확인
시스템에 VPN 연결됨으로 표시되는 것은 터널이 설정되었다는 뜻일 뿐, 모든 대상에 선택한 Trojan 서버를 통해 접속할 수 있다는 보장은 아닙니다. Home에서 항목을 선택했더라도 현재 요청이 반드시 그 항목을 사용하는 것은 아닙니다. 서버 매개변수의 정확성과 요청에 실제로 적용되는 정책을 나누어 확인하세요.
- Home → Global Routing → Proxy: 분기 규칙의 영향을 일시적으로 제외하고, 프록시 처리 대상인 테스트 요청이 현재 선택한 서버를 통해 처리되는지 확인합니다. 테스트를 마치면 원래 선택으로 되돌리세요.
- Home → Global Routing → Direct: 요청이 직접 연결 방식으로 처리됩니다. 이 상태에서 웹페이지가 열린다고 해서 Trojan 매개변수가 올바르다는 뜻은 아닙니다.
- Home → Global Routing → Config: 현재 설정에 따라 트래픽을 처리합니다. Config에서 활성화된 파일과 규칙을 확인하세요. 모든 트래픽이 선택한 서버를 거친다고 단정할 수 없습니다.
- Home → Global Routing → Scene: 현재 Scene의 구체적인 설정도 확인해야 합니다. 처리 결과를 Proxy 또는 Config와 동일하다고 간주하지 마세요.
- Settings → On Demand: 요청 시 연결 설정이 연결을 자동으로 시작하는 데 영향을 주는지 확인합니다. On Demand는 연결 시작을 처리하며 Trojan 비밀번호, SNI, 인증서를 자동으로 수정하지 않습니다.
Config에서 DOMAIN-SUFFIX는 도메인 접미사로, GEOIP는 IP의 지리적 위치로, IP-CIDR은 IP 대역으로 매칭합니다. FINAL은 앞선 규칙에 일치하지 않은 트래픽을 처리합니다. 규칙 순서와 최종 정책이 모두 접속 경로에 영향을 줍니다. 아래 내용은 규칙 문법을 설명하기 위한 것으로 완전한 설정 파일이 아니며 기존 파일을 덮어쓸 필요도 없습니다.
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT
GEOIP,CN,DIRECT
FINAL,PROXY
예를 들어 DIRECT에 일치하는 요청은 현재 Trojan 서버가 사용 가능한지 확인하지 않습니다. 반대로 Proxy를 임시로 선택했을 때는 요청이 성공하지만 Config로 되돌리면 실패한다면 Password를 바로 바꾸기보다 규칙, 정책, 도메인 조회 관련 설정을 먼저 확인하세요. 테스트 기록에는 대상, 라우팅 선택, 오류 메시지를 명확히 적으세요. 이 글에서는 지연 시간이나 성공률을 임의로 제시하지 않습니다.
자주 발생하는 입력 오류와 구독 업데이트 후 확인 사항
구독은 설정의 출처이고, 서버 항목은 가져온 설정의 개별 항목입니다. 구독을 업데이트하면 Address, Port, 인증 정보, TLS 매개변수가 바뀔 수 있으며 수동으로 수정한 필드가 이후 업데이트로 덮어써질 수도 있습니다. 문제를 확인하기 전에 필드 이름과 오류 메시지를 기록하되 비밀번호나 token이 포함된 전체 내용을 공개 게시판에 보내지 마세요.
Address에 https://를 입력해야 하나요?
아니요. Home에서 해당 항목의 편집 화면을 열고 Address에는 도메인이나 IP만 남기세요. 포트는 Port에 입력합니다. 웹 주소, 구독 주소, 서버 주소는 용도가 다르므로 같은 필드에 섞어 입력할 수 없습니다.
안내된 포트가 443이 아닌데 443으로 바꿔야 하나요?
아니요. Port는 서버에서 실제로 수신 대기하는 값과 일치해야 합니다. 안내된 값이 8443이라면 8443을 입력하세요. Trojan이 TLS를 사용한다는 이유만으로 서버가 반드시 443에서 대기한다고 추정해서는 안 됩니다.
인증서 이름이 일치하지 않는다고 나오는데 비밀번호가 틀린 건가요?
먼저 항목의 SNI가 서버 요구 사항과 일치하는지 확인하고 프로토콜 접두사나 포트를 붙여 넣지 않았는지 살펴본 다음 기기의 시간을 확인하세요. 인증서 신원 확인과 Trojan 비밀번호 인증은 서로 다른 단계이므로 Password를 반복해서 바꿔도 인증서 이름 문제는 해결되지 않습니다.
구독을 업데이트한 뒤 수동으로 수정한 SNI가 다시 바뀌면 어떻게 하나요?
Home에서 해당 구독을 업데이트한 뒤 항목을 다시 열어 SNI, Address, Port를 확인하세요. 업데이트할 때마다 잘못된 필드가 다시 내려온다면 해당 서비스의 관리 담당자에게 구체적인 필드를 알려주세요. 테스트용 매개변수를 유지해야 한다면 별도의 수동 항목을 만들고 알아보기 쉬운 이름을 지정하세요.
구독은 업데이트되는데 서버 연결은 왜 실패하나요?
구독 업데이트에 성공했다는 것은 설정을 가져와 해석했다는 뜻일 뿐, 해당 서버의 연결 테스트를 통과했다는 의미는 아닙니다. Home으로 돌아가 해당 항목을 선택하고 Global Routing을 확인한 뒤 다시 테스트하세요. 시간 초과, 인증서 오류, 인증 문제를 각각 구분해 점검합니다.
문제 해결 정보를 전달하기 전에 기록할 내용
- 항목을 수동으로 추가했는지 구독에서 가져왔는지, 문제가 구독 업데이트 직후 발생했는지 기록합니다.
- 현재 Type, Port, Global Routing 선택 상태와 전체 오류 메시지를 기록합니다. 민감한 필드는 원본 정보와 일치하는지만 설명하세요.
- 한 번에 하나씩 변경한 내용과 결과를 기록합니다. 예: “SNI를 수정한 뒤 인증서 이름 오류는 사라졌지만 대상에 계속 접속할 수 없습니다.”
- Password, 구독 token, 전체 공유 링크는 가리세요. 민감한 정보가 이미 공개되었다면 해당 서비스의 계정 관리 경로를 통해 관련 인증 정보를 변경하세요.
문제 해결을 마친 뒤 평소 사용할 Global Routing과 On Demand 설정으로 되돌리고 정상적인 인증서 검증이 켜져 있는지 확인한 다음 자주 사용하는 대상에 접속해 보세요. 이렇게 하면 임시 진단 상태와 최종 설정을 분리할 수 있어 테스트 한 번 성공한 뒤 일상적인 사용에 적합하지 않은 설정이 남는 것을 방지합니다.