Shadowrocket 노드 링크 형식: ss://, vmess://, vless://, trojan://와 구독 링크의 차이

Shadowrocket의 공유 링크 구성과 인코딩 방식, 단일 노드 링크와 구독 주소의 가져오기·업데이트 차이를 살펴봅니다. 예시는 모두 example.com을 사용하는 가상 값입니다.

이 글의 핵심

이미 자신의 서비스 설정이나 구독을 보유하고 있으며 iPad 또는 iPhone에서 Shadowrocket으로 가져오려는 사용자를 위한 안내입니다. 링크 접두사로 단일 노드와 구독을 구분하고, 주소·포트·인증 정보·전송 매개변수를 확인한 뒤 가져오기, 업데이트, 문제 확인 방법을 살펴봅니다. 모든 예시는 실제 연결에 사용할 수 없는 가상 값입니다. 이 사이트는 노드, 구독 또는 기타 연결 서비스를 제공하거나 판매·추천하지 않습니다.

1. 단일 공유 링크와 구독 주소의 차이

단일 공유 링크는 하나의 연결 항목을 설명하며, 보통 프로토콜, 서버 주소, 포트, 인증 정보가 포함됩니다. 구독 주소는 설정 내용을 가져오는 진입점입니다. Shadowrocket이 해당 주소에 요청을 보내고 응답 내용을 하나 이상의 항목으로 분석합니다. 따라서 ss:// 링크 하나를 복사하는 것과 구독 주소를 저장하는 것은 가져오는 대상과 이후 업데이트 방식이 다릅니다.

입력 형식주요 내용업데이트 방식
ss://Shadowsocks 연결 매개변수보통 다시 가져오거나 직접 편집
vmess://VMess 인코딩 설정. 흔히 Base64로 감싼 JSON 형식보통 다시 가져오거나 직접 편집
vless://VLESS의 UUID, 엔드포인트, 쿼리 매개변수보통 다시 가져오거나 직접 편집
trojan://Trojan의 비밀번호, 엔드포인트, 쿼리 매개변수보통 다시 가져오거나 직접 편집
https://example.com/sub?token=xxxx설정 내용이 반환되는 예시 주소구독을 업데이트해 다시 가져오기

https://만으로 해당 주소가 구독이라고 판단할 수는 없습니다. 일반 웹페이지, 계정 페이지, 구독 주소 모두 HTTPS를 사용할 수 있습니다. 서비스 제공자가 구독 주소로 명시했고 응답 내용을 현재 클라이언트가 분석할 수 있어야 Subscribe로 가져오기에 적합합니다. 구독 응답에 여러 노드가 반드시 포함되는 것도 아닙니다. 하나만 있더라도 원격 업데이트 방식을 유지할 수 있습니다.

판단 기준: 변경 사항을 동기화하려면 구독 주소를 유지하세요

구독 주소와 그 안에서 복사한 단일 링크를 모두 가지고 있다면 필요한 방식에 따라 선택하세요. 항목 변경 사항을 동기화하려면 구독을 저장하고, 설정 하나만 독립적으로 유지하려면 단일 링크를 가져오면 됩니다. 개별 항목을 복사해도 원래 구독과 자동으로 연결되지는 않습니다.

2. 링크의 공통 구조 이해하기

대부분의 URI 형식 공유 링크는 scheme, 인증 정보, 호스트와 포트, 쿼리 매개변수, 메모로 나눌 수 있습니다. 각 부분의 정의는 프로토콜마다 다르므로 한 프로토콜의 사용자 이름 위치를 다른 프로토콜의 비밀번호 위치로 간주하면 안 됩니다. 아래 예시는 Trojan으로 구조를 보여주며, 비밀번호와 주소는 모두 가상 값입니다.

trojan://[email protected]:443?security=tls&sni=example.com#Demo-Trojan
8388
아래 Shadowsocks 예시의 포트는 고정값이 아닙니다
443
이 문서의 TLS 예시 포트입니다. 실제 값은 기존 설정을 기준으로 확인하세요
1–65535
연결 설정에 입력할 수 있는 일반적인 대상 포트 범위

퍼센트 인코딩과 Base64는 서로 다른 방식입니다. 예를 들어 메모의 공백은 %20으로 나타낼 수 있고, Base64는 바이트 데이터를 전송 가능한 문자 텍스트로 변환합니다. 두 방식 모두 인증 정보를 암호화하지 않습니다. 공유 링크, QR 코드, 구독 URL에 접근 인증 정보가 그대로 포함될 수 있으므로 공개 댓글에 게시하거나 출처가 불분명한 온라인 디코더에 붙여넣지 마세요.

3. ss://: 암호화 방식과 인코딩 범위 확인하기

Shadowsocks에서 흔히 사용하는 SIP002 공유 형식은 ss://userinfo@host:port#remark입니다. 일반적인 AEAD 설정에서 userinfo는 대개 method:password를 URL-safe Base64로 인코딩한 값입니다. 아래 인코딩 부분을 디코딩하면 aes-128-gcm:demo-password가 됩니다.

ss://[email protected]:8388#Demo-SS

