Shadowrocket Trojan 서버 설정 방법: Password, SNI, Allow Insecure

Trojan은 TLS 암호화 연결을 통해 데이터를 전송합니다. 작동 방식을 살펴보고 Add Server에서 Address, Port, Password, SNI를 입력할 때 자주 발생하는 실수를 짚어봅니다.

핵심 내용

Trojan을 설정할 때는 먼저 Type, Address, Port, Password를 확인하고, 기존 설정에 따라 SNI를 입력하세요. Allow Insecure는 일반적으로 꺼 둡니다. 본인에게 제공된 서버 매개변수나 구독 정보를 보유한 사용자를 대상으로, 연결 설정 → 인증서 확인 → 프로토콜 인증 → 라우팅 확인 순서로 각 항목과 문제 해결 방법을 설명합니다. 예시 값은 형식을 설명하기 위한 것으로 연결에 사용할 수 없습니다.

Trojan 연결은 TLS를 거친 뒤 인증을 진행합니다

Shadowrocket의 Trojan은 프록시 프로토콜 유형 중 하나이며, 비밀번호만 입력하면 사용할 수 있는 서비스가 아닙니다. 클라이언트는 연결할 서버와 포트, 서버에서 허용하는 Password를 알아야 합니다. 클라이언트 구매와 연결 서비스 이용은 별개입니다. 이 문서에서는 사용자가 이미 서비스 제공업체와 구독 정보를 보유한 경우를 전제로 하며, 사이트는 서버 정보나 구독을 제공·판매·추천하지 않습니다.

일반적인 Trojan 연결은 먼저 대상 주소에 기본 연결을 설정한 다음 TLS 핸드셰이크를 진행합니다. TLS 단계에서는 서버 인증서와 이름을 확인합니다. 보안 채널이 설정되면 클라이언트가 Trojan 프로토콜 인증 정보와 대상 요청을 전송합니다. 따라서 Password가 맞더라도 인증서 이름이 일치하지 않는 문제는 해결되지 않으며, SNI를 바꿔도 Password 오류는 해결되지 않습니다.

  1. 연결 대상: Address와 Port가 실제로 연결할 서버의 접속 지점을 지정합니다. 도메인 주소는 먼저 DNS 조회가 필요할 수 있습니다.
  2. TLS 핸드셰이크: SNI는 핸드셰이크에서 서버 이름을 지정하는 데 사용됩니다. 클라이언트는 설정에 따라 인증서 체인과 인증서에 포함된 이름도 확인해야 합니다.
  3. Trojan 인증: Password는 서버에서 허용하는 인증 정보와 일치해야 합니다. 구독 링크의 token이나 다른 프로토콜의 필드로 대체할 수 없습니다.
  4. 요청 전달: 인증에 성공해도 실제 요청이 이 서버를 통과할지는 Global Routing, 현재 설정, 정책 선택에 따라 달라집니다.

이 네 단계는 문제를 확인하는 순서이지, 서로 독립된 네 개의 스위치가 아닙니다. 앞 단계의 문제를 먼저 해결한 뒤 다음 단계로 넘어가세요. 한 번의 지연 시간 테스트에서 결과가 나왔다는 사실만으로는 테스트 대상 단계에 응답이 있었다는 것만 알 수 있습니다. 인증서, 인증, 모든 대상 요청이 정상이라고 단정할 수는 없습니다.

Add Server: 항목별 입력 방법

