이미 보유한 서비스 제공업체의 연결 정보나 구독을 Shadowrocket에서 올바르게 가져오려는 사용자를 위한 안내입니다. 먼저 링크의 접두 부분으로 단일 연결인지 원격 목록인지 구분한 다음 주소, 포트, 인증 정보와 전송 옵션을 확인하세요. 마지막으로 ‘다시 가져오기’와 ‘구독 업데이트’의 차이를 알아봅니다. 글에 나오는 도메인, 비밀번호, UUID는 설명용 예시이며 실제 연결 정보가 아닙니다.
1. 공유 링크와 구독 링크: 단일 연결과 원격 목록
ss://, vmess://, vless://, trojan://은 공유 링크의 scheme으로, 뒤따르는 문자열을 어떤 형식으로 해석할지 클라이언트에 알려줍니다. 이런 링크 하나에는 보통 서버 주소, 포트, 인증 정보와 필요한 전송 옵션 등 단일 연결 정보가 담깁니다. 가져오면 Shadowrocket은 각 항목을 로컬에 저장합니다. 링크 자체가 원격 변경 사항을 계속 가져오는 기능을 하지는 않습니다.
구독 링크는 일반적으로 https:// 주소입니다. 클라이언트가 해당 주소에 접속해 서버가 반환하는 연결 목록을 읽고, 지원되는 형식에 따라 항목을 해석합니다. 구독 주소의 경로 이름에는 통일된 규칙이 없으므로 /sub가 포함됐는지만으로 용도를 판단할 수 없습니다. 일반 웹페이지, 로그인 페이지, 구독 응답 모두 HTTPS를 사용할 수 있습니다. 기존에 보유한 서비스 제공업체의 안내와 실제 응답 내용을 기준으로 확인하세요.
| 확인 항목 | 단일 공유 링크 | 구독 링크 |
|---|---|---|
| 일반적인 시작 문자열 | ss://、vmess://、vless://、trojan:// | 일반적으로 https:// |
| 주요 내용 | 단일 연결의 주소, 포트, 인증 매개변수 | 원격 목록에 접속하는 주소. token이 포함될 수 있음 |
| 가져오기 방식 | 링크를 해석해 로컬 항목 생성 | 원격 콘텐츠를 요청해 구독 항목 생성 |
| 이후 변경 사항 반영 | 로컬 항목을 수정하거나 새 링크를 받은 뒤 다시 가져오기 | 구독을 업데이트해 원격 목록 다시 가져오기 |
| 민감 정보 | 비밀번호, UUID, 서버 정보 | 전체 구독 URL. 특히 경로나 쿼리 매개변수에 포함된 접근 자격 정보 |
예를 들어 https://example.com/sub?token=xxxx는 구독 주소의 형식을 보여주는 예시일 뿐입니다. 서비스 접속 주소가 아니며 실제 구독으로 사용할 수 없습니다. 구독에는 같은 프로토콜의 여러 주소뿐 아니라 다양한 프로토콜의 연결이 포함될 수 있습니다. ‘구독’은 정보를 가져오고 업데이트하는 방식을 뜻하며 네트워크 전송 프로토콜의 한 종류가 아닙니다.
2. ss://: Shadowsocks 암호화 방식과 비밀번호 확인
일반적인 Shadowsocks 공유 링크는 사용자 정보 부분에 암호화 방식과 비밀번호를 담고, @ 뒤에 서버 주소와 포트를 표시합니다. SIP002 형식에 맞는 링크는 사용자 정보를 Base64URL로 인코딩할 수 있습니다. 여러 필드를 더 많이 인코딩하는 이전 형식도 볼 수 있으므로, 모든 ss:// 링크를 @ 하나로 나눌 수 있다고 가정해서는 안 됩니다.
ss://[email protected]:8388#SS%20Demo
사용자 정보를 디코딩한 예시:
aes-128-gcm:password
aes-128-gcm은 예시 암호화 방식이며 서버 설정과 일치해야 합니다. 이름이 비슷하다는 이유로 다른 방식으로 바꾸면 안 됩니다.password는 설명용 비밀번호입니다. 실제 비밀번호는 대소문자와 특수 문자를 포함해 원문 그대로 사용해야 합니다.server.example.com은 설명용 도메인이고8388은 예시 포트입니다. Shadowsocks의 모든 연결이 이 포트를 사용하는 것은 아닙니다.#SS%20Demo는 보통 메모에 사용하는 링크 프래그먼트입니다.%20은 공백을 나타냅니다. 메모를 바꿔도 일반적으로 인증 정보는 달라지지 않습니다.- 원본 링크에
plugin매개변수가 있다면 해당 플러그인과 옵션도 지원되는지 확인하세요. 이를 무시하면 ‘가져오기는 되지만 연결되지 않는’ 문제가 생길 수 있습니다.
가져온 뒤 Home에서 해당 항목의 편집 화면을 열고 프로토콜 유형, 주소, 포트, 암호화 방식과 비밀번호를 확인하세요. 클라이언트에 항목이 생성됐다는 것은 링크 해석에 성공했다는 뜻일 뿐입니다. 서버가 해당 비밀번호를 받아들이는지, 포트에 접속할 수 있는지는 별도로 테스트해야 합니다.
3. vmess://: 인코딩된 JSON 필드 이해하기
일반적인 vmess:// 공유 링크에는 scheme 뒤에 Base64로 인코딩된 JSON이 들어갑니다. 인코딩된 내용에는 보통 주소, 포트, 사용자 ID, 전송 방식, TLS 등의 필드가 포함됩니다. 아래는 디코딩한 설명용 객체이며, 그대로 붙여 넣어 가져올 수 있는 완전한 공유 링크가 아닙니다.
{
"v": "2",
"ps": "VMess Demo",
"add": "server.example.com",
"port": "443",
"id": "123e4567-e89b-42d3-a456-426614174000",
"aid": "0",
"scy": "auto",
"net": "ws",
"type": "none",
"host": "edge.example.com",
"path": "/demo",
"tls": "tls",
"sni": "edge.example.com"
}
| 필드 | 용도 및 확인 방법 |
|---|---|
add / port | 연결 주소와 포트입니다. 예시에는 443을 사용했지만 모든 VMess 서비스가 443을 사용하는 것은 아닙니다. |
id / aid | 사용자 UUID와 alterId입니다. 예시의 alterId는 0입니다. 실제 정보를 따라야 하며 임의로 다른 값으로 바꾸면 안 됩니다. |
scy | VMess의 암호화 옵션입니다. TLS 설정과는 다르며 Shadowsocks의 method 필드도 아닙니다. |
net / host / path | 예시에서는 WebSocket을 사용합니다. Host와 경로는 서버 요구 사항에 맞아야 하며 대소문자와 앞쪽 슬래시를 임의로 바꾸면 안 됩니다. |
tls / sni | TLS 활성화 여부와 TLS 핸드셰이크에 사용하는 서버 이름입니다. SNI는 연결 주소와 다를 수 있습니다. |
v / ps | 공유 형식의 버전 표시와 메모입니다. 여기서 v는 Shadowrocket 앱 버전을 뜻하지 않습니다. |
위 필드는 일반적인 공유 형식의 한 예이며, 모든 생성 도구가 완전히 동일한 JSON을 제공하는 것은 아닙니다. 가져온 뒤에는 메모가 표시되는지만 보지 말고 해석된 결과를 확인하세요. 실제 정보에 WebSocket과 TLS가 필요한데 가져온 항목에 path가 없거나 TLS 상태가 맞지 않는다면, 먼저 원본 링크가 잘렸는지 확인한 다음 기존 서비스 제공업체에 형식과 매개변수를 문의하세요.
4. vless://와 trojan://: 쿼리 매개변수도 연결 조건
VLESS와 Trojan의 일반적인 공유 형식은 내용을 바로 읽을 수 있는 URI에 가깝습니다. 인증 정보는 @ 앞에, 주소와 포트는 뒤에 있으며 물음표 뒤에는 보안 계층과 전송 옵션이 포함됩니다. 두 프로토콜의 인증 정보는 서로 다릅니다. VLESS는 UUID를, Trojan은 비밀번호를 사용하는 경우가 많으므로 접두 부분만 바꿔 한 프로토콜을 다른 프로토콜로 변환할 수 없습니다.
vless://[email protected]:443?encryption=none&security=tls&type=ws&host=edge.example.com&path=%2Fdemo&sni=edge.example.com#VLESS%20Demo
trojan://[email protected]:443?security=tls&type=tcp&sni=edge.example.com#Trojan%20Demo
- 먼저 인증 정보를 확인하세요. VLESS 예시의 UUID와 Trojan 예시의
demo-password는 모두 가짜 값입니다. 실제로 가져올 때는 원본 정보를 사용해야 합니다. - 그다음
server.example.com:443을 확인하세요. 여기서 포트 443은 구체적인 예시일 뿐입니다. ‘보통 TLS를 사용한다’는 이유로 서비스 제공업체가 지정한 다른 포트를 바꾸면 안 됩니다. security=tls와sni를 확인하세요. 이 값은 TLS 핸드셰이크와 인증서 확인에 영향을 주며 표시 이름만 바꾸는 것이 아닙니다.type=ws또는type=tcp를 확인하세요. VLESS 예시의host와path는 WebSocket 조건입니다.%2Fdemo를 디코딩하면/demo가 됩니다.- 원본 링크에 포함된 다른 필수 매개변수도 그대로 유지하세요. 원본 정보에 flow나 보안 계층 관련 필드가 있다면 클라이언트가 올바르게 인식하는지 확인하세요. 간단한 예시를 보고 해당 필드를 삭제하지 마세요.
VLESS 예시의 encryption=none은 VLESS 자체의 암호화 옵션을 뜻하며, 예시에 TLS 보호가 없다는 의미가 아닙니다. 프로토콜 인증, 전송 방식, TLS는 서로 다른 계층입니다. Trojan은 일반적으로 TLS를 사용하므로 인증서 이름과 신뢰 상태도 중요합니다. 인증서 오류가 발생하면 인증서 검증을 끄기보다 주소, SNI, 서버 인증서를 확인하세요.
정리: 가져온 뒤 인증, 전송 방식, TLS를 모두 확인하세요
항목은 표시되지만 연결에 실패한다면 UUID 또는 비밀번호, 포트, type, path, SNI를 차례로 비교하세요. 메모가 같아도 연결 매개변수가 동일하다는 뜻은 아닙니다. 차이가 확인된 필드만 수정하고, 변경할 때마다 테스트해 여러 조건을 한꺼번에 바꾸지 않도록 하세요.
5. Home에서 가져오기: 단일 링크와 구독 중 선택
시작하기 전에 보유한 정보가 어떤 유형인지 확인하세요. Home에서는 연결 항목을 관리하고 선택하며, Config에서는 구성 파일과 규칙을 관리하고, Settings에서는 앱 설정을 관리합니다. 연결 목록 구독은 규칙 구성 파일이 아닙니다. 구독 주소를 Config의 구성 파일 입력란에 넣어도 연결 구독을 가져오는 작업을 대신할 수 없습니다.
구독을 이미 보유한 경우: Subscribe로 가져오기
권장Home → +에서 Type을 Subscribe로 선택하고, 이미 보유한 구독 URL을 입력해 저장한 다음 원격 목록을 정상적으로 가져왔는지 확인하세요. 이 방법은 구독을 보유한 사용자가 이후 업데이트 연결을 유지할 수 있도록 안내하는 것입니다.
적합한 경우: 원격 연결 목록을 보유하고 있으며 주소, 포트 또는 인증 정보 변경 사항을 반영해야 할 때
단일 연결 정보: 공유 링크 가져오기
전체 단일 공유 링크를 복사한 뒤 Shadowrocket으로 돌아가 클립보드 인식 안내에 따라 가져오기를 확인하세요. 이미 보유한 정보에 포함된 QR 코드를 스캔할 수도 있습니다. 완료 후 항목을 열어 이름만 확인하지 말고 각 필드를 점검하세요.
적합한 경우: 명확한 연결 하나만 저장하거나 특정 연결의 매개변수를 확인할 때
구조화된 정보: 직접 입력
Home → +에서 해당 Type을 선택하고 기존 정보를 바탕으로 주소, 포트, 인증 정보를 입력한 뒤 전송 및 TLS 옵션을 확인하세요. 로컬 항목을 직접 만들어도 구독 업데이트 연결이 자동으로 설정되지는 않습니다.
적합한 경우: 필드 목록만 보유했거나 공유 링크 해석 차이를 항목별로 확인해야 할 때
- 원본 정보에서 전체 링크를 복사하세요. 한글 따옴표, 문장 끝 문장 부호, 채팅 앱의 설명 문구, 코드 펜스는 포함하지 마세요.
- 저장한 뒤 Home으로 돌아가 독립 항목이 표시되는지, 구독과 그 아래 항목이 표시되는지 확인하세요. 구독 이름만 보인다고 해서 목록을 정상적으로 가져왔다는 뜻은 아닙니다.
- 연결 항목 하나의 편집 화면을 열어 유형, 주소, 포트, 인증 필드를 확인하세요. WebSocket이나 TLS를 사용하는 경우 관련 옵션도 점검하세요.
- 테스트할 연결을 선택하세요. 연결 스위치를 처음 켤 때는 시스템 안내에 따라 VPN 구성 추가를 승인한 다음 원하는 대상에 접속되는지 테스트하세요.
QR 코드는 링크를 전달하는 또 다른 방식일 뿐 별도의 프로토콜이 아닙니다. QR 코드에 구독 URL이 들어 있다면 가져온 뒤에도 구독으로 처리해야 합니다. 단일 ss:// 링크가 들어 있다면 QR 코드로 가져왔다고 해서 원격 업데이트 기능이 생기지는 않습니다. iPhone과 iPad에서는 실제 화면을 기준으로 확인하고, 시스템 요구 사항은 App Store 페이지의 안내를 따르세요.
6. 업데이트 및 문제 해결: 가져오기 실패와 연결 실패 구분하기
구독 업데이트는 원격 목록을 다시 요청하는 작업입니다. Shadowrocket 앱을 업데이트하거나 Config의 규칙을 새로고침하는 것과는 다릅니다. 원격 항목이 추가, 삭제 또는 교체될 수 있으므로 구독 항목에서 변경한 모든 로컬 수정 사항이 다음 업데이트 후에도 유지된다고 가정하지 마세요. 비교 테스트가 필요하다면 수정 전 필드와 결과를 먼저 기록하세요.
두 가지 관리 방식: 로컬 항목과 원격 구독
로컬 단일 연결
- 주소나 비밀번호가 변경되면 새 공유 링크를 받아 다시 가져오거나 기존 필드를 수정하세요.
- 다시 가져온 뒤 같은 이름의 항목이 중복 생성됐는지 확인하고 주소와 포트로 구분하세요.
- 테스트에 성공한 뒤 더 이상 사용하지 않는 이전 항목을 삭제해 현재 연결을 실수로 지우지 않도록 하세요.
기존 원격 구독
- Home에서 해당 구독을 업데이트하고 하위 항목을 정상적으로 가져왔는지 확인하세요.
- 업데이트 후 현재 선택된 연결이 남아 있는지, 매개변수가 변경됐는지 확인하세요.
- 접근 자격 정보가 변경됐다면 먼저 구독 URL을 새 값으로 바꾼 뒤 목록을 다시 가져오세요.
로컬 편집은 현재 저장된 필드를 바꾸고 구독 업데이트는 원격 정보를 다시 가져옵니다. 서로 대체할 수 없습니다.
문제를 확인할 때는 URL 요청 성공 여부, 응답 해석 가능 여부, 해석한 연결의 사용 가능 여부를 구분하세요. 예를 들어 HTTP 401 또는 403은 접근 권한 문제일 수 있지만, 서비스 제공업체의 응답 안내도 함께 확인해야 합니다. HTTP 200 응답이 로그인 HTML 페이지일 수도 있습니다. 목록은 표시되는데 웹페이지가 열리지 않는다면 같은 링크를 반복해서 가져오기보다 연결, Global Routing, Config의 규칙을 계속 확인하세요.
링크를 복사했는데 Home에 새 항목이 추가되지 않는 이유는 무엇인가요?
링크가 올바른 scheme으로 시작하는지 확인하고 줄바꿈, 전각 콜론, 채팅 설명 문구가 끼어들지 않았는지 살펴보세요. 다른 앱에서 붙여넣을지 시스템이 묻는다면 필요한 경우 허용하세요. 원본 링크를 다시 복사해 가져오고, Base64 내용을 직접 바꿔가며 시도하지 마세요.
구독 업데이트 시간이 초과됐습니다. 구독에 포함된 연결이 모두 사용할 수 없게 된 건가요?
업데이트 시간 초과만으로 그렇게 판단할 수는 없습니다. 먼저 현재 네트워크에서 구독 주소에 접속할 수 있는지 확인하세요. 이미 사용 가능한 연결을 통해 가져와야 한다면 Settings → Subscribe에서 Update via Proxy를 확인한 뒤 Home에서 사용할 연결을 선택하고 연결 스위치를 켠 상태로 업데이트하세요. 이 옵션은 업데이트 요청의 접속 방식만 바꾸며 만료된 token이나 잘못된 응답 형식을 해결하지는 않습니다.
가져오기는 성공했는데 웹페이지가 열리지 않는 이유는 무엇인가요?
먼저 선택한 항목의 주소, 포트, 비밀번호 또는 UUID를 확인한 다음 TLS와 전송 옵션을 점검하세요. 이어서 Home → Global Routing을 확인하세요. Direct는 직접 연결하고, Proxy는 프록시 가능한 트래픽을 선택한 프록시 정책으로 전달하며, Config는 현재 구성 규칙에 따라 처리하고, Scene은 설정된 장면에 따라 처리합니다. 필요한 경우 비교를 위해 잠시 Proxy를 사용하고 테스트가 끝나면 원래 설정으로 되돌리세요.
메모를 바꾼 뒤 구독을 업데이트했더니 이름이 다시 바뀌었습니다. 어떻게 해야 하나요?
원격 목록에서 이전 메모가 계속 내려오는지 먼저 확인하세요. 구독 업데이트 과정에서 항목이 다시 만들어지거나 덮어써질 수 있으므로 로컬 메모는 원격 정보에 반영되지 않습니다. 비교 기록을 보존하려면 테스트 대상을 따로 기록하거나 독립 항목으로 저장하고, 해당 항목은 더 이상 구독을 통해 자동 업데이트되지 않는다는 점을 명확히 하세요.
다른 사람이 확인할 수 있도록 실제 링크나 QR 코드를 공유해도 되나요?
전체 정보를 공개하지 마세요. 문의할 때는 프로토콜 유형, 포트, 전송 방식, 민감 정보를 가린 오류 내용만 제공하고 비밀번호, UUID, token, 전체 URL, QR 코드는 가리세요. 정보가 이미 노출됐다면 기존 서비스 제공업체의 관리 화면에서 관련 자격 정보를 변경한 뒤 로컬 연결이나 구독을 업데이트하세요.