이 글 미리 보기

Shadowrocket에서 Trojan을 설정할 때는 먼저 서비스 제공업체가 안내한 Address, Port, Password, SNI를 확인한 뒤 TLS 인증서 검증과 전송 설정을 점검하세요. 서비스 접속 정보가 있고 서버 항목을 직접 추가하거나 수정하려는 사용자에게 적합합니다. 순서대로 확인하면 주소 오류, 인증 실패, 인증서 오류, 규칙 라우팅 문제를 구분할 수 있어 옵션을 무작정 바꾸며 시험할 필요가 없습니다.

Trojan과 TLS: 연결과 인증 구분하기

Trojan은 일반적으로 TLS 연결 안에서 프록시 요청을 전달합니다. 연결할 때 클라이언트는 먼저 서버 주소와 포트에 접속하고 TLS 핸드셰이크와 인증서 검증을 마친 다음 Password로 Trojan 인증을 수행합니다. TLS 인증서 검증과 Password 인증은 별개의 단계입니다. 비밀번호가 맞아도 인증서 이름 불일치를 해결할 수 없으며, 인증서가 유효해도 비밀번호가 맞는다는 뜻은 아닙니다.

수동 설정은 보유한 서버 접속 정보를 기준으로 진행하세요. 구독 링크는 서비스 제공업체에서 받습니다. 이미 구독을 사용 중이라면 노드 이름만 보고 프로토콜을 추측하기보다 구독을 가져온 뒤 등록된 항목을 먼저 확인하세요. 이름에 “TLS”나 “443”이 포함되어 있어도 Type을 Trojan으로 선택해야 한다는 근거가 되지는 않습니다.

443
TLS 서비스에서 흔히 쓰이는 포트일 뿐, Trojan에 반드시 필요한 고정 포트는 아닙니다
1–65535
Port에 입력할 수 있는 포트 범위이며 실제 값은 서버 설정에 따라 달라집니다
4개 항목
Address, Port, Password, SNI를 먼저 확인하세요

Add Server: 순서대로 서버 설정하기

설정 전에 서비스 측에서 요구하는 전송 방식을 포함해 접속 정보를 모두 준비하세요. 아래는 수동으로 추가하는 방법입니다. 화면 언어에 따라 표시 문구가 다를 수 있어 이 글에서는 영어 인터페이스 용어를 그대로 사용합니다. 서비스 제공업체가 구독 링크를 제공했다면 Subscribe 절차로 가져오세요. 링크 전체를 Address에 입력하면 안 됩니다.

  1. 서버 추가 화면 열기

    Home으로 이동한 뒤 오른쪽 위의 “+”를 눌러 Add Server를 열고 Type에서 Trojan을 선택하세요. 먼저 Type을 정한 다음 해당 항목을 입력하면 다른 프로토콜의 인증 정보를 잘못 넣는 일을 방지할 수 있습니다.

  2. 연결 대상 입력하기

    Address에는 서비스 제공업체가 안내한 호스트 이름이나 IP를, Port에는 해당 포트를 입력하세요. 예를 들어 Address는 edge.example.com, Port는 443입니다. 형식을 보여 주기 위한 예시일 뿐, 실제로 연결할 수 있는 서버가 아닙니다.

  3. 인증 정보 입력하기

    Trojan 비밀번호를 Password에 원문 그대로 입력하고 대소문자, 기호, 앞뒤 공백을 확인하세요. 구독 주소의 token, 메모 이름, 웹사이트 로그인 비밀번호를 Trojan 비밀번호로 사용하면 안 됩니다.

  4. TLS 설정 확인하기

    서비스 제공업체가 안내한 값으로 SNI를 설정하고 Allow Insecure는 꺼 두세요. 전송 관련 항목도 함께 안내받았다면 각각 확인해야 합니다. 포트가 443이라는 이유만으로 해당 설정을 생략하지 마세요.

  5. 저장하고 연결 테스트하기

    화면의 저장 기능으로 Home에 돌아간 다음 새 항목을 선택하고 연결을 활성화하세요. 먼저 연결과 접속 가능한 페이지 하나를 테스트한 뒤, 문제가 없으면 평소 사용하는 Config 라우팅을 확인하세요.

Address, Port, Password, SNI 입력 기준

Address는 접속할 대상을 지정하고 SNI는 TLS 핸드셰이크에서 서버 이름을 알리는 데 사용됩니다. 두 값은 같은 경우가 많지만 반드시 같아야 하는 것은 아닙니다. 특히 Address가 IP라고 해서 SNI에도 해당 IP를 입력해야 한다고 단정하지 마세요. 서비스 제공업체가 안내한 인증서 이름과 관련 설정을 사용하세요.

항목 입력할 내용 자주 하는 실수
Address 서버 호스트 이름 또는 IP. 예: edge.example.com https://, 경로, 쿼리 매개변수를 포함하거나 공유 링크 전체를 붙여 넣음
Port 서버가 실제로 수신 대기하는 포트. 예: 443 또는 서비스 제공업체가 지정한 값 TLS를 사용한다는 이유만으로 임의로 443으로 바꾸거나 전각 숫자를 입력함
Password Trojan 인증 비밀번호를 원문 그대로 입력 줄바꿈이 섞이거나 기호를 실수로 삭제하거나 다른 프로토콜의 인증 값을 비밀번호로 사용함
SNI 서비스 제공업체가 안내한 TLS 서버 이름. 예: tls.example.com URL, 포트, 경로를 입력하거나 인증서와 관계없는 도메인으로 바꿈

