이 안내는 iPhone이나 iPad에서 Shadowrocket을 사용하며, 본인의 서비스 제공업체와 Trojan 설정을 이미 보유한 사용자를 대상으로 합니다. 추가할 때는 원본 자료에 따라 Address, Port, Password, SNI를 입력하고 인증서 검증을 켜 두세요. 연결에 실패하면 주소 확인, 포트, TLS, 인증, 규칙과 분기 순서로 점검하고, 문제 해결을 위해 Allow Insecure를 켜지는 마세요. 다른 플랫폼에서도 매개변수의 의미를 참고할 수 있지만, 메뉴 위치는 실제 클라이언트에 따라 다를 수 있습니다.
1. Trojan과 TLS: 연결은 어떤 단계를 거칠까
Trojan은 프록시 프로토콜이며, TLS는 클라이언트와 서버 사이의 통신을 암호화하고 서버의 신원을 확인합니다. 일반적인 Trojan 연결은 먼저 TCP 연결을 맺고 TLS 핸드셰이크를 완료한 다음, 암호화된 채널을 통해 인증 정보와 대상 주소를 전송합니다. TLS 핸드셰이크 성공은 보안 채널이 만들어졌다는 뜻일 뿐, 비밀번호가 올바르거나 대상 웹사이트에 접속할 수 있다는 뜻은 아닙니다.
여기서 TLS는 프록시 서버가 사용자를 대신해 모든 HTTPS 웹페이지의 암호를 푼다는 뜻이 아닙니다. HTTPS 사이트에 접속할 때 브라우저와 대상 사이트 사이에도 별도의 TLS 연결이 설정되는 것이 일반적입니다. Trojan의 TLS는 기기에서 프록시 서버까지 이어지는 바깥쪽 통신 채널입니다. 두 연결은 서로 다른 인증서와 장애 지점을 사용하므로 서버 인증서 오류와 특정 웹사이트의 인증서 오류를 혼동하지 마세요.
일반적인 설정에서는 TCP 443 포트를 사용하지만, 443이 프로토콜에서 강제되는 값은 아닙니다. 서버가 다른 포트를 수신 대기한다면 클라이언트에도 그 값을 입력해야 합니다. Trojan은 QUIC과도 다릅니다. 설정에 UDP 전달이 언급되어 있다고 해서 전송 방식을 임의로 Hysteria2로 바꾸거나, 모든 게임과 음성 앱이 똑같이 작동할 것이라고 가정하지 마세요.
2. Add Server: 사전 준비와 추가 절차
먼저 보유한 설정에서 서버 주소, 수신 포트, 비밀번호, TLS 이름 관련 요구사항을 확인하세요. 자료에 구독만 있다면 이름이나 스크린샷으로 매개변수를 추측하지 말고 기존 구독을 가져오는 것이 좋습니다. 수동으로 기록한 항목과 구독으로 가져온 항목은 업데이트 방식이 다를 수 있으므로, 수정하기 전에 편집 중인 항목이 무엇인지 확인하세요.
- 추가 화면으로 이동합니다. Home에서 오른쪽 위의 추가 버튼을 누르고 Add Server로 이동한 다음 Type을 Trojan으로 설정합니다. Trojan 비밀번호를 다른 프로토콜의 UUID나 ID 입력란에 넣지 마세요.
- Address를 입력합니다.
example.com처럼 호스트 이름이나 IP 주소만 입력하세요.https://, 웹페이지 경로, 구독 URL의 쿼리 매개변수는 넣지 마세요. 이 문서의 도메인은 형식을 설명하기 위한 예시이며, 실제로 사용할 수 있는 서비스 주소가 아닙니다. - Port를 입력합니다. 원본 자료에 적힌 숫자를 입력하세요. 예를 들어 서버가 명시적으로 443 포트를 사용한다면
443을 입력합니다. 브라우저에서 해당 도메인에 접속할 수 있다고 해서 프록시도 반드시 443 포트를 수신한다고 단정하지 마세요. - Password를 입력합니다. 문자, 대소문자, 기호를 원본과 완전히 똑같이 입력하세요. 복사할 때 공백이나 줄바꿈이 함께 들어가지 않았는지도 확인합니다. Password는 구독 주소의 전체 쿼리 문자열이 아니며, 서비스 제공업체 웹사이트의 로그인 비밀번호로 대신할 수도 없습니다.
- TLS 매개변수를 확인합니다. 자료에 따라 SNI를 설정하고, 화면에 TLS 스위치가 있다면 일반적인 Trojan TLS 설정에서는 켜 두세요. Allow Insecure는 끈 상태로 유지하고, 제공되지 않은 전송 확장 매개변수를 임의로 추가하지 마세요.
- 저장하고 선택합니다. 저장한 뒤 Home으로 돌아가 방금 추가한 항목을 선택하고 연결을 테스트합니다. 시스템 VPN 설정을 처음 만들 때는 시스템 안내에 따라 권한을 허용하세요. 시스템 권한과 서버 인증은 서로 별개의 단계입니다.
3. Address, SNI, 인증서 이름의 관계
Address는 클라이언트가 실제로 연결할 네트워크 주소를 지정합니다. SNI는 TLS 핸드셰이크에서 전송되는 서버 이름으로, 같은 주소에 여러 서비스가 있을 때 해당 인증서를 선택하는 데 자주 사용됩니다. 두 값은 같은 경우가 많지만 반드시 같아야 하는 것은 아닙니다. SNI를 입력해도 연결 대상 네트워크 주소가 바뀌지는 않으며, 잘못된 Address를 바로잡을 수도 없습니다.
연결 주소 매개변수
- Type
- Trojan
- Address
- example.com, 형식 설명용
- Port
- 443, 서버가 실제로 이 포트를 수신할 때만 사용
- Password
- 보유한 설정의 비밀번호를 그대로 입력
주소는 서버를 찾고, 포트는 서버에서 수신 대기 중인 서비스를 지정합니다.
TLS 신원 매개변수
- SNI
- 원본 자료에 지정된 도메인 사용
- 인증서 이름
- 클라이언트가 확인할 서버 이름과 일치해야 합니다
- Allow Insecure
- 끄기, 인증서 검증 유지
- 기기 시간
- 날짜, 시간, 시간대가 올바른지 확인
SNI는 핸드셰이크와 이름 선택에 영향을 주지만, 인증서 신뢰 검증을 대신하지는 않습니다.
Address에 IP 주소를 사용하고 인증서가 도메인 이름으로 발급된 경우, 설정에 맞는 SNI를 지정해야 할 수 있습니다. IP 주소를 그대로 SNI에 복사하지 마세요. 인증서는 유효 기간 안에 있어야 하고 신뢰할 수 있는 인증서 체인도 구성되어야 합니다. 도메인 철자가 맞다고 해서 이 조건까지 모두 충족되는 것은 아닙니다. 자료에 이름 관련 요구사항이 없다면 임의의 도메인을 번갈아 입력하지 말고 원본 설정 제공자에게 확인하세요.
Allow Insecure는 인증서 검증을 완화하는 기능이지, ‘더 많은 네트워크와 호환되게 하는’ 만능 옵션이 아닙니다. 이 기능을 켜면 잘못된 인증서로 인한 연결 차단이 사라질 수 있지만 서버 신원 확인도 약해집니다. 인증서 문제가 발생하면 SNI, 기기 시간, 인증서 유효 기간, 서버 인증서 체인을 확인하세요. 별도의 신뢰 설정이 필요한 환경에서는 해당 환경의 인증서 배포 안내를 따르고, 검증을 계속 꺼 두는 방식으로 해결하지 마세요.
4. 저장 후 테스트: 프로토콜 오류와 규칙 미일치 구분
항목 추가 성공은 설정이 저장되었다는 뜻일 뿐입니다. Home으로 돌아가 방금 추가한 Trojan 항목이 선택되어 있는지 확인한 다음 Connectivity Test를 실행하세요. 테스트 결과는 대상, 네트워크 경로, 테스트 방식에 따라 달라집니다. 지연 시간이 표시되어도 모든 웹사이트, UDP 앱, 규칙 정책이 검증된 것은 아닙니다.
- 연결 상태를 확인합니다. Home에서 연결 스위치를 켜고 바로 연결이 끊기는지 살펴보세요. 앱이 아직 시스템 VPN 연결을 설정하지 못했다면 원격 포트를 수정하기 전에 권한이나 로컬 설정 문제부터 해결하세요.
- 분기 설정 변수를 잠시 분리합니다. 허용된 네트워크 사용 범위에서 Global Routing을 잠시 Proxy로 바꾸고, 선택한 항목으로 확인할 테스트 대상에 접속합니다. Proxy는 대부분의 규칙 선택 영향을 배제하는 데 쓰이며 TLS 오류나 비밀번호 오류를 해결하지는 않습니다.
- Config로 되돌립니다. 해당 항목이 작동하는지 확인한 뒤 Global Routing을 Config로 되돌리고, Config에서 실제로 활성화된 설정을 점검하세요. 요청이 프록시를 거치지 않을 수 있으므로 Direct는 Trojan 전달을 검증하는 방법으로 적합하지 않습니다.
- 자동 연결 조건을 확인합니다. 문제 해결 중에는 Settings → On Demand를 확인해 자동 연결 조건이 테스트 상태를 바꾸지 않도록 하세요. 점검이 끝나면 원래 설정으로 되돌립니다. On Demand는 연결을 시작하는 조건을 관리할 뿐 Password나 SNI를 수정하지 않습니다.
아래는 규칙의 일치 순서를 설명하기 위한 실제 규칙 문법이며, 사용할 수 있는 서버 정보는 포함하지 않습니다. example.com과 하위 도메인은 PROXY로 보내고, 문서용 예약 주소 대역은 직접 연결하며, 나머지 요청도 PROXY로 보냅니다. 이 규칙은 기존 설정의 [Rule] 섹션에만 추가하세요. 이 조각으로 설정 파일 전체를 덮어쓰지 마세요.
[Rule]
DOMAIN-SUFFIX,example.com,PROXY
IP-CIDR,192.0.2.0/24,DIRECT,no-resolve
FINAL,PROXY
규칙은 위에서 아래로 확인하며, 처음 일치하는 규칙이 적용되면 뒤의 규칙은 검사하지 않습니다. 마지막에는 FINAL이 기본 처리를 담당합니다. 여기서 PROXY는 정책 식별자일 뿐 서버 주소도, Trojan 비밀번호 입력란도 아닙니다. 현재 정책이 테스트하려는 항목을 선택하는지 확인하세요. Proxy에서는 접속되지만 Config에서는 안 된다면 서버 매개변수를 다시 입력하기보다 규칙 일치, 정책 선택, DNS를 먼저 점검하세요.
5. 오류 단계별 시간 초과 및 인증 실패 점검
문제가 발생한 단계에 따라 점검 범위를 좁혀 보세요. 클라이언트의 오류 메시지는 포괄적인 경우가 있으므로 ‘시간 초과’만으로 비밀번호 오류라고 단정할 수 없습니다. 한 번에 변수 하나만 바꾸고 변경 전후의 증상을 기록하세요. Wi-Fi와 모바일 네트워크를 바꿔 테스트할 때도 같은 항목과 같은 대상을 사용해 여러 조건을 한꺼번에 바꾸지 않도록 합니다.
| 관찰된 증상 | 우선 확인할 항목 | 다음 조치 |
|---|---|---|
| Address를 확인할 수 없음 | 도메인 철자, 현재 네트워크의 DNS | URL을 잘못 입력하지 않았는지 확인하고 호스트 이름이 원본 자료와 일치하는지 확인하세요. |
| 연결 시간 초과 또는 거부됨 | Port, 네트워크 연결 가능 여부, 서버 수신 상태 | 포트를 확인하고 다른 네트워크에서 같은 항목으로 다시 테스트한 뒤 서버 상태를 확인하세요. |
| TLS 또는 인증서 오류 | SNI, 기기 시간, 인증서 체인 | Allow Insecure는 끈 상태로 두고 이름과 인증서 설정을 확인하세요. |
| 핸드셰이크 후 연결이 끊기거나 인증 실패 | Password, Type, 서버 인증 설정 | 비밀번호를 다시 복사하고 불필요한 공백이 없는지 확인한 뒤 Trojan이 선택되어 있는지 확인하세요. |
| Proxy에서는 작동하지만 Config에서는 작동하지 않음 | 규칙, 정책, DNS | 활성화된 Config와 요청에 실제로 적용된 정책을 확인하세요. |
| 일부 앱에서만 실패 | 대상 서비스, UDP 전달, 앱 자체의 네트워크 동작 | 웹페이지와 해당 앱을 각각 테스트하세요. 웹페이지 한 곳에 접속된다고 모든 트래픽이 정상이라고 판단하지 마세요. |
서버 주소를 브라우저에 입력해 HTTPS 페이지가 표시되더라도 Trojan 비밀번호와 전달 설정이 올바르다는 증거는 아닙니다. 브라우저 접속과 Trojan 인증은 서로 다른 요청입니다. 마찬가지로 테스트 대상 하나에 접속할 수 없다고 서버 전체가 사용할 수 없는 것도 아닙니다. 오류가 발생한 단계와 여러 통제된 테스트 결과를 함께 살펴보세요. 이 문서는 속도나 가용성을 실측해 보장하지 않습니다.
6. 자주 묻는 설정 질문
주소에 https://가 포함되어 있는데 그대로 붙여 넣어도 되나요?
웹페이지 URL이나 구독 URL 전체를 Address에 넣지 마세요. 원본 설정에서 실제 서버 호스트 이름을 확인한 다음 Address에는 호스트 이름이나 IP 주소만 입력하고 Port는 별도로 입력하세요. 구독 주소는 구독 가져오기 절차에 따라 처리해야 합니다. URL 앞부분을 지운다고 Trojan 서버 주소가 되는 것은 아닙니다.
SNI를 비워도 연결되는데 입력해야 하나요?
일부 설정은 Address를 기본 이름으로 사용하지만 모든 서버에서 SNI를 비워도 된다고 단정할 수는 없습니다. 원본 자료에 SNI가 명시되어 있다면 해당 값을 입력하세요. 특히 Address가 IP 주소이거나 주소 이름과 인증서 도메인이 다르다면 자료에 지정된 이름을 그대로 사용해야 합니다.
Allow Insecure를 켜니 해결됐는데 계속 켜 둬도 되나요?
장기적인 해결 방법으로 사용해서는 안 됩니다. 이 설정을 바꾼 뒤 연결된다면 인증서 검증 단계에 문제가 있을 수 있습니다. 해당 옵션을 다시 끄고 SNI, 시간, 인증서 체인을 확인하세요. 구체적인 인증서 오류는 원본 설정 제공자에게 문의하고, 이름 오류를 숨기기 위해 검증을 건너뛰지 마세요.
구독을 업데이트한 뒤 연결되지 않아요. 다시 추가해야 하나요?
먼저 업데이트 전후의 Address, Port, SNI와 선택된 항목을 비교하고, Home에서 같은 이름의 오래된 항목을 선택한 것은 아닌지 확인하세요. 설정이 실제로 바뀌었다면 사용자가 보유한 최신 자료를 기준으로 해야 합니다. 구독에서 생성된 항목을 수동으로 수정하기 전에는 기존 값을 기록해 두세요. 다음 업데이트에서 변경 사항이 덮어써지면 원인을 파악하기 어려울 수 있습니다.