직접 보유한 서비스 정보를 가지고 있지만 어떤 링크를 가져와야 할지 모르는 iPhone 및 iPad 사용자를 위한 안내입니다. 공유 링크, 구독 주소, 규칙 구성을 구분하고, 자주 쓰이는 네 가지 접두사에서 인증 정보와 전송 필드를 확인한 뒤 Home에서 가져오기 결과와 업데이트 동작을 점검합니다. 예시는 실제 연결에 사용할 수 없는 설명용 데이터입니다. 이 사이트는 서버나 구독을 제공·판매·추천하지 않습니다.
1. 단일 공유 링크, 구독 주소, 규칙 구성 구분하기
Shadowrocket의 서버 설정, 구독 소스, 라우팅 규칙은 서로 다른 개념입니다. 공유 링크에는 서버 하나의 접속 정보가 담기고, 구독 주소는 다시 요청할 수 있는 원격 콘텐츠를 가리키며, 규칙 구성은 연결 요청을 라우팅하는 방식을 정합니다. 모두 텍스트나 URL 형태로 표시될 수 있지만 서로 대체할 수는 없습니다.
| 콘텐츠 유형 | 일반적으로 포함되는 내용 | 가져온 뒤 확인할 항목 |
|---|---|---|
| 단일 공유 링크 | 프로토콜, 서버 주소, 포트, 인증 정보 및 선택적 전송 매개변수 | Home에 표시되는 해당 서버의 편집 정보 |
| 서버 구독 주소 | 원격 주소와 접근 자격 증명. 응답에는 서버 목록이 포함됩니다 | Home의 구독 소스와 해당 소스에 포함된 항목 |
| 규칙 구성 | 규칙, 정책 및 기타 구성 내용. 구체적인 항목은 파일에 따라 다릅니다 | Config에서 실제로 선택한 구성과 규칙 |
https:// 주소라고 해서 반드시 서버 구독인 것은 아닙니다. 로그인 페이지, 도움말 페이지 또는 규칙 구성을 가리킬 수도 있습니다. 주소가 길어 보이는지가 아니라 기존 서비스에서 안내한 용도와 응답 내용을 기준으로 판단하세요. 서버 목록 구독에 DNS나 라우팅 규칙 설정이 포함된다고 보장할 수도 없습니다. 가져온 뒤 현재 Global Routing을 확인하세요.
2. ss://와 vmess://: Base64로 감싼 내용은 서로 다릅니다
ss://: 암호화 방식과 비밀번호, 주소와 포트 확인하기
ss://는 Shadowsocks 공유 링크입니다. 일반적인 SIP002 형식에서는 ‘암호화 방식:비밀번호’를 Base64로 인코딩한 userinfo에 넣고, 서버 주소와 포트는 바깥에 둡니다. 이전 형식은 연결 정보 전체를 인코딩하기도 합니다. 따라서 모든 ss:// 링크를 같은 위치에서 기계적으로 잘라내면 안 됩니다.
디코딩한 userinfo 예시:
aes-256-gcm:demo-password
해당 서버 정보 예시:
Server: example.com
Port: 8388
Method: aes-256-gcm
Password: demo-password
여기서 8388은 설명용 포트일 뿐, Shadowsocks에서 반드시 사용하는 포트가 아닙니다. 실제 포트는 기존 서비스 정보와 일치해야 합니다. 링크에 plugin 쿼리 매개변수와 # 뒤의 메모가 포함될 수도 있습니다. 메모는 항목을 구분하기 위한 것으로 주소를 대신하지 않습니다. 서비스에 추가 플러그인 매개변수가 필요하다면 주소, 비밀번호, 포트만으로는 연결되지 않을 수 있습니다.
vmess://: 흔히 Base64로 인코딩된 JSON 구조
일반적인 vmess:// 공유 형식은 JSON 객체를 인코딩해 접두사 뒤에 붙입니다. 아래는 디코딩한 내용을 읽는 예시이며, 가져오기 입력란에 그대로 붙여 넣을 수 있는 완전한 링크가 아닙니다. 공유 형식에는 변형이 있을 수 있으므로 가져온 뒤 표시되는 필드를 기준으로 확인하세요.
{
"v": "2",
"ps": "Demo VMess",
"add": "example.com",
"port": "443",
"id": "00000000-0000-4000-8000-000000000001",
"aid": "0",
"scy": "auto",
"net": "ws",
"type": "none",
"host": "example.com",
"path": "/demo",
"tls": "tls",
"sni": "example.com"
}
add와port는 서버 주소와 포트이고,id는 인증에 사용하는 UUID입니다.net이ws이면 WebSocket 전송을 사용한다는 뜻이며,path와host는 해당 전송의 매개변수입니다.tls와sni는 TLS 연결에 영향을 줍니다. 포트가443이라고 해서 TLS 설정이 모두 갖춰졌다고 단정할 수 없습니다.v는 이 유형의 공유 JSON에서 형식을 나타내는 필드이지 Shadowrocket 버전 번호가 아닙니다.ps는 일반적으로 표시용 메모입니다.
판단 기준: 디코딩이 된다고 해서 텍스트 구조만 읽을 수 있다는 뜻입니다
Base64는 인코딩 방식이지 자격 증명을 보호하는 암호화 수단이 아닙니다. 구조를 확인할 때는 로컬에서 처리하고, 전체 공유 링크를 온라인 디코딩 사이트에 입력하지 마세요. 가져온 뒤 프로토콜, 포트, 전송 매개변수를 하나씩 확인한 다음 연결을 테스트하세요.
3. vless://와 trojan://: URI에서 생략하면 안 되는 필드
vless://와 trojan://은 비교적 읽기 쉬운 URI 구조를 사용하는 경우가 많습니다. 접두사 다음에는 인증 정보가, @ 뒤에는 서버 주소와 포트가, ? 뒤에는 쿼리 매개변수가, # 뒤에는 메모가 옵니다. 읽기 쉽더라도 민감한 정보일 수 있으므로 인증 부분은 비밀번호처럼 다루세요.
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 예시에는 UUID, Trojan 예시에는 비밀번호가 사용됩니다 | 두 인증 정보를 서로 바꾸지 마세요 |
example.com:443 | 서버 주소와 포트 | 포트는 기존 서비스 정보를 기준으로 확인하세요 |
security=tls | 공유 형식에 포함된 TLS 설정 | 가져온 뒤 TLS 설정과 인증서 이름을 확인하세요 |
sni | TLS 핸드셰이크에서 사용하는 서버 이름 | 서비스에서 안내한 이름과 일치해야 하며, 임의로 주소로 바꾸지 마세요 |
type=ws、host、path | WebSocket 전송 및 요청 매개변수 | 경로의 대소문자, 슬래시, Host를 빠짐없이 확인하세요 |
#Demo-VLESS | 표시용 메모 | 메모를 수정해도 인증이나 전송 오류는 해결되지 않습니다 |
VLESS 예시의 encryption=none은 프로토콜 관련 매개변수입니다. 이 값만으로 연결 전체에 TLS가 적용되지 않는다고 판단할 수는 없습니다. TLS 사용 여부는 security와 가져온 뒤의 실제 설정을 확인해야 합니다. 마찬가지로 443은 포트 번호만 알려줄 뿐, 인증서 검증, SNI 또는 WebSocket 경로가 올바르다는 뜻은 아닙니다.
URL의 특수 문자는 퍼센트 인코딩이 필요할 수 있습니다. 예시의 %2Fdemo를 디코딩하면 /demo가 됩니다. 직접 처리할 때는 여러 번 디코딩한 뒤 링크에 다시 조합하지 마세요. 비밀번호에 포함된 @나 #을 구조를 나누는 문자로 잘못 취급해서도 안 됩니다. IPv6 주소가 URI의 호스트 위치에 들어가는 경우에는 주소의 콜론과 포트 구분자가 혼동되지 않도록 대괄호로 감싸는 것이 일반적입니다.
4. 구독 주소: 원격 소스를 유지하고 목록을 업데이트
서버 구독은 보통 HTTPS 주소이며, 아래 예시는 명백한 가짜 주소입니다. 가져올 때 Shadowrocket은 해당 주소에 요청을 보내 응답을 해석한 뒤 선택할 수 있는 서버 항목을 만듭니다. 응답은 여러 공유 링크가 담긴 텍스트일 수도 있고 전체가 인코딩되어 있을 수도 있습니다. 구독 URL만 보고 내부에서 Shadowsocks, VMess, VLESS, Trojan 중 어떤 프로토콜을 사용하는지 알 수는 없습니다.
https://example.com/sub?token=xxxx
가져오기 방법: 보유한 정보 유형에 맞는 항목 선택
공유 링크 하나를 보유한 경우
- 전체
ss://,vmess://,vless://또는trojan://링크를 복사합니다. - Home에서 추가 기능을 사용해 가져오거나 해당 텍스트가 담긴 QR 코드를 스캔합니다.
- 새로 추가된 항목을 열어 Type, 주소, 포트, 인증 필드를 확인합니다.
- 매개변수가 변경되면 다시 가져오거나 해당 항목을 직접 수정해야 합니다.
서버 구독 주소를 보유한 경우
- Home → +의 추가 화면에서 Type을 Subscribe로 선택합니다.
- URL에 전체 주소를 입력하고 경로, 쿼리 매개변수, token을 그대로 유지합니다.
- 저장한 뒤 목록을 가져오고, 해당 소스 아래에 예상한 서버가 표시되는지 확인합니다.
- 원격 변경 사항을 반영하려면 같은 소스를 중복 추가하지 말고 해당 구독을 업데이트하세요.
QR 코드와 클립보드는 입력 방식일 뿐입니다. QR 코드에 단일 공유 링크가 들어 있는지 구독 주소가 들어 있는지에 따라 가져온 뒤의 관리 방식이 달라집니다.
구독을 업데이트하면 원격 소스를 다시 가져오므로 항목 수, 이름, 주소, 자격 증명이 바뀔 수 있습니다. 업데이트에 성공해도 현재 선택한 서버에 연결할 수 있다는 뜻은 아니며, 트래픽 규칙이 올바르다는 뜻도 아닙니다. 업데이트 전에 현재 사용하는 항목을 기록해 두세요. 구독에 포함된 항목을 직접 수정해도 계속 유지된다고 가정하지 마세요. 다음 업데이트에서 관련 필드가 다시 생성될 수 있습니다.
- 응답이 로그인 페이지라면 HTTP 요청에 응답이 있더라도 유효한 서버 목록으로 처리할 수 없습니다.
- 소스에서 token을 폐기한 경우 기존 주소를 반복해서 붙여 넣어도 접근 권한이 복구되지 않습니다. 현재 사용하는 서비스에서 유효한 주소를 확인하세요.
- 링크에
&가 포함되어 있다면 실제 주소를 복사했는지 확인하세요. 웹페이지 소스에서 해당 문자를 나타내는 엔티티 텍스트를 복사한 것은 아닌지 살펴보세요. - 전체 구독 URL은 접근 자격 증명 역할을 하는 경우가 많습니다. 스크린샷을 공유할 때는 도메인뿐 아니라 경로와 쿼리 매개변수도 가리세요.
5. 가져온 뒤 Home, Config, Settings에서 확인할 항목
Home에서는 서버를 확인하고 선택하므로 가져오기 결과를 점검하는 데서 출발합니다. Config에서는 규칙 구성을 관리하고, Settings에는 앱 설정이 있습니다. 공유 링크에 type=ws가 있다고 해서 Config의 라우팅 규칙으로 간주하지 마세요. 프로토콜 전송은 서버에 연결하는 방식을 정하고, 규칙은 각 요청에 적용할 정책을 정합니다. 두 항목은 서로 다른 계층입니다.
- 먼저 Home에서 새로 추가한 항목의 편집 화면을 열어 Type이 원본 접두사와 일치하는지 확인한 다음 서버 주소, 포트, 인증 정보, TLS 및 전송 매개변수를 점검합니다.
- 구독을 가져왔다면 해당 항목이 이전에 추가한 이름만 같은 독립 항목이 아니라 예상한 소스에 속하는지 확인합니다.
- Global Routing을 확인합니다. 일상적으로 규칙에 따라 사용할 때는 Config가 선택되어 있는지, Config 페이지에서 예상한 구성이 선택되어 있는지 점검하세요.
- 사용 권한이 있는 서버를 선택하고 연결을 켠 뒤 시스템 VPN 구성 권한을 허용하고 실제 요청을 테스트합니다.
- 자동 재연결 동작을 확인하려면 Settings → On Demand를 살펴보세요. 이 설정은 구독 업데이트 스위치가 아니며 누락된 서버 매개변수를 채워 주지도 않습니다.
Config: 현재 구성에 따라 라우팅
권장유효한 규칙 구성이 있는 경우 사용하세요. 요청은 현재 구성의 규칙에 따라 처리됩니다. 규칙에 일치하지 않는 모든 요청이 단순히 직접 연결된다고 볼 수는 없습니다. 최종 처리 방식은 구성에 지정된 기본 정책에 따라 달라집니다.
적합한 경우: 규칙을 확인하고 도메인이나 IP에 따라 라우팅하려는 일상적인 사용
Proxy: 규칙의 영향을 임시로 제외해 확인
프록시로 처리할 수 있는 요청을 현재 선택한 프록시로 보냅니다. Config에서의 결과와 비교할 때 사용할 수 있습니다. 서버 비밀번호, TLS, 전송 매개변수 오류를 해결하지는 않으며, 전체 연결 테스트를 대신하지도 않습니다.
적합한 경우: 같은 서버에서 라우팅 규칙이 문제인지 임시로 확인할 때
Direct: 직접 연결 결과 비교
요청을 직접 연결 방식으로 처리합니다. 이때 웹페이지가 열려도 방금 가져온 서버가 작동한다는 뜻은 아닙니다. 해당 요청이 서버를 사용하지 않았을 수도 있습니다.
적합한 경우: 로컬 네트워크의 기본 연결을 확인하고 짧은 문제 해결 테스트를 할 때
규칙 구성에서 DOMAIN-SUFFIX는 도메인 접미사를 일치시키고, GEOIP와 IP-CIDR은 해당 IP 조건에 사용됩니다. FINAL은 앞선 규칙에 일치하지 않을 때 기본 처리를 담당합니다. 이는 네 가지 공유 링크의 쿼리 매개변수가 아니며 서버를 가져온다고 사용 목적에 맞춰 자동으로 생성되지도 않습니다. 규칙 구성에 관해 더 알아보려면 사용 안내 또는 문제 해결 매뉴얼을 확인하세요.
6. 가져오기 및 업데이트 관련 자주 묻는 질문
링크를 복사했는데 서버가 표시되지 않습니다. 프로토콜이 잘못된 건가요?
복사한 내용이 프로토콜 접두사부터 시작하는지, ‘가져오기를 누르세요’ 같은 안내 문구가 섞이지 않았는지, 메신저가 줄바꿈을 넣지 않았는지 확인하세요. Home → +로 돌아가 추가 유형을 확인합니다. 단일 공유 링크는 서버 정보로 처리하고 HTTPS 구독은 Subscribe를 선택합니다. 계속 인식되지 않으면 원본 전체 링크를 확인하고 접두사를 임의로 바꾸지 마세요.
QR 코드는 스캔되는데 왜 연결되지 않나요?
스캔에 성공했다는 것은 QR 코드의 텍스트를 읽을 수 있다는 뜻일 뿐입니다. 먼저 Home에서 항목을 열어 포트가 온전히 입력되었는지 확인하고 UUID 또는 비밀번호, SNI, WebSocket 경로 등의 필드를 점검하세요. QR 코드 내용이 만료되었거나 웹페이지 주소만 들어 있을 수도 있습니다. 스캔 성공 메시지를 서버 사용 가능 여부를 확인한 결과로 간주하지 마세요.
지연 시간은 표시되는데 웹페이지가 열리지 않으면 어떻게 하나요?
지연 시간 결과만으로 인증, DNS, TLS, 대상 웹사이트까지의 전체 접속 과정을 확인할 수는 없습니다. 먼저 방금 점검한 서버가 선택되어 있는지 확인한 뒤 Global Routing → Proxy와 Config의 결과를 임시로 비교하세요. Config에서만 문제가 있으면 규칙이 적용되는지 확인합니다. 둘 다 실패한다면 표시 이름만 바꾸지 말고 인증, TLS, 전송 매개변수를 계속 점검하세요.
구독 업데이트 후 이름이 같은 항목이 생겼습니다. 어떤 항목을 삭제해야 하나요?
먼저 Home에서 독립 항목과 구독 소스에 속한 항목을 구분한 다음 주소, 포트, 프로토콜을 비교하세요. 이름이 같아도 접속 정보가 같다는 뜻은 아닙니다. 기존 독립 항목이 더 이상 필요하지 않은지 확인한 뒤 삭제하세요. 같은 구독을 두 번 추가한 경우에는 유효성을 확인한 소스만 남겨 이후 두 목록이 따로 업데이트되는 일을 방지하세요.
구독 주소가 시간 초과됩니다. 포트를 443으로 바꿔도 되나요?
기존 매개변수를 추측한 포트로 바꾸지 마세요. HTTPS 구독 주소에 접속하는 포트와 목록에 있는 서버의 연결 포트는 서로 다릅니다. 먼저 현재 네트워크에서 해당 소스에 접근할 수 있는지, URL이 완전한지, token이 유효한지 확인하세요. 페이지가 응답하더라도 로그인 페이지가 반환되면 구독 업데이트에 성공한 것으로 볼 수 없습니다.
7. 최종 확인: 형식, 소스 유효성, 실제 요청 결과
가져오기를 마친 뒤 ‘텍스트를 인식했는지’, ‘서버 설정이 올바른지’, ‘요청이 예상한 경로로 실제 처리되는지’를 각각 확인해야 합니다. 어느 하나도 다른 확인을 대신할 수 없습니다. 가져오기 성공은 로컬 기록이 만들어졌다는 뜻일 뿐입니다. 새로고침 성공은 원격 콘텐츠를 가져왔다는 뜻일 뿐이며, 실제 접속 결과는 서버 상태, 현재 네트워크, DNS, 라우팅 설정에 따라 달라집니다.
- 링크 유형: 단일 서버 공유 링크, 새로고침할 수 있는 구독, 규칙 구성 주소 중 무엇인지 확인합니다.
- 인증 및 전송: 프로토콜, 주소, 포트, 비밀번호 또는 UUID와 TLS, SNI, Host, path 등 필요한 항목을 확인합니다.
- 소스 및 업데이트: 구독 소스가 유효한지, 독립 항목을 자동 업데이트되는 구독 항목으로 잘못 알고 있지 않은지 확인합니다.
- 라우팅 및 테스트: Global Routing이 현재 구성과 일치하는지 확인하고 실제 웹 요청으로 점검합니다. 지연 시간만 확인해서는 안 됩니다.
- 자격 증명 보호: 전체 공유 링크, QR 코드, token이 포함된 구독 주소를 공개하지 마세요. 유출되었다면 현재 사용하는 서비스에서 해당 자격 증명을 조치하세요.
다음 단계: 한 번에 한 계층씩 변경
원본 링크를 보관하고 가져온 필드를 확인하세요. 필드가 올바른지 확인한 뒤 연결을 점검하고, 연결이 확인된 다음에 규칙을 조정합니다. 포트, TLS, Global Routing을 동시에 바꾸지 마세요. 그래야 접속이 복구되더라도 어떤 변경이 효과가 있었는지 파악할 수 있습니다.