1 왜 변환이 필요한가
Clash 계열 클라이언트(Clash Verge Rev, FlClash, Mihomo 데몬 등)는 기본적으로 구조화된 YAML 설정을 입력으로 받습니다. 공급자 대시보드에 적힌 «구독 주소»가 이미 proxies·proxy-groups·rules를 포함한 완전한 프로필이라면 그대로 URL 가져오기만 하면 되지만, 실무에서는 Shadowsocks·VMess·VLESS·Trojan 등 개별 URI가 한 줄씩 모인 텍스트를 Base64로 감싼 형태로 내려주는 경우가 흔합니다. 이때 클라이언트는 내용을 해석하지 못해 노드 목록이 비거나 오류만 뜹니다.
구독 변환은 그 원시 데이터를 Clash 문법의 proxies 블록과 선택적으로 proxy-groups까지 바꾸는 과정입니다. 변환기가 규칙까지 덧붙이면 편하지만, 불필요하게 긴 rules는 지연과 메모리를 키울 수 있으므로 노드만 뽑아 기존 규칙 템플릿에 붙이는 방식이 더 깔끔한 경우도 많습니다. 서버에서 Mihomo만 돌리는 분은 Linux Mihomo 설치 가이드의 최소 YAML에 변환 결과를 합치면 같은 패턴으로 운영할 수 있습니다.
2 구독·링크 형식 이해
대표적으로 다음과 같은 패턴이 있습니다. 클라이언트 화면에 어떤 오류가 나는지에 따라 원인을 좁히는 데 도움이 됩니다.
- Shadowsocks URI:
ss://로 시작하며 암호·서버 정보가 Base64로 인코딩된 경우가 많습니다. - VMess / VLESS:
vmess://,vless://등으로 표현되고 JSON을 Base64로 싼 형태가 일반적입니다. - Trojan:
trojan://뒤에 비밀번호와 호스트가 붙는 단순 URI가 흔합니다. - 범용 구독 텍스트: 위 URI들이 줄바꿈으로 이어지고 전체가 다시 Base64로 패킹된 «한 덩어리» 링크. 디코딩하면 텍스트 노드 리스트가 나옵니다.
- 이미 Clash YAML: 파일 상단에
proxies:또는proxy-providers:가 보이면 변환 없이 그대로 쓰거나 일부만 병합하면 됩니다.
공급자가 Quantumult·Surge 전용 등 다른 앱 이름을 붙인 구독을 준 경우에도, 내용이 사실상 동일한 URI 묶음이면 Sub-Converter의 소스 타입만 맞추면 Clash 쪽으로 돌릴 수 있는 경우가 많습니다. 다만 서명·파라미터가 비표준이면 변환기 버전을 올리거나 수동으로 한두 노드를 YAML에 적어 넣어야 할 수 있습니다.
3 Clash YAML에서 꼭 맞춰야 할 부분
변환 결과를 그대로 파일로 저장해도 되고, 기존 설정의 일부로 붙여도 됩니다. 최소한 다음 키의 이름 일치를 확인하세요.
proxies:각 노드의name은 한글·공백·특수문자에 따라 일부 클라이언트에서 깨질 수 있으니 가능하면 ASCII 위주로 유지합니다.proxy-groups:의proxies목록에 적힌 문자열이 위name과 정확히 같아야 선택 그룹이 동작합니다.rules:에서PROXY같은 태그는 실제 그룹 이름과 같아야 합니다. 변환기가 기본으로 쓰는 그룹명을 바꿨다면 규칙 쪽도 함께 고쳐야 합니다.
Mihomo(Clash Meta) 전용 기능을 쓰려면 출력 target을 meta 계열로 두는 편이 안전합니다. 구형 Clash Premium만 쓰는 환경이면 clash 타겟을 선택해 호환 범위를 맞춥니다. 혼합해서 쓰는 가정이 어렵다면 항상 Meta 계열 클라이언트와 동일한 target으로 통일하는 것이 디버깅 비용을 줄입니다.
4 Sub-Converter로 변환하는 절차
Sub-Converter는 널리 쓰이는 오픈 소스 백엔드로, 구독 URL이나 로컬 원문을 받아 Clash 형식의 YAML 또는 링크로 돌려줍니다. 배포 방식은 공개 웹 인스턴스, 자신의 서버·NAS에 Docker로 설치, 바이너리 직접 실행 등이 있습니다. 공개 인스턴스는 편하지만 아래 보안 절을 반드시 읽고 판단하세요.
요청 시 자주 쓰는 파라미터 개념
구체적인 엔드포인트 문자열은 배포마다 다르지만, 개념은 공통입니다. source(또는 url)에 원본 구독 주소를 넣고, target에 clash·clashr·메타 변형 등 원하는 출력 프로필을 지정합니다. list 옵션으로 URI 목록만 넣을지, 노드 이름 규칙을 바꿀지 등을 조정할 수 있는 배포도 많습니다. 문서화된 예시가 있는 공식 저장소의 README를 한 번 훑으면 같은 효과를 로컬 API로 재현하기 쉽습니다.
# Run a local converter API (adjust image tag to a trusted release)
docker run -d --name subconverter --restart=unless-stopped -p 25500:25500 tindy2013/subconverter:latest
로컬에 띄운 뒤에는 브라우저나 curl로 생성 URL을 호출해 YAML을 파일로 저장하고, 편집기에서 proxy-groups와 rules를 손으로 다듬습니다. 자동 갱신을 원하면 클라이언트의 원격 프로필 URL에 변환기가 만들어 준 최종 구독 주소를 넣고 주기적으로 새로고침하면 됩니다.
5 온라인 변환과 자체 호스팅의 선택
온라인 변환 페이지에 원본 구독 URL을 붙여 넣으면 몇 초 만에 결과를 얻을 수 있습니다. 그러나 그 순간 구독 토큰이 제3자 서버 로그에 남을 수 있다는 점을 전제해야 합니다. 신뢰할 수 없는 사이트에 실제 결제한 구독 주소를 넣는 것은 노드 정보 유출·악용 위험이 있으므로, 중요한 프로필은 반드시 자체 호스팅하거나 공급자가 제공하는 «Clash 전용» 링크를 쓰는 편이 낫습니다.
자체 호스팅은 초기 설정 비용이 있지만, 이후에는 동일한 LAN이나 VPS 안에서만 변환이 이뤄져 외부로 원문 구독이 나가지 않게 설계할 수 있습니다. 회사 정책상 외부 SaaS를 쓸 수 없는 환경에서도 이 경로가 유일한 해법인 경우가 많습니다.
6 기존 프로필과 병합하는 방법
변환기가 내놓은 결과에 긴 rules와 원치 않는 광고 차단 목록이 붙어 있다면, 편집기에서 proxies: 블록만 잘라 내어 자주 쓰는 베이스 YAML 아래에 붙이는 방식이 관리가 쉽습니다. proxy-providers:로 원격에서 노드만 주기적으로 당겨 오고, 로컬 rules는 ACL4SSR 같은 Rule Provider로 나누는 패턴도 많이 씁니다.
병합 후에는 반드시 YAML 들여쓰기가 깨지지 않았는지 확인하세요. Tab과 스페이스를 섞으면 파서가 조용히 실패하거나 일부 키를 무시합니다. 노드 이름이 중복되면 그룹에서 혼선이 나므로, 변환기 옵션으로 접두사를 붙이거나 수동으로 이름을 바꿉니다.
proxies: 키를 같은 파일에 두 번 쓰면 뒤쪽이 앞을 덮어쓰거나 파서 오류가 납니다. 반드시 한 블록 안에 리스트 항목을 이어 붙이거나 provider로 분리하세요.
7 클라이언트에 넣는 실무 경로
GUI 클라이언트에서는 보통 «프로필 가져오기» 또는 «원격 구독»에 변환기가 출력한 최종 HTTPS 주소를 넣습니다. 로컬 전용이라면 생성된 YAML을 파일로 저장한 뒤 «로컬 파일»로 불러오면 됩니다. 안드로이드 FlClash 사용자는 FlClash 완전 설정 튜토리얼의 구독 단계와 조합하면 같은 흐름을 모바일에서도 재현할 수 있습니다.
데스크톱에서 한 번에 끝내고 싶다면 사이트 다운로드 페이지에서 Clash Verge Rev 등 구독 관리가 된 앱을 고른 뒤, 변환 URL을 구독 칸에 넣고 수동 새로고침으로 노드가 채워지는지 확인합니다. TUN·시스템 프록시는 앱별 메뉴가 다르므로, 변환만 성공했다고 해서 즉시 전역 프록시가 켜지는 것은 아닙니다.
자동 업데이트 주기는 너무 짧게 두면 공급자 측에서 빈도 제한을 걸 수 있으므로 12~24시간 정도가 무난한 기본값입니다. 긴급히 노드를 바꿔야 할 때만 수동 갱신을 누르는 습관을 들이면 안정적입니다.
8 문제 해결 체크리스트
- 가져오기 후 노드가 비어 있음: 원본 링크가 만료됐거나 IP가 차단됐는지 브라우저에서 직접 열어 본문이 내려오는지 확인합니다. 변환기 로그에 4xx·5xx가 찍히면 URL 인코딩이 깨졌을 수 있으니 이중 인코딩 여부를 점검합니다.
- 연결은 되는데 규칙이 이상함: 변환기가 붙인 기본 규칙이 로컬 대역을 프록시로 보내고 있지 않은지,
GEOIP·rule-providers경로가 클라이언트에서 로드되는지 확인합니다. - 특정 프로토콜만 실패: 클라이언트 코어가 Meta인지 구형 Clash인지에 따라 지원 목록이 다릅니다. target을 Meta 쪽으로 다시 변환하거나 클라이언트를 업데이트합니다.
- DNS만 이상함: 변환 결과에
dns:블록이 포함돼 기존 설정과 충돌할 수 있습니다. 필요한 키만 골라 합치거나 DNS 유출 방지 가이드의 권장 구조에 맞춥니다.
9 정리
SS·V2Ray·Trojan 계열 원시 구독을 Clash YAML로 바꾸는 핵심은 신뢰 경로에서의 변환과 출력 target·프록시 그룹 이름의 일관성입니다. 온라인 도구는 빠르지만 구독 URL이 외부로 새는 트레이드오프가 있으므로, 장기적으로는 Docker 한 컨테이너라도 로컬·VPS에 두는 구성이 마음이 편합니다. 변환 결과에서 꼭 필요한 proxies만 남기고 규칙은 자신이 이해하는 템플릿을 쓰면, 이후 장애 때 원인 분석도 훨씬 빨라집니다.
브라우저용 단순 프록시 확장과 비교하면, Clash 생태계는 한 번 YAML·구독 흐름을 잡아 두면 데스크톱·서버·모바일까지 같은 모델로 확장하기 좋습니다. 변환만 마친 상태에서도 실제 체감은 클라이언트 품질과 DNS·TUN 설정에 크게 좌우되는데, GUI 제품은 규칙 편집·로그·업데이트가 한 화면에 모여 있어 운영 부담이 적은 편입니다. 무료로 제공되는 최신 클라이언트를 골라 규칙 분할과 구독 갱신을 같이 다루면, 매번 수동으로 URI를 붙여 넣던 시절보다 훨씬 안정적인 일상 연결을 기대할 수 있습니다.