디코딩한 인증 필드:
aes-128-gcm:demo-password

서버: example.com
포트: 8388
암호화 방식: aes-128-gcm
비밀번호: demo-password

method:password@host:port 전체를 인코딩한 구형 링크도 볼 수 있습니다. 두 형식을 “앞에서 몇 글자만 잘라내는” 방식으로 파싱할 수는 없습니다. Base64 텍스트 끝의 = 패딩은 생략되기도 하며 URL-safe 형식은 -와 _를 사용할 수도 있습니다. 패딩이 없다는 이유만으로 링크가 손상됐다고 단정하지 마세요.

4. vmess://: 바깥쪽 Base64와 안쪽 JSON

흔히 사용하는 VMess 공유 형식은 vmess:// 뒤에 Base64로 인코딩한 JSON을 둡니다. 겉으로 @host:port가 보이지 않는다고 주소가 빠진 것은 아닙니다. 주소와 포트가 JSON 필드에 들어 있습니다. 아래는 흔히 쓰이는 형식을 디코딩한 내용만 보여주는 예시이며, 그대로 붙여넣어 가져올 수 있는 완전한 URI가 아닙니다.

{
  "v": "2",
  "ps": "Demo-VMess",
  "add": "example.com",
  "port": "443",
  "id": "00000000-0000-4000-8000-000000000000",
  "aid": "0",
  "scy": "auto",
  "net": "ws",
  "type": "none",
  "host": "example.com",
  "path": "/demo",
  "tls": "tls",
  "sni": "example.com"
}

이 예시에서 add는 연결 주소, id는 명백히 가상의 UUID, net은 WebSocket 전송, path는 WebSocket 경로를 나타냅니다. host와 sni는 각각 HTTP Host와 TLS SNI에 사용될 수 있으며, 연결 주소와 반드시 같지는 않습니다. v 필드는 이 공유 형식의 버전을 나타내며 Shadowrocket 앱 버전 번호가 아닙니다.

5. vless://와 trojan://: 비슷한 구조, 다른 인증 정보

두 공유 링크는 읽기 쉬운 URI 구조를 사용하는 경우가 많습니다. VLESS는 보통 @ 앞에 UUID를 두고, Trojan은 비밀번호를 둡니다. 두 프로토콜 모두 전송 및 TLS 매개변수가 포함될 수 있지만 접두사만 바꾼다고 한 프로토콜이 다른 프로토콜로 변환되는 것은 아닙니다.

vless://[email protected]:443?encryption=none&security=tls&type=ws&host=example.com&path=%2Fdemo&sni=example.com#Demo-VLESS

trojan://[email protected]:443?security=tls&sni=example.com#Demo-Trojan
확인 항목VLESS 예시Trojan 예시
인증 정보UUID비밀번호
전송 방식type=ws는 WebSocket을 나타냅니다이 예시에는 별도의 전송 캡슐화가 지정되어 있지 않습니다
TLSsecurity=tlssecurity=tls
이름 검증 관련 필드sni=example.comsni=example.com

VLESS의 encryption=none을 “연결 전체에 TLS가 없다”는 뜻으로 해석하면 안 됩니다. 이는 security=tls와 서로 다른 계층의 설정입니다. 포트가 443이라고 해서 인증서가 반드시 유효하다고 볼 수도 없습니다. 인증서, SNI, 실제 서버 설정이 서로 일치해야 합니다. 검증 오류가 발생하면 기존 설정을 확인하세요. 인증서 검증을 끄는 것은 일반적인 해결 방법으로 권장되지 않습니다.

이 문서에서 다룬 네 가지 접두사가 프로토콜 전체 목록은 아닙니다. Hysteria2, WireGuard 등은 각기 다른 매개변수 구조와 가져오기 요건을 갖고 있으므로 이 문서의 필드 표를 그대로 적용할 수 없습니다. 같은 프로토콜이라도 공유 형식에 확장 항목이 있을 수 있습니다. 항목으로 파싱됐다는 것은 가져오기가 완료됐다는 뜻일 뿐, 모든 매개변수가 서버와 일치한다는 뜻은 아닙니다.

6. iPad와 iPhone에서 가져오고 업데이트하기

