서비스 제공업체에서 연결 정보를 받은 뒤 가져오는 방법을 확인하려는 사용자를 위한 안내입니다. 링크 접두사와 내용을 먼저 확인하고, 단일 서버 항목과 업데이트 가능한 Subscribe를 구분한 다음 Home에서 가져온 결과를 확인하세요. 글에 나오는 도메인, 인증 정보, 포트는 형식 설명을 위한 예시이며 연결에 사용할 수 없습니다. 실제 구독 정보와 서버는 서비스 제공업체에서 받아야 합니다.
공유 링크, 구독 URL, Config 구분하기
ss://, vmess://, vless://, trojan://은 연결 정보 형식을 식별하는 scheme입니다. 일반적인 단일 공유 링크에는 서버 주소, 인증 정보, 전송 매개변수가 직접 포함되어 있으며, 가져오면 서버 항목 하나가 생성됩니다. 접두사는 내용을 해석하는 방식을 나타낼 뿐, 서버가 현재 작동한다는 뜻도 아니고 라우팅 규칙이 설정되었다는 의미도 아닙니다.
구독 URL은 보통 HTTPS 주소입니다. Shadowrocket이 해당 주소에 요청을 보내야 서버 목록 등의 구독 내용을 가져올 수 있습니다. 구독 응답에는 여러 줄의 공유 링크가 포함될 수도 있고 Base64로 인코딩된 목록이 포함될 수도 있습니다. 올바르게 인식되는지는 서비스 제공업체가 출력하는 형식에 따라 달라집니다. 주소가 https://로 시작한다는 이유만으로 구독이라고 단정할 수는 없습니다.
| 정보 유형 | 주요 내용 | 이후 변경 사항 |
|---|---|---|
| 단일 공유 링크 | 서버 하나의 프로토콜, 주소, 인증 매개변수 | 보통 다시 가져오거나 직접 수정해야 함 |
| Subscribe | 하나의 주소에서 가져오는 서버 목록 | 구독을 업데이트할 때 목록을 다시 가져옴 |
| Config | 규칙, 정책, DNS 등의 설정 내용 | 선택한 구성 파일과 업데이트 방식에 따라 관리 |
예를 들어 https://example.com/sub?token=xxxx는 구독 URL을 설명하기 위한 가짜 예시입니다. 쿼리 매개변수가 접속 인증 정보일 수 있으므로 비밀번호처럼 안전하게 보관하세요. 단일 서버 링크에는 일반적으로 DOMAIN-SUFFIX, GEOIP, FINAL 같은 규칙이 자동으로 포함되지 않습니다. 이러한 규칙은 Config의 별도 설정에 해당합니다.
ss://: Shadowsocks 인증 정보 인코딩 방식
Shadowsocks 공유 링크에는 흔히 두 가지 형식이 쓰입니다. 구형 형식은 ‘암호화 방식, 비밀번호, 주소, 포트’를 통째로 Base64로 인코딩합니다. SIP002 형식은 보통 사용자 정보인 method:password만 URL-safe Base64로 인코딩하고, 서버 주소와 포트는 읽을 수 있는 상태로 둡니다. 두 형식은 동일한 위치를 기준으로 나누어 해석할 수 없습니다.
ss://BASE64URL(method:password)@server.example.com:8388#Office
ss://BASE64(method:[email protected]:8388)#Office
위의 BASE64URL(...)과 BASE64(...)는 인코딩 과정을 설명하는 표기이며, 그대로 가져올 수 있는 문자열이 아닙니다. 8388은 예시 포트일 뿐 기본값으로 반드시 사용해야 하는 값이 아닙니다. 암호화 방식은 서버 측 설정과 일치해야 하며, 이름이 비슷하다고 임의로 바꾸면 안 됩니다.
@뒤에는 보통 서버 주소가 옵니다. IPv6 리터럴 주소는 대괄호로 묶은 뒤 포트를 붙여야 합니다.#Office는 메모이며 보통 인증에 사용되지 않습니다. 한글 메모는 퍼센트 인코딩되어 있을 수 있습니다.?plugin=은 플러그인 매개변수를 나타낼 수 있습니다. 사용할 수 있는지는 해당 플러그인과 클라이언트의 지원 여부에 따라 달라집니다.- 비밀번호에 콜론, 슬래시 또는 특수 문자가 포함된 경우 원래 인코딩 구조를 함께 고려해야 합니다. 콜론이 나올 때마다 무조건 나누면 안 됩니다.
Base64는 인코딩이지 암호화가 아닙니다. 완전한 공유 링크를 얻은 사람은 일반적으로 그 안의 인증 정보를 복원할 수 있습니다. 형식을 확인하려고 출처가 불분명한 웹 디코더를 사용하면 클립보드에만 있던 인증 정보가 다른 곳으로 전송될 수 있습니다. 가능한 한 기기에서 직접 확인하고, 서비스 제공업체에 문의할 때는 비밀번호와 전체 링크를 가리세요.
vmess://: 먼저 JSON으로 디코딩한 뒤 필드 확인하기
일반적인 VMess 공유 형식은 vmess:// 뒤에 Base64로 인코딩된 JSON이 이어집니다. 주소, 포트, UUID, 전송 방식 등의 정보는 JSON 필드에 들어 있으며, 일반 URL처럼 호스트와 쿼리 매개변수로 바로 표시되지 않습니다. 아래 내용은 디코딩한 형식을 설명하기 위한 예시이며, 그대로 붙여 넣어 가져올 수 있는 공유 링크가 아닙니다.
{
"v": "2",
"ps": "Example VMess",
"add": "server.example.com",
"port": "443",
"id": "00000000-0000-4000-8000-000000000001",
"aid": "0",
"net": "ws",
"type": "none",
"host": "edge.example.com",
"path": "/connect",
"tls": "tls",
"sni": "edge.example.com"
}
add와port는 연결 엔드포인트를 나타내고,id는 인증 UUID입니다. 예시 UUID는 가짜 값입니다.net이ws라면 WebSocket의host와path도 확인해야 합니다.tls와sni는 TLS 관련 설정을 나타냅니다. 포트가443이라고 해서 TLS가 활성화되었다는 뜻은 아닙니다.aid는 이전 형식의 AlterId 필드이며 포트나 연결 수가 아닙니다. 서비스 제공업체가 안내한 값을 임의로 추측한 값으로 바꾸지 마세요.
예시의 "v": "2"는 공유 형식의 필드이며 Shadowrocket 앱 버전이 아닙니다. 출처에 따라 필드가 생략되거나 내보내기 규칙이 다를 수 있습니다. 이름은 인식되지만 연결에 실패한다면 UUID만 확인하지 말고 가져온 뒤의 실제 필드, 특히 전송 방식, TLS, 경로를 비교하세요.
vless://와 trojan://: URL처럼 보여도 인증 방식은 다릅니다
VLESS 공유 링크는 일반적으로 UUID를 사용자 정보로 사용하고, Trojan 공유 링크는 비밀번호를 사용합니다. 두 형식 모두 쿼리 매개변수에 전송 및 TLS 설정을 담을 수 있습니다. 링크 모양이 비슷하다고 접두사를 서로 바꿔 쓸 수 있는 것은 아니며, 모든 내보내기 형식에서 매개변수 이름이 완전히 동일한 것도 아닙니다.
vless://[email protected]:443?encryption=none&security=tls&type=ws&host=edge.example.com&path=%2Fconnect&sni=edge.example.com#Example
trojan://[email protected]:443?security=tls&sni=edge.example.com#Example
연결 엔드포인트와 핸드셰이크 매개변수를 나누어 확인하기
연결 엔드포인트와 사용자 식별 정보
- 주소는 실제로 연결할 서버를 지정합니다.
- 포트는 서버에서 수신 대기 중인 포트와 일치해야 합니다.
- VLESS는 UUID를, Trojan은 비밀번호를 확인합니다.
TLS와 전송
sni는 TLS 핸드셰이크에 사용할 서버 이름을 지정합니다.type=ws이면 Host와 경로를 확인하세요.security등의 매개변수는 원래 제공된 정보에 따라 입력하세요.
주소, SNI, WebSocket Host는 서로 다를 수 있지만, 서버가 해당 조합으로 설정된 경우에만 사용할 수 있습니다. 필드 값을 일치시키려고 임의로 수정하지 마세요.
path=%2Fconnect를 디코딩하면 /connect가 됩니다. 비밀번호에 @, #, ?가 포함되어 있다면 올바르게 퍼센트 인코딩해야 합니다. 그렇지 않으면 파서가 비밀번호 일부를 주소, 메모 또는 쿼리 매개변수로 잘못 인식할 수 있습니다. 서비스 제공업체가 생성한 전체 링크를 사용하고, 채팅 앱에서 직접 조합하지 마세요.
VLESS의 encryption=none은 프로토콜 계층의 필드를 설명하는 것으로, 연결 전체가 반드시 평문이라는 뜻은 아닙니다. TLS 사용 여부는 전송 보안 설정을 별도로 확인해야 합니다. Trojan은 일반적으로 TLS에 의존합니다. 인증서 검증에 실패하면 먼저 시간, SNI, 인증서 설정을 확인하고, 검증을 끄는 것을 일반적인 가져오기 절차로 삼지 마세요.
Shadowrocket에서 가져오기: 보유한 정보에 맞는 메뉴 선택
먼저 보유한 정보가 완전한 공유 링크인지, QR 코드인지, 서비스 제공업체가 제공한 Subscribe 주소인지 확인하세요. 공유 링크는 특정 서버를 한 번 가져올 때 적합하며, 서버 목록을 계속 동기화하려면 구독 관계를 유지해야 합니다. 아래 내용은 Shadowrocket의 가져오기 방식 비교이며, 어떤 연결의 품질을 평가하는 내용이 아닙니다.
Type → Subscribe
권장이미 구독 주소를 받았다면 Subscribe로 저장하세요. 이후 같은 구독을 업데이트해 서버 목록 변경 사항을 가져올 수 있어 항목을 하나씩 다시 복사할 필요가 없습니다.
적합한 경우: 구독을 보유하고 서버 목록을 동기화하려는 사용자
클립보드에서 가져오기
완전한 프로토콜 공유 링크를 복사하면 Shadowrocket이 이를 인식해 서버 항목을 만듭니다. 가져온 후 Type과 주요 매개변수를 확인하세요.
적합한 경우: 서버 하나를 추가하거나 단일 연결 정보를 확인하려는 사용자
QR 코드 스캔
QR 코드에 담긴 텍스트를 읽어 유형에 따라 처리합니다. QR 코드에는 공유 링크나 구독 주소가 들어 있을 수 있습니다.
적합한 경우: 다른 화면에 표시된 연결 정보를 읽으려는 사용자
단일 공유 링크 가져오기 순서
- 서비스 제공업체에서 전체 링크를 받아 복사하세요. 복사할 때 따옴표, 글머리 기호, 설명 문구까지 선택하지 않도록 주의하세요.
- Shadowrocket을 열고 Home에서 클립보드 인식 안내를 눌러 추가하세요. 붙여넣기 권한을 묻는 경우 방금 직접 복사한 정보인지 확인한 뒤 허용하세요.
- 인식 안내가 나타나지 않으면 서비스 제공업체가 제공한 QR 코드를 스캔해 가져오거나 Home → +로 이동해 Type을 선택하고 원래 매개변수를 직접 입력하세요.
- 가져온 항목을 열어 Type, 주소, 포트, 인증 필드, TLS, SNI, 전송 설정을 확인한 뒤 저장하고 해당 항목을 선택하세요.
구독 주소 설정 순서
- Home → +로 이동한 다음 Type에서 Subscribe를 선택하세요.
- 전체 구독 주소를 URL에 입력하고 필요하면 메모를 추가한 뒤 저장하세요. 일반 서버의 주소로 잘못 입력하지 마세요.
- 구독 가져오기가 완료될 때까지 기다린 다음 Home에서 해당 구독의 서버 항목을 확인하세요. 변경 사항을 동기화하려면 해당 구독을 업데이트하세요.
- 업데이트 후 현재 선택한 항목을 다시 확인하세요. 서비스 제공업체가 기존 항목을 삭제하거나 교체했다면 선택을 변경해야 할 수 있습니다.
정리: 목록을 동기화하려면 Subscribe 유지
정보를 제공받은 곳이 구독 주소라면 Subscribe로 저장하는 것이 좋습니다. 구독에서 공유 링크 하나만 복사한 뒤 그 독립 항목이 구독 변경 사항을 자동으로 따라올 것이라고 기대하지 마세요.
가져온 뒤 파싱, 연결, 규칙을 각각 확인하기
‘가져오기 성공’은 앱이 텍스트를 항목으로 변환했다는 뜻일 뿐입니다. 서버에 연결할 수 있는지, 인증이 통과되는지, 모든 사이트가 예상대로 라우팅되는지를 보장하지 않습니다. 문제를 단계별로 확인해 규칙 동작을 공유 링크 오류로 오인하지 말고, 연결이 한 번 실패했다고 여러 필드를 반복해서 수정하지 마세요.
- 파싱 결과 확인: Type이 링크 접두사와 일치하는지, 주소 끝에 공백이 없는지, 포트가 빠지지 않았는지, 메모가 인증 필드에 잘못 입력되지 않았는지 확인하세요.
- 연결 조건 확인: 서비스 제공업체의 정보에 따라 비밀번호 또는 UUID, TLS, SNI, Host, 경로를 확인하세요. 시간 초과, 인증 실패, 인증서 오류는 서로 다른 문제이므로 모두 포트 변경으로 해결하려 하지 마세요.
- Global Routing 확인: Direct는 직접 연결, Proxy는 프록시 사용, Config는 현재 구성 규칙에 따른 처리를 의미합니다. Scene을 사용하는 경우에는 현재 Scene 설정을 확인하세요. 문제를 진단할 때는 어떤 방식을 사용 중인지 알아야 합니다.
- Config 확인: 예를 들어
DOMAIN-SUFFIX,example.com,DIRECT규칙과 일치하는 요청은 DIRECT로 처리됩니다. Home에서 서버를 선택해도 해당 규칙의 의미는 바뀌지 않습니다.
구독 업데이트와 서버 연결도 별개의 작업입니다. 구독은 성공적으로 업데이트되었지만 특정 서버를 일시적으로 사용할 수 없을 수 있고, 서버 연결은 정상이어도 인증 정보가 만료되어 구독 주소를 업데이트하지 못할 수 있습니다. 조치하기 전에 실패가 ‘목록 가져오기’에서 발생했는지, ‘목록에 있는 항목 사용’에서 발생했는지 확인하세요.
공유 링크 및 구독 가져오기 FAQ
vmess://를 복사했는데 왜 인식되지 않나요?
링크가 완전한지, 줄바꿈이나 한글 따옴표 또는 끝부분의 문장부호가 섞이지 않았는지 확인하세요. Base64 문자열에서 한 글자만 빠져도 JSON을 복원하지 못할 수 있습니다. 서비스 제공업체에서 원문을 다시 복사하거나 제공된 QR 코드를 스캔하세요. 문자를 임의로 추가하지 마세요.
QR 코드를 스캔했더니 https://로 시작하는데, 잘못된 정보를 받은 건가요?
QR 코드는 텍스트를 담는 수단일 뿐입니다. 서비스 제공업체가 구독 주소라고 안내했다면 Home → + → Type → Subscribe로 이동해 URL에 저장하세요. 웹페이지 주소라면 QR 코드 모양만 보고 판단하지 말고 서비스 제공업체에 용도를 확인하세요.
단일 링크는 작동하는데 구독 업데이트는 왜 실패하나요?
먼저 Subscribe의 URL이 잘리지 않았는지, 특히 물음표 뒤의 token을 확인하세요. 그런 다음 구독 인증 정보가 아직 유효한지 확인합니다. 서버 비밀번호로 구독 token을 대체하지 마세요. 일반적으로 서로 다른 인증 정보입니다.
링크 끝의 메모를 바꾸면 연결에 영향을 주나요?
보통 # 뒤의 메모를 수정하면 표시 이름만 바뀝니다. 하지만 편집 중 앞쪽 쿼리 매개변수를 실수로 지우거나 비밀번호의 특수 문자를 구분자로 잘못 바꾸면 파싱에 영향을 줄 수 있습니다. 가져온 뒤 메모를 수정하고 원래 연결 정보는 그대로 유지하는 편이 좋습니다.