2026.05.06 개념 정리 예상 읽기 시간 8분

Clash 구독 링크 주요 형식 총정리: Base64, Clash YAML, sing-box 간 상호 변환 방법

구독 서비스에서 가장 흔히 쓰이는 세 가지 형식과 구분 방법을 정리하고, 구독 변환 서비스의 작동 원리와 자체 구축 변환의 기본 개념을 설명하며, 각 형식이 클라이언트별로 어떻게 호환되는지 비교표로 정리합니다.

구독 링크의 본질

구독 서비스 제공업체가 사용자에게 주는 '구독 링크'는 노드 자체가 아니라 반복해서 접근할 수 있는 HTTP(S) 주소입니다. 클라이언트는 이 주소를 주기적으로 요청해 텍스트 데이터를 받아오고, 이를 노드 목록과 (있을 경우) 분기 규칙으로 해석합니다. 같은 구독 주소라도 반환되는 내용의 형식은 통일되어 있지 않으며, 이는 주로 서비스 제공업체가 사용하는 패널 소프트웨어, 클라이언트 유형을 판별하는 로직, 그리고 변환 서비스를 거쳤는지 여부에 따라 달라집니다. 그래서 같은 구독 링크를 Clash에 붙여넣으면 정상 작동하는데, 단일 노드만 인식하는 다른 클라이언트에 붙여넣으면 오류가 나는 경우가 생깁니다 — 링크가 잘못된 게 아니라 클라이언트가 반환된 콘텐츠의 형식을 인식하지 못한 것입니다.

형식 차이를 이해하고 있으면 구독 가져오기가 실패했을 때 문제가 어느 단계에서 발생했는지 빠르게 판단할 수 있습니다. 링크 자체가 만료됐는지, 서비스 제공업체가 해당 클라이언트를 지원하지 않는지, 아니면 변환 서비스를 한 번 더 거쳐야 하는지를 구분할 수 있습니다.

자주 쓰이는 세 가지 형식과 구분 방법

Base64 노드 목록

가장 오래되고 가장 널리 쓰이는 형식입니다. 구독 링크에 접속하면 Base64로 인코딩된 문자열이 반환되며, 이를 디코딩하면 vmess://, ss://, ssr://, trojan:// 같은 단일 노드 링크가 줄마다 하나씩 나열되어 있습니다. 이 형식에는 프록시 그룹이나 분기 규칙이 포함되어 있지 않으므로, 클라이언트는 노드 목록을 받은 뒤 자체 기본 정책에 따라 그룹을 생성합니다. Clash 생태계에 한정되지 않고 거의 모든 순수 프록시 클라이언트가 이 형식을 인식할 수 있어 호환성이 가장 좋지만, 기능은 가장 기본적인 수준에 그칩니다.

Clash YAML 구독

반환되는 내용은 proxies, proxy-groups, rules 등의 블록을 포함하는 완전한 YAML 설정 파일로, 직접 작성하는 config.yaml과 구조가 동일합니다. 서비스 제공업체 관리 패널이 Clash 규격에 맞춰 이 설정을 생성하며, 클라이언트는 다운로드 후 바로 사용할 수 있습니다. 분기 정책과 프록시 그룹 구성은 이미 제공업체가 미리 설계해 두었기 때문에 사용자는 받는 즉시 사용할 수 있습니다. 구분 방법은 간단합니다. 브라우저나 명령줄 도구로 링크에 접속했을 때 시작 부분이 port:, mode:, proxies: 같은 YAML 키워드라면 이 형식입니다.

sing-box JSON 설정