Shadowrocket에서 Home은 연결 상태와 서버 항목을 확인하는 곳이고, Config는 구성 파일을 관리하는 곳이며, Settings는 앱 설정을 관리하는 곳입니다. 구독 URL을 서버 도메인 입력란에 넣으면 안 되며, 파일 확장자만 보고 Config 파일이라고 판단해서도 안 됩니다. 먼저 보유한 내용이 단일 링크인지, 구독 주소인지, 완전한 구성 파일인지 확인한 뒤 알맞은 메뉴를 선택하세요.

  1. 앱 확인

    App Store에서 Shadowrocket을 받고 개발자가 Shadow Launch Technology Limited인지 확인하세요. 이 앱은 일회성 구매 방식의 클로즈드소스 상용 앱입니다. 클라이언트 구매와 연결 서비스 이용권은 별개입니다. iPhone 및 iPad의 시스템 요구 사항은 App Store 페이지 표기를 기준으로 확인하세요.

  2. 단일 링크 가져오기

    직접 보유한 완전한 공유 링크를 복사한 다음 Home으로 돌아갑니다. 클립보드 가져오기 안내가 나타나면 내용을 확인하고 추가하세요. 안내가 나타나지 않으면 Home 오른쪽 위의 “+”에서 해당 Type을 선택하고 원본 설정에 따라 항목별로 입력하세요. URI 전체를 서버 주소란에 붙여넣지 마세요.

  3. 구독 추가

    Home 오른쪽 위의 “+” → Type → Subscribe로 이동한 다음 URL에 직접 보유한 구독 주소를 붙여넣고 저장하세요. 예시 주소 https://example.com/sub?token=xxxx는 구조 설명용일 뿐입니다.

  4. 업데이트 확인

    Home으로 돌아가 아래로 당겨 구독을 새로고침하고 해당 구독 그룹에 항목이 표시되는지 확인하세요. 업데이트로 항목이 추가·삭제·수정될 수 있습니다. 직접 만든 설정 중 유지해야 할 항목은 업데이트 전에 별도로 기록해 두세요.

  5. 연결 확인

    기존 항목을 선택해 연결하고, 시스템 안내에 따라 VPN 구성을 허용한 다음 Home → Connectivity Test에서 확인하세요. Home → Global Routing도 함께 확인하세요. 노드를 가져왔다고 해서 Direct가 자동으로 Proxy나 Config로 바뀌지는 않습니다.

구독은 주로 항목을 가져오고 동기화하는 기능이며, 규칙 기반 라우팅까지 완성해 주지는 않습니다. Global Routing → Config를 사용할 때는 Config에서 현재 사용 중인 설정과 대상 정책도 확인해야 합니다. DOMAIN-SUFFIX, GEOIP, IP-CIDR, FINAL은 규칙 키워드이지 노드 공유 프로토콜이 아닙니다. 구독 업데이트가 성공해도 규칙이 예상대로 적용된다는 뜻은 아닙니다.

7. 가져오기·업데이트·연결 실패별 점검 항목

문제가 발생한 단계에 따라 확인하세요. 저장 전에 형식 오류가 표시되면 링크 텍스트를 먼저 확인하고, 구독 요청이 실패하면 구독 주소와 네트워크 경로를 확인하세요. 항목은 표시되지만 연결되지 않으면 인증, 전송, 라우팅을 점검합니다. 세 단계를 구분하지 않으면 원래 올바른 설정까지 반복해서 변경할 수 있습니다.

복사했는데 인식되지 않아요. 링크가 잘못된 건가요?

먼저 접두사가 온전한지 확인하고 텍스트 바깥의 따옴표, 설명 문구, 코드 펜스를 제거하세요. 링크 안의 &가 문자 그대로 &로 바뀌지 않았는지도 확인합니다. 클립보드 안내만 나타나지 않는다면 Home → “+”에서 해당 Type을 직접 확인하세요. 이 때문에 프로토콜 접두사를 바꾸지는 마세요.

구독 업데이트 시간이 초과됐어요. 먼저 프로토콜을 바꿔야 하나요?

먼저 Subscribe의 URL이 여전히 유효한지, token이 온전한지, 현재 네트워크에서 구독 주소에 접근할 수 있는지 확인하세요. 사용할 수 있는 프록시가 이미 있고 구독 주소에 프록시를 통해 접근해야 하는 경우에만 Settings → Subscribe에서 Update via Proxy를 확인하세요. 이 옵션으로 만료된 인증 정보나 잘못된 주소를 해결할 수는 없습니다.

항목은 가져와지는데 왜 연결되지 않나요?

항목을 열어 주소, 포트, 비밀번호 또는 UUID를 확인한 다음 TLS, SNI, 전송 유형, 경로를 점검하세요. 이어서 Home에서 Connectivity Test를 실행하고 Global Routing을 확인하세요. 가져오기에 성공했다는 것은 텍스트가 파싱됐다는 뜻일 뿐, 인증 정보가 유효하거나 대상 서버에 연결할 수 있다는 뜻은 아닙니다.

이름을 바꿨는데 구독 업데이트 후 왜 다시 바뀌나요?

구독 업데이트 과정에서 원격 내용에 따라 항목이 다시 생성되거나 덮어써질 수 있습니다. 구독 그룹에서 직접 수정한 내용이 영구 저장된다고 볼 수는 없습니다. 별도로 관리해야 한다면 기존 항목의 전체 매개변수를 따로 저장하세요. 이후 독립 항목과 원래 구독을 각각 관리하고 하나의 설정으로 취급하지 마세요.

App Store 정품 확인 및 가져오기 안내

먼저 App Store에서 Shadowrocket의 앱 정보와 구매 내역을 확인한 다음, 안내에 따라 직접 보유한 구독이나 설정을 가져오세요. 앱을 받을 수 있는 유일한 경로는 App Store입니다. 앱 구매에는 연결 서비스가 포함되지 않으며, 호환성 및 시스템 요구 사항은 App Store 페이지 표기를 기준으로 확인하세요.

정품 확인 페이지 보기 사용법 보기
App Store 정품 확인