Shadowrocket에서 공유 링크는 보통 하나의 연결 설정을 담고, 구독 링크는 다시 가져올 수 있는 설정 목록을 가리킵니다. 이미 본인의 서비스 설정과 구독을 보유한 사용자를 대상으로 링크 유형을 구별하고 프로토콜 항목을 확인한 뒤 가져오기, 업데이트, 연결 확인 방법을 안내합니다. 글에 나오는 도메인, 비밀번호, UUID는 형식 예시이며 연결에 사용할 수 없습니다.
먼저 구분하기: 연결 매개변수와 원격 목록 주소
ss://, vmess://, vless://, trojan://은 흔히 사용하는 단일 공유 링크의 접두사입니다. 주로 “어떤 주소에 연결할지, 어떤 프로토콜을 사용할지, 어떻게 인증할지”를 나타냅니다. 링크를 가져오면 Shadowrocket이 서버, 포트, 인증 항목을 해석할 수 있습니다. 가져오기에 성공했다는 것은 형식을 인식했다는 뜻일 뿐, 서버에 연결할 수 있거나 계정이 유효하다는 뜻은 아닙니다.
구독 URL은 보통 https://로 시작하며, 요청이 필요한 원격 주소를 가리킵니다. 해당 주소는 여러 공유 링크를 반환하거나, 링크를 Base64로 인코딩한 텍스트를 반환할 수 있습니다. 일반 웹페이지 주소도 https://로 시작할 수 있으므로 접두사만 보고 구독 링크라고 단정할 수 없습니다.
- 단일 공유 링크: 링크를 가져오는 시점의 매개변수 스냅샷을 저장합니다. 원래 설정이 바뀌면 다시 가져오거나 직접 수정해야 합니다.
- 구독 URL: 목록의 출처를 저장합니다. 업데이트하면 내용을 다시 가져오며, 출처에 있는 항목이 추가·삭제되거나 변경될 수 있습니다.
- Config 파일: 규칙과 정책 등의 설정을 관리합니다. 임의의 Config 파일 주소를 노드 구독 주소처럼 사용할 수는 없습니다.
ss://: 암호화 방식, 비밀번호, 주소 확인
흔히 쓰이는 Shadowsocks 공유 링크의 SIP002 형식은 인증 정보를 @ 앞에 두고, 뒤에 서버 주소와 포트를 이어 붙입니다. 인증 부분은 보통 method:password를 URL-safe Base64로 인코딩한 값이며, 쿼리 매개변수와 # 뒤의 메모가 추가될 수도 있습니다. 더 긴 문자열 전체를 인코딩하는 구형 형식도 있으므로, 직접 나눠 볼 때 모든 링크의 구조가 같다고 가정해서는 안 됩니다.
ss://
디코딩한 인증 정보: aes-128-gcm:example-password
서버: example.com
포트: 8388
메모: Example
| 항목 | 의미 및 확인 방법 |
|---|---|
| method | 예: aes-128-gcm. 서버 설정과 일치해야 하며, 이름이 비슷하다는 이유만으로 바꿀 수 없습니다. |
| password | 인증에 사용되며 대소문자를 구분합니다. 복사할 때 원래 값을 유지하고 공백이나 줄바꿈을 추가하지 마세요. |
| host:port | 서버 주소와 수신 포트입니다. 8388은 예시일 뿐이므로 실제 포트를 사용해야 합니다. |
| plugin 등의 쿼리 매개변수 | 전송 방식에 영향을 줄 수 있습니다. 가져온 결과와 현재 지원 여부를 확인하고 임의로 삭제하지 마세요. |
| # 뒤의 메모 | 주로 목록에서 항목을 구별하는 데 사용합니다. 메모를 바꿔도 서버 주소는 바뀌지 않습니다. |
Base64는 인코딩 방식이지 보안 수단이 아닙니다. 디코딩할 수 있는 사람은 비밀번호를 확인할 수 있습니다. 가져오기에 실패하면 먼저 전체 링크에 줄바꿈이나 잘림이 있는지, 채팅 앱이 문장부호를 덧붙이지 않았는지 확인한 다음 인코딩과 형식을 점검하세요. 암호화 방식을 먼저 바꾸지는 마세요.
vmess://: JSON을 복원한 뒤 전송 항목 확인
흔히 쓰이는 VMess 공유 형식은 vmess:// 뒤에 Base64로 인코딩한 JSON을 둡니다. 아래는 인코딩 전 구조이며, 그대로 붙여 넣어 가져올 수 있는 완전한 공유 링크가 아닙니다. 출처에 따라 항목이 다를 수 있으므로 이 예시를 본인 설정에 덮어쓰지 마세요.
{
"v": "2",
"ps": "Example",
"add": "example.com",
"port": "443",
"id": "00000000-0000-0000-0000-000000000000",
"aid": "0",
"net": "ws",
"type": "none",
"host": "example.com",
"path": "/example",
"tls": "tls"
}
add와port: 실제 연결 주소와 포트입니다.ps는 메모이므로 주소를 대신할 수 없습니다.id: UUID 인증 항목입니다. 예시의 모두 0인 값은 형식만 보여 주며, 실제로는 본인이 보유한 값을 사용해야 합니다.aid: 구형 형식의 alterId 항목입니다. 연결을 시도하려고 임의로 값을 높이지 마세요.net,host,path: 이 예시는 WebSocket과 Host, 경로를 나타냅니다. 경로의 대소문자, 슬래시, 쿼리 부분이 연결에 영향을 줄 수 있습니다.tls: 이 예시에서는 TLS를 사용합니다. 서버 주소, HTTP Host, TLS의 SNI는 각각 용도가 다르므로 항상 같다고 볼 수 없습니다.
가져온 뒤 해당 항목의 편집 화면을 열어 서버, 포트, UUID, 전송 방식, TLS 옵션을 원본 설정과 하나씩 대조하세요. 텍스트를 디코딩할 수 있지만 앱에서 인식하지 못한다면 공유 형식의 변형이거나 항목이 호환되지 않을 수 있습니다. 링크 접두사만 바꾸지 말고 본인의 원본 설정에서 호환되는 형식으로 다시 내보내세요.
vless://와 trojan://: 비슷한 구조, 다른 인증 방식
두 형식 모두 보통 “인증 정보, 서버, 포트, 쿼리 매개변수, 메모”로 구성되지만 인증 항목의 의미는 다릅니다. VLESS는 보통 UUID를 사용하고, Trojan은 보통 비밀번호를 사용합니다. 아래 두 링크는 항목의 위치만 보여 주며 도메인과 인증 값은 모두 예시입니다.
vless://[email protected]:443?encryption=none&security=tls&type=ws&host=example.com&path=%2Fexample&sni=example.com#Example
trojan://[email protected]:443?security=tls&type=tcp&sni=example.com#Example
| 항목 위치 | VLESS | Trojan |
|---|---|---|
| @ 앞 | 보통 UUID | 보통 필요한 URL 인코딩을 적용한 비밀번호 |
| security=tls | 이 예시에서는 TLS를 사용합니다. 모든 설정이 같은 보안 옵션을 사용하는 것은 아닙니다. | 이 예시에서는 TLS를 사용합니다. 서버 측 설정과 일치해야 합니다. |
| type | 이 예시의 전송 방식은 ws입니다. Host와 path도 함께 확인하세요. | 이 예시의 전송 방식은 tcp입니다. ws 매개변수를 그대로 사용하지 마세요. |
| sni | TLS 핸드셰이크에 사용하는 서버 이름 | TLS 핸드셰이크에 사용하는 서버 이름 |
encryption=none은 이 VLESS 예시의 프로토콜 매개변수이며, 전체 전송에 TLS가 없다는 뜻은 아닙니다. path=%2Fexample을 디코딩하면 /example입니다. 비밀번호, 경로, 메모에 @, #, & 등의 문자가 포함되면 위치에 맞게 인코딩해야 합니다. 그렇지 않으면 구분자로 처리될 수 있습니다.
가져오기와 업데이트: 링크 유형에 맞는 방법 사용
클립보드에 설명 문구가 섞이지 않고 전체 링크만 있는지 먼저 확인하세요. Shadowrocket에서 Home은 연결 항목을 확인하는 화면이고, Config는 구성 파일을 관리하며, Settings는 앱 설정을 관리합니다. 단일 공유 링크와 Subscribe는 모두 최종적으로 Home에 선택 가능한 항목을 만들 수 있지만, 이후 관리 방법은 서로 다릅니다.
두 가지 가져오기 방법: 단일 설정과 Subscribe
단일 공유 링크가 있는 경우
- ss://, vmess://, vless:// 또는 trojan://로 시작하는 전체 텍스트를 복사합니다.
- Home으로 돌아갑니다. 클립보드 가져오기 안내가 표시되면 내용을 확인하고 가져온 다음, 시스템 안내에 따라 읽기를 허용합니다.
- 안내가 표시되지 않으면 해당 가져오기 메뉴를 사용하거나 Home → +에서 프로토콜을 선택해 원본 설정에 맞게 항목을 입력할 수 있습니다.
- 저장한 뒤 편집 화면에서 주소, 포트, 인증 정보, 전송 매개변수를 다시 확인합니다.
구독 URL이 있는 경우
- Home → + → Type으로 이동해 Subscribe를 선택합니다.
- URL에 본인의 전체 구독 주소를 붙여 넣고, 알아보기 쉬운 메모를 입력한 뒤 저장합니다.
- 처음으로 내용을 가져온 다음 해당 그룹을 펼쳐 항목을 확인합니다. 동기화가 필요하면 해당 구독을 업데이트하세요.
- 업데이트한 뒤 선택한 항목을 다시 확인하고, 특히 출처에서 삭제되거나 대체된 항목을 살펴보세요.
단일 링크는 설정을 저장하고 Subscribe는 원격 목록의 출처를 보존합니다. 구독 항목을 수정하기 전에 원래 값을 기록해 두세요. 다음 업데이트에서 로컬 수정 사항이 덮어써질 수 있습니다.
구독 주소는 아래와 같은 형태일 수 있습니다. 형식을 보여 주기 위한 예시이며 설정을 가져오는 데 사용할 수 없습니다. 실제 주소에는 쿼리 매개변수나 경로에 접근 자격 정보가 포함되는 경우가 많으므로 전체 주소를 그대로 유지하세요. 공개 페이지에 게시하거나 알 수 없는 변환 사이트에 입력하지 마세요.
https://example.com/sub?token=xxxx
- 요청 시간 초과: 현재 네트워크에서 구독 주소에 연결할 수 있는지 확인하고, 도메인 확인 실패, 연결 실패, HTTP 응답 오류를 구분하세요.
- 401 또는 403 응답: URL의 인증 정보가 온전히 들어 있는지 확인하고 원본 설정 출처에 접근 권한을 문의하세요. 같은 주소를 반복해서 가져와도 보통 권한 문제는 해결되지 않습니다.
- 요청은 성공했지만 항목이 없음: 반환된 내용이 로그인 페이지나 오류 페이지, 일반 웹페이지가 아니라 구독 콘텐츠인지 확인하세요. 상태 코드가 성공이어도 콘텐츠 형식이 올바르다는 뜻은 아닙니다.
가져온 뒤 확인하기: 매개변수 문제와 라우팅 문제를 구분
Home에 항목이 표시된 뒤에도 연결을 확인해야 합니다. 먼저 매개변수를 점검하고, 다음으로 Global Routing 상태를 확인한 뒤 대상 요청의 연결 결과를 살펴보세요. 구독은 연결 항목을 업데이트하지만, 완전한 트래픽 분할 규칙까지 반드시 제공하는 것은 아닙니다. 규칙 적용 여부는 현재 Config와 라우팅 선택에도 달려 있습니다.
Global Routing → Config
권장규칙을 준비한 상태에서 현재 Config에 따라 정책을 결정합니다. DOMAIN-SUFFIX, GEOIP, IP-CIDR 등의 규칙과 FINAL 대체 규칙이 함께 결과에 영향을 줍니다. 일치하는 규칙이 없는 요청이 반드시 직접 연결되는 것은 아닙니다.
적합한 경우: 가져온 뒤 평소 사용하는 규칙과 연결 항목이 함께 작동하는지 확인할 때
Global Routing → Proxy
앱에서 처리하는 연결에 프록시를 적용해 규칙 분할이 문제 해결에 미치는 영향을 일시적으로 줄입니다. 올바르고 사용 가능한 연결 항목을 실제로 선택했는지도 확인해야 합니다.
적합한 경우: 프록시 연결 문제와 Config 규칙 매칭 문제를 잠시 구분할 때
Global Routing → Direct
직접 연결 상태를 비교하는 데 사용합니다. 이 상태에서 웹페이지가 열린다고 해서 방금 가져온 프록시 설정이 유효하다는 뜻은 아니며, 구독 항목의 사용 가능 여부를 판단할 수도 없습니다.
적합한 경우: 현재 네트워크의 직접 연결 상태를 확인해 문제 비교 기준을 세울 때
정리: 같은 항목으로 라우팅 상태를 비교하세요
네트워크와 선택한 항목을 그대로 둔 채 Config에서 Proxy로 잠시 전환해 같은 대상을 테스트하세요. Config에서만 실패한다면 일치하는 규칙과 대상 정책을 먼저 확인하세요. 두 상태 모두 실패한다면 인증, 전송 매개변수, 서버 연결 가능 여부를 다시 확인하고, 테스트가 끝나면 원래 라우팅 상태로 되돌리세요.
Global Routing에는 Scene도 포함되므로 이를 네 번째 공유 링크나 프로토콜로 오해하지 마세요. Settings → On Demand는 조건에 따라 연결을 시작하도록 관리하며, 공유 링크를 구독으로 변환하는 기능은 아닙니다. 문제를 확인하는 동안 이 설정의 원래 상태를 기록해 두세요. 여러 변수를 동시에 바꾸면 원인을 판단하기 어렵습니다.
자주 묻는 질문: 링크를 인식한 뒤 확인할 항목
vmess://를 vless://로 바꾸면 바로 사용할 수 있나요?
아니요. 두 형식은 공유 구조와 인증 및 전송 요구사항이 다릅니다. 본인의 원본 설정 출처에서 해당 프로토콜에 맞는 전체 설정을 받아 가져온 다음 각 항목을 확인하세요. 접두사만 바꾸면 해석에 실패하거나 서버 요구사항에 맞지 않는 항목이 만들어질 수 있습니다.
구독을 새로 고친 뒤 직접 바꾼 포트가 다시 원래대로 돌아왔어요.
구독을 업데이트하면 원격 데이터로 항목이 다시 만들어지거나 덮어써질 수 있습니다. 먼저 구독에서 반환된 원래 포트를 확인하세요. 로컬 변경 사항을 유지해야 한다면 별도의 항목을 만들고 구분하기 쉬운 메모를 지정하세요. 이 항목은 원래 구독과 자동으로 동기화되지 않는다는 점도 고려해야 합니다.
가져오기는 성공했는데 왜 연결되지 않나요?
Home에서 해당 항목의 편집 화면을 열고 서버, 포트, 비밀번호 또는 UUID, TLS, SNI, 전송 매개변수를 차례로 확인한 뒤 앞 절의 Global Routing 비교를 진행하세요. 링크를 해석할 수 있다는 것은 항목 형식을 읽을 수 있다는 뜻일 뿐, 원격 서비스의 상태를 확인했다는 뜻은 아닙니다.
QR 코드로 가져오기와 링크 복사는 결과가 다른가요?
QR 코드는 텍스트를 전달하는 수단일 뿐입니다. 스캔한 결과가 단일 프로토콜 링크라면 단일 설정으로 처리하고, 구독 URL이라면 Subscribe로 처리하세요. 저장하기 전에 콘텐츠 유형을 확인해야 합니다. QR 코드로 가져왔다고 자동 업데이트되는 것은 아닙니다.
문제를 확인받으려고 전체 링크를 캡처해 다른 사람에게 보내도 되나요?
먼저 비밀번호, UUID, 구독 token, 계정을 식별할 수 있는 정보를 가리고 프로토콜, 오류 안내, 필요한 전송 항목만 남기세요. Base64 텍스트에도 인증 정보가 포함될 수 있습니다. 이미 공개된 경우에는 본인의 원본 설정 출처에서 해당 자격 정보를 취소하거나 변경해야 합니다.
항목을 더 정리하려면 구독 및 노드 관리 안내를 참고하세요. 처음 설정하는 방법과 시스템 권한 안내는 사용 가이드에서 확인할 수 있습니다. 이 글은 사용자가 이미 보유한 설정의 사용법만 다루며 연결 서비스의 제공이나 선택은 다루지 않습니다.