sing-box 코어가 널리 사용되면서 일부 서비스 제공업체는 sing-box의 outbounds, route 필드 구조에 대응하는 JSON 형식 구독을 추가로 제공하기 시작했습니다. 이런 구독은 sing-box 코어 또는 sing-box 설정 구조와 호환되는 클라이언트에서만 인식되며, Clash 코어 기반 클라이언트에는 그대로 사용할 수 없습니다. 반환 내용이 {로 시작하고 "outbounds" 필드가 보이는 것이 확실한 특징입니다.

동일한 서비스 제공업체라도 클라이언트 유형에 따라 다른 형식을 반환하는 경우가 많습니다. 요청 헤더에 Clash 식별 정보가 있으면 YAML을, 없으면 Base64 노드 목록을 반환하는 식입니다. 그래서 브라우저로 구독 링크를 직접 열었을 때 보이는 내용과 클라이언트가 실제로 받는 내용이 다를 수 있습니다.

구독 변환 서비스의 작동 원리

구독 변환 서비스(대표적인 오픈소스 구현으로 subconverter가 있습니다)는 본질적으로 중간 프록시 역할을 합니다. 적절한 요청 헤더로 원본 구독 링크에 먼저 접속해 노드 데이터를 받아온 뒤, 목표 형식에 맞춰 설정을 다시 생성해 클라이언트에 반환합니다. 전체 흐름은 "클라이언트 → 변환 서비스 → 원본 구독 주소 → 변환 서비스 → 클라이언트" 순이며, 변환 서비스는 중간에서 두 가지 작업, 즉 형식 변환과 규칙 적용을 처리합니다.

형식 변환은 Base64 노드 목록, sing-box JSON 등의 형식을 클라이언트가 인식할 수 있는 Clash YAML로 통일해서 '번역'하는 역할을 합니다. 규칙 적용은 변환 서비스에서 별도로 분기 규칙 템플릿(ACL4SSR 계열의 규칙 세트 등)을 지정할 수 있게 해주는 기능으로, 순수 노드에 기존 분기 정책을 그대로 씌워 생성된 구독 링크에 프록시 그룹과 규칙이 바로 포함되도록 해서 직접 작성할 필요가 없게 만듭니다. 사용할 때는 원본 구독 주소를 파라미터로 변환 서비스의 인터페이스 주소에 붙이고, 반환된 새 링크를 클라이언트에 입력하면 되며, 일반 구독을 입력하는 것과 사용 방법상 차이가 없습니다.

https://변환서비스도메인/sub?target=clash&url=원본구독링크&config=규칙템플릿주소

주의할 점은 변환 서비스 자체도 원본 구독 주소에 접속할 수 있어야 한다는 것입니다. 원본 구독이 특정 네트워크 환경에서만 접속 가능하다면 변환 과정이 네트워크 문제로 실패할 수 있으며, 이런 오류는 구독 링크의 만료 여부와는 무관합니다.

변환 서비스 자체 구축 기본 개념

공개 변환 서비스는 안정성과 개인정보 보호 두 가지 측면에서 우려가 있습니다. 인터페이스가 속도 제한을 받거나 서비스가 중단될 수 있고, 원본 구독 주소(보통 계정 관련 토큰을 포함)가 제3자 서버를 거치게 됩니다. 안정성과 개인정보 보호에 신경 쓰는 사용자라면 변환 서비스를 직접 구축할 수 있으며, 기본적인 절차는 다음과 같습니다.

  1. 실행 환경 준비

    장기간 온라인 상태를 유지할 수 있는 서버나 항상 켜져 있는 로컬 기기를 준비하고, 그에 맞는 실행 환경을 설치합니다(subconverter는 미리 컴파일된 바이너리를 제공하므로 별도의 언어 런타임을 설치할 필요가 없습니다).

  2. 변환 프로그램과 규칙 템플릿 다운로드

    subconverter 프로그램 본체와 장기간 사용할 분기 규칙 템플릿 파일을 받아 같은 디렉터리에 두고, 프로젝트에 포함된 설정 안내에 따라 리스닝 포트를 설정합니다.

  3. 서비스 실행 및 확인

    프로그램을 실행한 뒤 로컬 브라우저에서 http://127.0.0.1:포트/sub?target=clash&url=테스트구독주소에 접속해 YAML 내용이 정상적으로 반환되는지 확인합니다.

  4. 자체 변환 주소로 교체

    공개 변환 서비스의 도메인을 자신의 서버 주소로 교체합니다(리버스 프록시와 HTTPS를 함께 적용하는 것을 권장합니다). 이후 모든 구독은 자체 구축 서비스를 통해 변환되며, 원본 구독 주소는 더 이상 제3자를 거치지 않습니다.

변환 서비스를 직접 구축했을 때 유지 비용은 주로 규칙 템플릿 업데이트에서 발생합니다. 분기 규칙은 서비스 변화에 따라 계속 조정되므로 템플릿을 오랫동안 갱신하지 않으면 분기 정확도가 떨어질 수 있습니다. 상위 규칙 저장소와 정기적으로 동기화하는 것을 권장합니다.

형식별 클라이언트 호환성 비교

아래 표는 변환 서비스를 거치지 않는다는 전제 하에, 자주 쓰이는 클라이언트별로 세 가지 구독 형식을 직접 지원하는지 정리한 것입니다.

클라이언트 / 코어Base64 노드 목록Clash YAMLsing-box JSON
Clash(오리지널 코어)변환 후 사용 가능기본 지원미지원
Clash Meta / mihomo 코어변환 후 사용 가능기본 지원(확장 필드 포함)미지원
순수 프록시 클라이언트(단일 노드 링크만 인식)기본 지원미지원미지원
sing-box 코어 클라이언트변환 후 사용 가능미지원기본 지원

보다시피 Clash YAML은 Clash 코어 계열에서만 통용되며, sing-box 코어 기반 클라이언트에 그대로 넣으면 파싱에 실패합니다. 반대로 sing-box의 JSON 구독도 Clash 클라이언트에 직접 가져올 수 없습니다. 코어를 넘나들며 노드를 사용하려면 구독 변환은 선택이 아니라 반드시 거쳐야 하는 단계입니다.

클라이언트 코어 유형을 변경할 때(예: Clash에서 sing-box 기반 클라이언트로 전환), 먼저 서비스 제공업체가 두 형식의 구독 입구를 모두 제공하는지 확인하세요. 같은 링크가 서로 다른 코어에서도 통용된다고 가정하지 마세요.

Clash 클라이언트 받기

구독 형식을 정했다면 클라이언트에 구독 주소를 붙여넣기만 하면 바로 사용할 수 있습니다.

클라이언트 다운로드