수동으로 추가하려면 Home 오른쪽 상단의 “+”를 누른 뒤 Add Server로 이동하고 Type을 Trojan으로 설정합니다. 포트가 443이라는 이유만으로 다른 Type을 선택하지 마세요. 포트 번호만으로 프로토콜을 판단할 수 없습니다. 아래 단계는 Trojan 매개변수 전체를 보유한 경우에 적용되며, 표시되는 항목은 앱의 현재 화면을 기준으로 확인하세요.

  1. 추가 화면 열기

    Home → 오른쪽 상단 “+” → Add Server로 이동한 다음 Type에서 Trojan을 선택합니다. 기존 항목을 편집한다면 계속 사용할 수 있는 설정을 덮어쓰지 않도록 먼저 원래 값을 기록하세요.

  2. 접속 정보 입력

    보유한 매개변수에서 서버 호스트 이름을 Address에, 포트 번호를 Port에 각각 입력합니다. 예를 들어 Address는 edge.example.com, Port는 443입니다. 두 값을 하나의 주소로 합쳐 입력하지 마세요.

  3. 인증 정보 입력

    Trojan Password 전체를 해당 항목에 복사하고 대소문자와 앞뒤 공백을 확인하세요. 필드 이름이나 따옴표, 줄바꿈을 덧붙이지 말고 구독 주소도 입력하지 마세요.

  4. TLS 설정 확인

    기존 매개변수에 따라 SNI를 입력하고 Allow Insecure 상태를 확인하세요. 매개변수에 SNI가 명시되어 있으면 그대로 사용하고, 흔히 쓰이는 웹사이트 도메인을 임의로 입력하지 마세요. 인증서가 정상적으로 설정된 경우 Allow Insecure는 꺼 둡니다.

  5. 저장 후 테스트

    저장한 뒤 Home으로 돌아가 방금 추가한 항목을 선택하고 Global Routing을 확인한 다음 연결을 시작합니다. 처음 연결할 때 시스템 VPN 설정 승인 안내가 나타나면 안내에 따라 확인한 뒤 실제 요청을 테스트하세요.

Address에는 호스트 이름이나 IP 주소만 입력하고 https://, 경로, 쿼리 매개변수는 포함하지 마세요. Port는 기존 서버 매개변수와 일치해야 합니다. 443은 흔한 예시일 뿐이며 8443 같은 다른 포트도 TLS 서비스에 사용될 수 있으므로 임의로 443으로 바꾸면 안 됩니다. 제공된 매개변수에 전송 계층이나 고급 옵션이 포함되어 있다면 각 항목을 그대로 반영해야 합니다. 기본 항목 네 개만으로 전체 설정을 추측할 수는 없습니다.

Password와 SNI: 서로 바꿔 쓸 수 없는 두 매개변수

Password는 Trojan 인증 정보이며 SNI는 TLS 단계에서 사용하는 서버 이름입니다. 형식과 용도가 서로 다릅니다. Trojan Password는 UUID 형식일 필요가 없습니다. 인증 정보가 UUID처럼 보여도 전체를 하나의 비밀번호로 취급하세요. VMess나 VLESS의 필드 관례에 따라 나누거나 수정하면 안 됩니다.

연결 및 인증 예시

Type
Trojan
Address
edge.example.com
Port
443
Password
DemoOnly-7qK9-p4

위 값은 형식을 보여 주기 위한 예시이며 실제로 사용할 수 있는 서비스 정보가 아닙니다. Password는 사용자가 보유한 인증 정보 전체로 바꿔야 합니다.

TLS 이름 예시

SNI
tls.example.com
인증서 이름
tls.example.com을 포함해야 함
Allow Insecure
끔
이름 형식
프로토콜, 경로, 포트가 없는 호스트 이름

SNI는 Address와 다를 수 있지만, 기존 서버 구성과 인증서 설정에 맞아야 하며 임의로 지정해서는 안 됩니다.

Address는 “어디에 연결할지”를 지정하고 SNI는 “TLS 핸드셰이크에서 어떤 서버 이름을 요청할지”를 지정합니다. 하나의 접속 지점에서 여러 TLS 서비스를 제공할 수 있으므로 두 필드가 반드시 같지는 않습니다. 그렇다고 SNI를 임의로 바꿔도 된다는 뜻은 아닙니다. 서버가 해당 이름을 인식해야 하며, 반환되는 인증서 이름도 클라이언트가 예상하는 이름과 일치해야 합니다.

Address가 IP 주소라면 특히 서버에서 제공한 SNI를 확인해야 합니다. 도메인 대신 IP를 입력하면 기존 주소 조회 과정은 생략될 수 있지만 기본 서버 이름도 함께 달라져 인증서 확인에 실패할 수 있습니다. 기존 매개변수에 SNI가 명시되어 있지 않다면 추측해서 입력하지 마세요. 먼저 서버 인증서에 포함된 이름과 기존 설정의 TLS 옵션을 확인해야 합니다.

Allow Insecure: 인증서 검증과 암호화의 차이

