링크의 시작 부분을 확인한 다음 가져오기 방법을 선택하세요. HTTP 또는 HTTPS 구독 주소는 구독 그룹에 등록하고, VMess·VLESS 공유 링크는 클립보드에서 가져옵니다. 클라이언트를 처음 설정하거나, 추가 후 노드가 보이지 않거나, 업데이트 중 형식 오류가 발생한 경우에 유용합니다. 단계별로 따라 하면 주소와 구독 본문을 구분하고, 구독을 업데이트한 뒤 문제 원인이 네트워크 요청인지 콘텐츠 파싱인지 확인할 수 있습니다.
1. 구독 주소와 노드 공유 링크 구분하기
‘V2Ray 링크’가 하나의 고정된 형식을 뜻하는 것은 아닙니다. 구독 주소는 설정 목록을 가져오는 주소로, 보통 https://로 시작합니다. 노드 공유 링크에는 연결 매개변수가 포함되며, 일반적으로 vmess:// 또는 vless://로 시작합니다. 두 링크는 클라이언트에서 가져오는 경로가 다릅니다. 구독 주소를 노드로 가져오면 사용할 수 있는 설정이 추가되지 않는 경우가 많습니다.
| 받은 내용 | 구분 방법 | 사용할 메뉴 |
|---|---|---|
| 구독 주소 | 대개 서비스 제공자가 구독 주소로 안내하는 HTTPS URL | 구독 그룹 설정에 등록한 뒤 업데이트 |
| VMess 공유 링크 | 보통 vmess:// 뒤에 인코딩된 매개변수가 이어집니다 | 클립보드에서 가져오기 |
| VLESS 공유 링크 | vless:// 뒤에 사용자 식별자, 주소, 포트, 쿼리 매개변수가 포함됩니다 | 클립보드에서 가져오기 |
| 구독 본문 | 여러 공유 링크가 줄마다 있거나 링크 목록 전체를 인코딩한 텍스트 | 가능하면 해당 구독 주소를 사용하고, 본문만 있다면 지원되는 형식으로 가져오기 |
HTTPS로 시작한다고 해서 무조건 구독 주소인 것은 아닙니다. 계정 관리 페이지, 결제 페이지, 로그인 페이지도 HTTPS를 사용합니다. 브라우저 주소창의 계정 페이지 URL이 아니라 서비스에서 ‘구독 주소’로 명시한 값을 복사하세요. 구독 URL에는 액세스 토큰이 포함될 수 있으므로 전체 주소를 비공개로 관리해야 합니다.
2. v2rayN 데스크톱: 그룹을 추가한 뒤 구독 업데이트
v2rayN의 구독 관리는 메인 창의 ‘구독 그룹’ 메뉴에서 할 수 있습니다. 중국어 인터페이스에서는 보통 ‘订阅分组’ → ‘订阅分组设置’ 순서로 이동합니다. 버전에 따라 메뉴 문구가 조금 다를 수 있지만, 이름·주소·업데이트 옵션이 있는 그룹 목록을 찾으세요. 서버를 수동으로 추가하는 창과는 다릅니다.
- 전체 주소를 복사합니다. 서비스 제공자가 안내한 구독 URL을 복사하고 쿼리 매개변수를 그대로 유지하세요. 앞뒤의 따옴표나 설명 문구, 줄바꿈은 포함하지 마세요.
- 구독 그룹을 만듭니다. ‘订阅分组’ → ‘订阅分组设置’를 열고 ‘添加’를 선택하세요. 이름에는 ‘일반 구독’처럼 알아보기 쉬운 값을 입력하고 주소 칸에 전체 URL을 붙여 넣습니다. 별도 안내가 없는 항목은 기본값으로 두세요.
- 설정을 저장합니다. 확인을 누른 뒤 메인 창으로 돌아갑니다. 이 단계에서는 구독 주소만 등록된 상태이므로 목록이 비어 있어도 오류라고 단정할 수 없습니다.
- 설정을 가져옵니다. ‘订阅分组’ → ‘更新全部订阅(不通过代理)’를 선택하세요. 특정 그룹만 업데이트하려면 화면에 표시된 현재 그룹 업데이트 항목을 선택해 다른 출처의 설정을 잘못 변경하지 않도록 합니다.
- 결과를 확인합니다. 방금 만든 그룹으로 전환해 노드 이름과 프로토콜이 표시되는지 확인한 다음, 사용할 노드를 선택하세요. ‘업데이트 성공’이 모든 노드의 연결 성공을 뜻하는 것은 아닙니다.
구독 서버에 프록시를 통해서만 접속할 수 있고 이미 사용할 수 있는 노드가 있다면 ‘更新全部订阅(通过代理)’를 선택할 수 있습니다. 반드시 필요한 설정은 아닙니다. 사용할 프록시가 없는 상태에서 프록시를 통해 업데이트하면 오히려 실패할 수 있습니다. 먼저 직접 연결로 시도하고, 오류 내용을 확인한 뒤 업데이트 방식을 바꾸세요. 한 번에 하나의 조건만 변경하는 것이 좋습니다.
3. v2rayNG 안드로이드: 구독 설정과 클립보드 가져오기는 별도로 사용
v2rayNG는 Xray 코어를 사용합니다. 가져오기는 클라이언트 화면에서 진행하고, 이후 연결은 코어가 처리합니다. 구독을 추가할 때 연결 서비스를 먼저 실행하거나 VPN 권한을 미리 허용할 필요는 없습니다. 프록시 연결을 시작할 때 시스템에서 필요한 권한을 요청합니다.
- 구독 관리 화면을 엽니다. 메인 화면 오른쪽 위의 ‘⋮’ 메뉴에서 ‘订阅设置’를 선택하세요. 일부 버전에서는 ‘订阅分组设置’라고 표시됩니다.
- 구독을 추가합니다. 구독 화면에서 ‘+’를 누르고 메모와 구독 URL을 입력한 뒤 확인 또는 저장 아이콘을 누르세요. 단일
vless://링크를 구독 URL 칸에 입력하지 마세요. - 메인 화면으로 돌아가 업데이트합니다. ‘⋮’ → ‘更新订阅’을 누르세요. ‘更新订阅(不通过代理)’와 ‘更新订阅(通过代理)’가 표시되면 현재 구독 서버에 직접 연결할 수 있는지에 따라 선택합니다.
- 설정을 선택하고 연결합니다. 목록에 노드가 표시되는지 확인한 뒤 하나를 선택하고 연결 버튼을 누르세요. 처음 연결할 때는 시스템 VPN 권한 안내를 읽고 승인해야 합니다.
VMess 또는 VLESS 공유 링크 하나만 받은 경우, 먼저 링크를 복사한 다음 메인 화면에서 ‘+’ → ‘从剪贴板导入’를 선택하세요. QR 코드에 노드 링크가 실제로 포함된 경우에는 QR 코드 가져오기를 사용할 수 있습니다. 계정 웹페이지의 QR 코드가 노드 설정을 담고 있는 것은 아닙니다.
구독 주소 가져오기
- 주소 접두사
- 보통
https:// - 데스크톱 메뉴
- 구독 그룹 → 구독 그룹 설정
- 안드로이드 메뉴
- ⋮ → 구독 설정
- 다음 단계
- 저장한 뒤 구독 업데이트
같은 출처의 설정 변경 사항을 계속 가져올 때 적합합니다.
노드 링크 가져오기
- 주소 접두사
vmess://또는vless://- 데스크톱 메뉴
- 메인 창 → 클립보드에서 가져오기; 일반적으로 Ctrl+V 사용
- 안드로이드 메뉴
- + → 클립보드에서 가져오기
- 다음 단계
- 가져온 노드를 선택해 연결 테스트
한 번만 가져올 때 적합하며, 이후 업데이트할 구독 출처는 등록되지 않습니다.
4. Base64 구독: 바깥 목록과 안쪽 매개변수는 다릅니다
일반적인 구독 응답은 여러 공유 링크를 줄바꿈으로 연결한 뒤 전체 텍스트를 Base64로 인코딩합니다. 클라이언트가 URL에 요청을 보내면 바깥 텍스트를 디코딩해 링크 목록을 얻고 각 줄의 프로토콜을 판별합니다. 서비스에 따라 디코딩할 필요 없는 URI 목록을 그대로 반환하기도 하며, 특정 클라이언트 전용 형식도 있습니다. 따라서 모든 구독이 Base64 텍스트인 것은 아닙니다.
Base64는 인코딩 방식이지 암호화가 아닙니다. 표준 인코딩에는 +, /와 끝부분의 패딩 문자 =가 포함될 수 있습니다. URL 안전 변형에서는 이 가운데 두 문자를 -, _로 바꾸며, 구현에 따라 패딩을 생략하기도 합니다. 등호가 있는지 없는지만으로 콘텐츠의 유효성을 판단할 수는 없습니다. 복사할 때 임의로 문자를 바꾸거나 끝부분을 삭제하지 마세요.
- 바깥쪽 인코딩: 전체 구독 목록을 담으며, 디코딩하면 보통 여러 줄의 프로토콜 링크가 나옵니다.
- VMess 안쪽 인코딩: 일반적인
vmess://공유 형식은 단일 노드의 JSON 매개변수도 인코딩하므로 한 번 더 디코딩해야 할 수 있습니다. - VLESS 매개변수: 일반적으로 URI의 주소, 포트, 쿼리 매개변수로 표현하며 VMess의 JSON 규칙으로 읽지 않습니다.
- 응답 유형: 로그인 페이지, 오류 안내 또는 다른 설정 형식이 반환되면 HTTP 요청은 성공해도 노드 파싱에는 실패할 수 있습니다.
확인 순서: 먼저 본문을 확인하고 인코딩을 점검하세요
‘유효한 노드가 없음’ 메시지가 표시되면 먼저 서비스에서 v2rayN 또는 v2rayNG가 인식할 수 있는 구독 형식을 제공하는지 확인하세요. 링크 목록을 받은 것이 확실할 때만 잘림 여부, 인코딩, 프로토콜 지원을 점검하세요. 같은 텍스트를 반복해서 Base64로 인코딩하지 마세요.
5. VMess·VLESS 공유 형식: 빠뜨리면 안 되는 항목
일반적인 VMess 공유 링크는 vmess:// 뒤에 Base64로 인코딩한 JSON을 포함합니다. 아래는 구조를 설명하기 위해 디코딩한 예시이며, 예시 전용 도메인과 가상의 식별자를 사용하므로 실제 연결에는 사용할 수 없습니다. 여기서 v는 공유 형식의 버전 필드이지 클라이언트 버전이나 서버 코어 버전이 아닙니다.
{
"v": "2",
"ps": "예시 노드",
"add": "node.example.invalid",
"port": "443",
"id": "12345678-1234-4234-8234-123456789abc",
"aid": "0",
"scy": "auto",
"net": "ws",
"type": "none",
"host": "node.example.invalid",
"path": "/ws",
"tls": "tls",
"sni": "node.example.invalid"
}
add와 port는 서버 주소와 포트를 지정하고, id는 사용자 식별자, net은 전송 방식을 지정합니다. 예시의 WebSocket 경로는 /ws이고 TLS 서버 이름은 node.example.invalid입니다. 이 값은 서버의 실제 설정과 일치해야 하며, 흔히 쓰이는 형식이라는 이유로 임의 변경해서는 안 됩니다.
VLESS 공유 링크는 일반 URI와 비슷한 형식입니다. 아래 예시도 구조를 확인하기 위한 용도일 뿐이며, 실제 설정에는 서비스 제공자가 생성한 전체 링크를 사용해야 합니다.
vless://[email protected]:443?encryption=none&security=tls&type=ws&host=node.example.invalid&path=%2Fws&sni=node.example.invalid#예시 노드
@앞에는 사용자 식별자가, 뒤에는 서버 주소와 포트가 옵니다.?뒤는 쿼리 매개변수이고#뒤에는 보통 표시 이름이 옵니다.type=ws는 WebSocket을 지정하며,path=%2Fws를 디코딩하면/ws가 됩니다. 퍼센트 인코딩과 Base64는 서로 다른 방식입니다.encryption=none은 VLESS 매개변수이며 전송에 TLS를 사용하지 않는다는 뜻은 아닙니다. 전송 보안 방식은security와 관련 필드로 확인해야 합니다.- 실제 링크가 REALITY를 사용한다면 공개 키, 짧은 ID, 서버 이름, 지문, 해당되는 Flow 매개변수를 그대로 유지하세요. 필드 이름과 호환성은 공유 형식과 클라이언트 버전에 따라 달라집니다.
프로토콜 이름이 같아도 어떤 조합이든 사용할 수 있는 것은 아닙니다. v2rayNG는 Xray 코어를, v2flyNG는 V2Fly 코어를 사용하며, v2rayN에서 쓸 수 있는 기능은 선택한 코어에 따라 달라집니다. 지원되지 않는 매개변수가 있다면 안전 필드를 삭제해 억지로 가져오려 하지 말고 클라이언트와 코어의 지원 여부를 확인하세요.
6. 구독 업데이트 실패, 빈 노드 목록, 연결 오류 해결
문제를 구독 요청, 노드 파싱, 서버 연결의 세 단계로 나눠 확인하세요. 시간 초과가 발생하면 먼저 요청 경로를 점검하고, 업데이트는 성공했지만 노드가 없다면 응답 형식을 확인하세요. 노드는 표시되지만 연결되지 않는다면 서버 매개변수와 네트워크를 살펴보세요. 구독 주소만 바꿔서는 모든 연결 오류를 해결할 수 없습니다.
구독을 저장했는데 목록이 비어 있는 이유는 무엇인가요?
저장은 구독 출처만 기록합니다. v2rayN에서는 메인 창으로 돌아가 ‘구독 그룹’ 메뉴에서 업데이트하고, v2rayNG에서는 메인 화면의 ‘⋮’ 메뉴에서 구독을 업데이트하세요. 그다음 현재 그룹 필터를 확인해 노드가 다른 그룹에 추가되어 표시되지 않는 상황이 아닌지 살펴보세요.
업데이트 시간이 초과되면 프록시를 통한 업데이트를 켜야 하나요?
먼저 프록시 없이 업데이트를 시도하세요. 현재 네트워크에서 구독 서버에 접속할 수 없지만 사용할 수 있는 노드가 있다면 프록시를 통한 업데이트로 전환하세요. 사용할 수 있는 노드가 없다면 네트워크, 시스템 시간, 주소 전체가 입력되었는지부터 확인하세요. 연결할 프록시가 없는 상태에서 프록시 업데이트만 시도하지 마세요.
요청은 성공했는데 인식 가능한 노드가 없다는 메시지가 표시되나요?
계정 웹페이지가 아니라 구독 주소를 복사했는지 확인하고, 제공업체에서 사용하려는 클라이언트에 맞는 형식을 다시 선택하세요. 클라이언트 로그에 지원되지 않는 프로토콜이나 파싱 실패가 기록되었는지도 살펴보세요. 로그인 페이지, 만료 안내, 빈 본문은 다시 인코딩해도 유효한 구독으로 바뀌지 않습니다.
노드를 가져왔는데 웹페이지가 열리지 않는 이유는 무엇인가요?
먼저 노드를 선택하고 연결을 시작한 뒤 실행 로그를 확인하세요. 데스크톱에서는 앱이 시스템 프록시나 설정된 다른 트래픽 처리 방식을 사용하도록 해야 합니다. 안드로이드에서는 VPN 서비스가 실행 중인지 확인하세요. 이어서 서버 주소, 포트, TLS 이름, 전송 경로를 점검하세요. 지연 시간 테스트 결과만으로 모든 서비스가 정상 작동한다고 판단하지 마세요.
확인을 부탁하려고 구독 링크를 다른 사람에게 보내도 되나요?
전체 URL, 사용자 식별자, 노드 공유 링크를 공개하지 마세요. 도움을 요청할 때는 클라이언트 버전, 업데이트 방식, 민감 정보를 가린 오류 내용만 제공하세요. 전체 구독 주소가 이미 공개됐다면 서비스 제공자의 재설정 기능으로 토큰을 교체한 다음 클라이언트에 저장된 주소도 업데이트하세요.
업데이트 전에 현재 사용할 수 있는 설정을 기록하고, 업데이트 후에는 먼저 그룹 내용을 확인한 다음 항목별로 테스트하세요. 로그를 확인하면 DNS 조회 실패, 연결 시간 초과, TLS 핸드셰이크 오류 등을 파악하는 데 도움이 됩니다. 화면을 공유하기 전에는 구독 토큰, 서버 정보, 사용자 식별자를 가리세요. 자세한 설정 방법은 구독 가져오기 가이드를, 연결 문제는 문제 해결 FAQ를 참고하세요.