SNI는 대상 웹사이트 이름을 임의로 바꾸는 항목이 아니며 HTTP Host와도 다릅니다. WebSocket 같은 전송 방식을 사용하는 경우 Host, Path, SNI는 서로 다른 계층에 해당합니다. 모두 도메인이나 경로처럼 보여도 안내된 설정값에 따라 각각 입력해야 합니다. 기본 Trojan 설정에 WebSocket이 반드시 필요한 것은 아니므로 전송 방식을 임의로 추가하지 마세요.

확인 순서: 항목부터 점검한 뒤 연결 방식을 변경하세요

Address에 IP를, SNI에 도메인을 설정하는 것은 정상적인 구성일 수 있습니다. 인증서 오류가 발생하면 Address를 추측한 도메인으로 바꾸기 전에 SNI, 기기 날짜와 시간, 서버 인증서를 먼저 확인하세요.

Allow Insecure: 인증서 검증을 켜 두세요

Allow Insecure는 TLS 인증서 검증에 영향을 주며 비밀번호, 포트, 네트워크 연결 문제를 해결하지 않습니다. 이 옵션을 끄면 클라이언트가 서버 인증서를 검증합니다. 켜면 관련 검증을 건너뛰어 서버 신원을 확인하기 어려워집니다. 속도를 높이는 옵션도 아니며 모든 연결 오류에 두루 적용되는 해결책도 아닙니다.

Allow Insecure 끔

권장

TLS 인증서 검증을 유지합니다. 인증서 오류가 발생하면 인증서 유효 기간, 신뢰 체인, 이름 일치 여부, 기기 시간을 확인하고 서비스 제공업체에 서버 설정을 문의하세요.

권장 상황: 일상적인 사용, 유효한 인증서를 사용하는 Trojan 연결

Allow Insecure 켬

인증서 검증 관련 확인을 건너뛰므로 의도한 서버에 연결되었는지 확인할 수 없습니다. 이후 연결에 성공하더라도 검증 단계에 확인할 문제가 있다는 뜻일 뿐, 문제가 올바르게 해결된 것은 아닙니다.

사용 상황: 위험을 이해한 상태에서 통제된 환경의 인증서 검증 문제를 짧게 진단할 때

켜면 연결되지만 끄면 실패하는 경우에는 다시 끄고 구체적인 인증서 오류를 서비스 제공업체에 전달하세요. 문제를 확인할 때 전체 Password나 구독 링크를 보내지 마세요. 오류 문구, 발생 시각, 민감 정보를 가린 항목만 전달하면 됩니다.

저장했는데 접속되지 않을 때: 단계별 연결 확인

저장이 완료되었다는 것은 양식이 접수되었다는 뜻일 뿐, 원격 서버를 사용할 수 있다는 뜻은 아닙니다. 문제를 확인할 때는 한 번에 하나의 항목만 바꾸고 결과를 기록하세요. Port, Password, SNI, Global Routing을 동시에 바꾸면 연결이 복구되어도 원인을 알 수 없습니다.

Config는 현재 설정과 정책에 따라 트래픽을 처리하므로 규칙이 실제로 어떤 정책을 가리키는지 확인해야 합니다. Home에서 선택한 항목만 확인해서는 충분하지 않습니다. Scene은 선택한 장면 설정과 관련된 기능이며 Proxy의 다른 이름이 아닙니다. 문제를 확인하는 동안 현재 사용 중인 모드를 먼저 파악해 정책 선택 문제를 Trojan 설정 오류로 오해하지 않도록 하세요.

Trojan 수동 설정 관련 자주 묻는 질문

서비스 제공업체가 링크 하나만 줬는데 항목별로 나눠 입력해야 하나요?

먼저 구독 링크와 개별 서버 공유 링크를 구분하세요. 구독 링크는 서비스 제공업체에서 받으며 Home → “+” → Type → Subscribe에서 구독 절차에 따라 추가합니다. 구독 URL을 Trojan의 Address에 입력하거나 링크의 token을 Password로 사용하지 마세요.

SNI를 안내받지 못했는데 도메인을 아무거나 입력해도 되나요?

안 됩니다. 먼저 원래 받은 접속 정보에 서버 이름 안내가 있는지 확인하세요. 명시된 값이 없다면 Address에 해당하는 이름을 사용하는지, 인증서 검증에 필요한 이름은 무엇인지 서비스 제공업체에 문의하세요. 흔히 쓰이는 웹사이트 도메인을 임의로 입력하거나 Allow Insecure를 켜서 확인을 대신하지 마세요.

구독 항목을 수정했는데 업데이트 후 원래대로 돌아갔어요.

구독을 업데이트하면 서비스 제공업체가 전달한 설정값이 다시 적용될 수 있습니다. 먼저 구독 원본의 값이 올바른지 확인하세요. 비교가 필요하다면 기존 구독 항목은 그대로 두고 별도의 항목을 수동으로 만들어 테스트하세요. 로컬에서 임시로 변경한 설정을 서버에서 해결된 것으로 오해하지 않도록 주의하세요.

Shadowrocket을 구매했는데 왜 비밀번호를 입력해야 하나요?

앱 구매와 서버 이용 요금제는 별개입니다. Password는 기존에 이용 중인 서비스 제공업체의 Trojan 인증 정보이며 App Store 구매 정보가 아닙니다. Shadowrocket은 App Store에서 한 번 구매하는 상용 비공개 소스 앱입니다. 서버 이용 권한과 앱 구매는 각각 별도로 관리됩니다.

마지막으로 확인하세요. Type은 Trojan, Address에는 프로토콜 접두사와 경로가 없어야 하며, Port는 서버 설정과 일치해야 합니다. Password는 원문 그대로 입력하고 SNI는 서비스 제공업체의 안내에 맞추며 Allow Insecure는 꺼 두세요. 확인을 마친 뒤 Config에서 규칙과 정책을 점검하면 관계없는 설정을 반복해서 바꾸는 일을 줄일 수 있습니다.