Allow Insecure는 TLS 인증서 검증 방식을 제어하는 설정이지, TLS 사용 여부를 정하는 설정이 아닙니다. 이 옵션을 켜도 연결은 TLS로 암호화될 수 있지만, 클라이언트가 정상적인 방식으로 서버 인증서를 검증하지 않으므로 상대 서버의 신원을 확인할 수 없습니다. Address, 포트, Password 오류도 해결하지 않으므로 연결이 실패했을 때 무조건 켜는 해결책으로 사용하면 안 됩니다.

Allow Insecure 끔

권장

인증서 검증을 유지합니다. 인증서가 만료되었거나 이름이 일치하지 않거나 신뢰 체인에 문제가 있다면 검증을 우회하지 말고 인증서와 SNI를 먼저 확인하세요.

적합한 경우: 인증서가 유효하고 이름이 일치하는 일반적인 연결 설정

Allow Insecure 켬

인증서 검증을 완화합니다. TLS 암호화가 적용된다는 사실만으로 서버 신원이 확인되었다고 볼 수 없습니다. 연결이 다시 되더라도 인증서 검증 단계에 확인할 문제가 있다는 뜻일 뿐, 설정이 올바르다는 의미는 아닙니다.

적합한 경우: 인증서 문제를 명확히 파악한 상태에서 진행하는 제한적·임시 진단. 장기적인 해결책으로 사용하지 마세요.

꺼져 있을 때 실패하고 켰을 때 성공한다면 해당 옵션을 다시 끄고 기기의 날짜와 시간, SNI 철자, 인증서 유효 기간, 서버가 전체 인증서 체인을 전송하는지 확인하세요. 기기 시간이 크게 어긋나도 인증서 유효 기간 확인에 영향을 줄 수 있습니다. 장기적인 해결책은 매개변수나 서버 인증서 설정을 바로잡는 것이며, 검증을 계속 무시하는 것이 아닙니다.

수동 설정과 구독: 설정 출처별 확인 방법

수동으로 추가한 항목과 구독에서 가져온 항목 모두 서버의 실제 매개변수와 일치해야 합니다. 차이는 해당 항목을 누가 관리하는지에 있습니다. 구독을 이미 사용 중이라면 업데이트를 통해 서버에서 변경된 주소, 포트, 인증 정보가 반영될 수 있습니다. 수동 항목은 변경 사항을 직접 동기화해야 합니다. 구독에 SNI나 전송 계층 등의 항목이 포함되는지는 가져온 뒤 실제 항목을 확인해야 하며, 표시 이름만으로 판단할 수 없습니다.

두 가지 설정 출처를 확인하는 방법

수동 입력
  • Home → “+” → Add Server로 이동해 Type에서 Trojan을 선택합니다.
  • Address, Port, Password, SNI를 항목별로 확인합니다.
  • 서버 매개변수가 변경되면 로컬 항목도 함께 수정합니다.
  • 문제 해결 전에 기존 값을 기록하고, 한 번에 하나의 항목만 수정합니다.
기존 구독
  • Home → “+”로 이동해 Type에서 Subscribe를 선택하고 본인의 구독 링크를 입력한 다음 저장합니다.
  • Home으로 돌아가 아래로 당겨 새로 고침하고 구독 항목을 가져왔는지 확인합니다.
  • 대상 항목을 열어 가져온 Type과 TLS 매개변수를 확인합니다.
  • 이후 업데이트에서 로컬 수정 사항이 덮어써질 수 있으므로 필요한 문제 해결 기록을 보관하세요.

구독을 가져오는 데 성공했다고 Trojan 연결까지 성공한 것은 아닙니다. 두 가지를 각각 테스트해야 하며, 사이트는 구독 내용을 제공하지 않습니다.

또 다른 흔한 혼동은 Home의 서버 항목과 Config의 규칙 설정을 같은 것으로 보는 것입니다. 전자는 프록시 접속 지점을 설명하고, 후자는 요청에 적용할 정책을 결정합니다. Global Routing에서 Config를 선택하면 요청은 현재 활성화된 설정에 따라 처리됩니다. DIRECT 규칙에 일치하면 Trojan 항목을 선택했더라도 해당 요청은 이를 통해 전달되지 않습니다.

예를 들어 Config 상태에서 DOMAIN-SUFFIX,example.com,DIRECT 규칙은 해당 도메인과 하위 도메인의 요청을 DIRECT로 보냅니다. 이 경우 Trojan Password를 반복해서 수정하기보다 규칙이 어떻게 적용됐는지 확인해야 합니다. 규칙 문제와 프로토콜 연결 문제는 나누어 진단하세요.

연결 실패: 증상에 따라 점검 범위 좁히기

먼저 재현 조건을 기록하세요. 사용 중인 네트워크, 현재 선택한 항목, Global Routing 설정, Allow Insecure 활성화 여부, 실패가 구독 가져오기 단계인지 실제 요청 단계인지 확인합니다. 이후에는 한 번에 변수 하나만 바꾸세요. 아래 내용은 조건에 따른 점검 방법이며 특정 서비스에서 직접 측정한 결과가 아닙니다. 구체적인 오류 문구는 앱에 표시되는 내용을 기준으로 확인하세요.

계속 시간 초과가 발생합니다. Password가 잘못된 건가요?

시간 초과만으로 결론을 내릴 수는 없습니다. 먼저 Home에서 항목을 편집해 Address와 Port를 확인한 뒤, 같은 매개변수로 Wi-Fi와 셀룰러 네트워크를 바꿔가며 테스트하세요. 기본 연결이 아직 설정되지 않았다면 Password를 판단할 수 있는 인증 단계에 도달하지 않은 것입니다. 포트, SNI, 비밀번호를 한꺼번에 바꾸지 마세요.

인증서 오류가 표시됩니다. 어떤 항목을 바꿔야 하나요?

먼저 기기의 날짜와 시간을 확인한 다음 항목의 SNI가 기존 매개변수와 일치하는지, https://나 포트를 잘못 입력하지 않았는지 확인하세요. 이름이 올바른데도 오류가 난다면 서버 인증서의 유효 기간과 인증서 체인을 점검하세요. Allow Insecure를 켜는 것을 최종 해결책으로 삼지 마세요.

지연 시간은 표시되는데 웹페이지가 열리지 않는 이유는 무엇인가요?

지연 시간 테스트는 실제 대상 요청이 정상적으로 완료되었음을 의미하지 않습니다. Home에서 대상 Trojan 항목을 선택했는지 확인한 뒤 Global Routing이 Direct로 설정되어 있는지 살펴보세요. Config를 사용한다면 요청에 적용된 정책을 확인합니다. 규칙의 영향을 분리해 테스트하려면 Proxy를 일시적으로 사용하고, 테스트 후 원래 설정을 복원하세요.

방금 수정한 설정이 구독을 업데이트한 뒤 다시 바뀌었나요?

업데이트된 항목을 열어 Address, Port, Password, SNI를 하나씩 비교하세요. 구독을 업데이트하면 구독 출처에 있는 매개변수가 다시 적용될 수 있습니다. 같은 항목을 기록 없이 반복 수정하기보다 먼저 구독에서 제공하는 설정이 수정되었는지 확인하세요.

연결을 끈 뒤 왜 자동으로 다시 연결되나요?

Settings → On Demand에서 연결 시 자동 연결이 활성화되어 있는지 확인한 다음 시스템의 VPN 상태를 살펴보세요. 자동 재연결은 연결을 시작하는 동작일 뿐 Trojan 인증에 성공했다는 증거가 아닙니다. 문제를 확인할 때는 연결을 시작하는 조건을 일관되게 유지해 자동 재연결을 설정 적용의 증거로 오해하지 않도록 하세요.

최종 점검에서는 세 가지를 모두 확인해야 합니다. 대상 항목의 필드가 기존 매개변수와 일치하고, TLS 인증서 검증이 통과하며, 프록시를 통해야 하는 실제 요청이 완료되어야 합니다. 특정 웹사이트만 실패한다면 대상 사이트, DNS, 규칙 라우팅 문제를 구분해 확인하세요. 한 사이트에서 실패했다는 이유만으로 모든 서버 항목을 다시 작성하지 마세요. DNS 및 연결 트리거에 관한 설명은 각각 DNS 설정과 On Demand 설정에서 확인할 수 있습니다.

App Store 정품 확인