프로토콜 종류 · 코어 호환성 · 사용 환경별 선택
프록시 프로토콜 및 코어 가이드.
서버에서 제공하는 항목을 확인하고, 코어가 이를 해석할 수 있는지 살펴본 뒤, 현재 네트워크에서의 실제 성능을 비교하세요.
클라이언트를 고르거나 구독을 이전하거나 노드 유형을 비교할 때 참고할 수 있도록, 프로토콜 설계 이유와 짝을 맞춰야 하는 필드, 플랫폼별 장단점을 정리했습니다. 첫 연결을 아직 완료하지 않았다면 입문 가이드에 따라 설치, 가져오기, 연결 확인을 마친 다음 필요한 항목을 찾아보세요.
SS / VMess / Trojan
전송 TCP / UDP / QUIC
설정 proxies / proxy-providers
1. 프로토콜 선택 순서
클라이언트, 코어, 프로토콜을 구분해서 보기
클라이언트는 노드 표시, 설정 가져오기, 시스템 프록시 관리, 필요한 권한 요청을 담당하는 조작 창구입니다. 코어는 설정을 해석하고 규칙을 적용해 연결을 수립하며, 프로토콜은 클라이언트와 서버가 데이터를 인증·캡슐화·전달하는 방식을 정합니다. 같은 화면에서 코어를 바꿀 수 있고, 하나의 코어를 여러 화면에서 사용할 수도 있습니다. 따라서 클라이언트 이름에 Clash가 들어간다고 해서 모든 Clash 설정을 지원하는 것은 아니며, 특정 노드가 반드시 연결된다고 볼 수도 없습니다.
노드는 프로토콜 하나만으로 구성되지 않습니다. 연결에는 보통 서버 주소, 포트, 인증 정보, 전송 방식, 암호화 또는 TLS 설정과 경로, 호스트 이름, 추가 옵션이 포함됩니다. VLESS라고 표시된 두 노드도 하나는 TCP, 다른 하나는 WebSocket을 사용할 수 있고, 인증서와 서버 구성도 서로 다를 수 있습니다. 비교하기 전에 노드 세부 정보를 열어 조건을 확인하세요. 목록의 유형 표시만 보면 회선 차이를 프로토콜 차이로 오해할 수 있습니다.
먼저 사용 가능 여부를 확인한 뒤 성능을 비교하기
첫째, 서비스 제공자가 실제로 어떤 유형을 제공하며 mihomo에서 바로 읽을 수 있는 설정인지 확인합니다. 둘째, 앱 스토어 설명만 보지 말고 클라이언트에서 현재 사용 중인 코어를 확인합니다. 셋째, 현재 네트워크에서 해당 전송 방식이 허용되는지 살펴봅니다. 특히 QUIC 기반 방식은 UDP 경로를 사용할 수 있어야 합니다. 이 조건을 모두 충족한 다음에야 웹 페이지 로딩 시간, 대용량 다운로드 안정성, 화상 회의 끊김 여부, 휴대폰 대기 후 연결 복구를 비교할 수 있습니다.
이 순서를 따르면 불필요한 반복 작업을 줄일 수 있습니다. 코어가 특정 유형을 인식하지 못한다면 속도 측정 주소를 바꿔도 설정 해석 오류는 해결되지 않습니다. 서버가 TCP만 수신한다면 클라이언트에서 UDP를 선택해도 서버에 지원 기능이 생기지 않습니다. 인증서 호스트 이름이 맞지 않으면 규칙 그룹을 바꿔도 TLS 핸드셰이크는 복구되지 않습니다. 가져오기, 해석, 연결, 앱 요청 중 어느 단계에서 실패했는지 먼저 확인한 뒤 해당 설정만 조정하세요. 한 번에 한 종류의 변수만 바꾸는 편이 클라이언트를 반복해서 재설치하는 것보다 효과적입니다.
연결 모드를 프로토콜 유형과 혼동하지 않기
규칙·전역·직접 연결 모드는 연결 경로를 정하고, 시스템 프록시와 TUN은 어떤 앱의 트래픽을 코어로 보낼지 결정합니다. 어느 것도 노드 프로토콜과 같지 않습니다. TUN을 켜면 시스템 프록시를 따르지 않는 앱의 트래픽도 규칙에 따라 처리할 수 있지만, SS가 Hysteria2로 바뀌거나 서버의 UDP 전달 기능이 자동으로 추가되는 것은 아닙니다. 반대로 제어 범위가 넓어지면 이전에는 드러나지 않던 DNS, 로컬 네트워크 접근, 다른 가상 네트워크 인터페이스와의 충돌이 나타날 수 있습니다.
일반 사용자는 먼저 가져올 수 있는 설정으로 안정적인 연결을 한 번 완료한 뒤 제어 범위를 단계적으로 넓히는 것이 좋습니다. 데스크톱과 모바일에서 클라이언트를 고를 때는 우선 추천 클라이언트인 Clash Plus를 살펴보세요. Linux 데스크톱에서는 다운로드 페이지에서 Clash Verge Rev 또는 FlClash를 선택하면 됩니다. 플랫폼별 다운로드 경로와 설치 형식은 클라이언트 다운로드에서 확인하세요. 여기서 추천하는 것은 사용을 시작할 창구일 뿐, 서로 다른 클라이언트에서 이름이 같은 노드의 회선 품질이 달라진다는 뜻은 아닙니다.
비교 기준도 미리 정해야 합니다. 웹 검색은 첫 응답 시간과 실패율, 대용량 파일은 지속 처리량, 원격 터미널은 입력 지연, 모바일 기기는 네트워크 전환과 백그라운드 복구를 살펴보세요. 목적 없는 종합 순위는 필요하지 않은 기능 때문에 관리 부담만 늘릴 수 있습니다. 프로토콜은 연결 경로의 일부일 뿐이며, 서버 부하, 출구 구간 혼잡, DNS 조회 위치, 앱 자체도 주요 병목이 될 수 있습니다.
2. SS와 VMess의 설계 차이
Shadowsocks: 간결한 프로토콜 구성
Shadowsocks는 흔히 SS라고 부르며, 암호화 프록시 전달을 중심으로 비교적 간단한 설정 구조를 갖습니다. 일반적으로 서버, 포트, 비밀번호, 암호화 방식이 필요합니다. 완전한 터널 관리 시스템처럼 모든 라우팅 정책을 담당하지는 않으므로 어떤 도메인은 직접 연결하고 어떤 연결은 프록시로 보낼지 클라이언트 규칙에서 정하는 경우가 많습니다. 역할이 분명해 기본 설정을 이해하기 쉽고 리소스가 제한된 기기에도 배포하기 편하지만, 실제 리소스 사용량은 구현, 알고리즘, 동시 연결 수, 트래픽 규모에 따라 달라집니다.
SS 설정을 살펴볼 때는 구형 스트림 암호화, 일반적인 AEAD 방식, Shadowsocks 2022 계열을 구분하세요. 단순히 이름만 바뀐 것이 아니라 키 형식과 구현 요구 사항도 다릅니다. 특히 2022 방식은 비밀번호가 해당 알고리즘의 인코딩 및 길이 조건을 충족해야 하므로 기억하기 쉬운 문구로 임의 대체할 수 없습니다. 코어에서 암호화 방식을 지원하지 않는다고 나오면 다른 항목으로 바꾸기보다 정확한 알고리즘 이름과 코어 지원 여부를 확인하세요.
SS에는 플러그인이 추가로 필요할 수도 있습니다. 서버에서 특정 플러그인을 요구한다면 주소, 비밀번호, 포트만 가져와서는 연결되지 않을 수 있으며, 클라이언트가 해당 플러그인과 옵션을 지원해야 합니다. 모바일 화면에서 공유 링크를 가져올 수 있다고 해서 링크에 포함된 모든 확장 기능을 구현한 것은 아닙니다. UDP도 양쪽 끝과 중간 네트워크에서 모두 지원해야 합니다. 웹은 되지만 게임이나 음성 통화가 안 된다면 비밀번호 오류로 단정하지 말고 UDP 전달과 트래픽 제어 범위를 확인하세요.
VMess: 인증과 전송의 조합
VMess는 V2Ray 생태계에서 나온 프로토콜로, 노드 설정에서 UUID를 사용자 식별자로 사용하는 경우가 많으며 프로토콜 인증과 하위 전송 방식을 조합합니다. TCP, WebSocket 등 지원되는 전송 방식과 TLS를 함께 사용하는 배포 구성이 흔합니다. 유연한 만큼 설정 항목도 많습니다. 주소와 사용자 식별자뿐 아니라 전송 이름, WebSocket 경로, 요청 호스트 이름, TLS 서버 이름이 서버 설정과 일치하는지 확인해야 합니다. 필드 하나만 빠져도 연결이 계속 대기 상태로 보일 수 있습니다.
일부 오래된 문서에는 0이 아닌 alterId와 구형 VMess 인증 방식이 나옵니다. 최신 설정에서는 AEAD 방식이 일반적이며, mihomo에서는 보통 alterId: 0으로 표시합니다. 가져오기를 통과시키려고 기존 설정의 값을 기계적으로 0으로 바꾸면 안 됩니다. 서버의 인증 방식도 일치해야 합니다. VMess는 시간 동기화도 필요하므로 시스템 시간이 크게 어긋나면 인증에 실패할 수 있습니다. 자격 증명이 맞는데 같은 유형의 노드가 모두 실패한다면 자동 시간 설정과 시간대 표시를 먼저 확인하세요.
| 확인 항목 | SS | VMess |
|---|---|---|
| 인증 핵심 정보 | 비밀번호 또는 지정된 형식의 키 | UUID와 일치하는 인증 방식 |
| 주요 차이 | 암호화 방식, 플러그인 옵션 | 전송 방식, TLS, 경로, 호스트 이름 |
| UDP 조건 | 양쪽 구현과 네트워크 경로 모두 지원해야 함 | 코어, 서버, 설정 모두 지원해야 함 |
| 마이그레이션 시 확인 사항 | 암호화 방식 이름과 키 형식 유지 | 인증 정보와 모든 전송 필드 유지 |
호환성과 오버헤드 이해하기
이미 안정적인 SS 또는 VMess 노드를 사용하고 있고 클라이언트가 설정을 온전히 해석하며 자주 쓰는 앱도 문제없이 작동한다면, 프로토콜 이름이 오래됐다는 이유만으로 이전할 필요는 없습니다. 안정된 설정은 예상 동작을 확인하기 쉽고 문제가 생겼을 때 점검 항목도 명확합니다. 마이그레이션이 필요한 이유는 코어 지원 종료, 필수 기능 부족, 서버 구성 변경, 현재 네트워크에서 반복적으로 확인되는 성능 문제여야 합니다. 한 번의 속도 측정 결과가 바뀌었다는 이유만으로 결정하지 마세요.
SS는 무조건 배터리를 적게 쓰고 VMess는 항상 오버헤드가 크다고 볼 수도 없습니다. TLS, 외부 전송 방식, 다중화, 연결 수, 하드웨어 암호화 지원 여부가 결과에 영향을 줍니다. 유휴 상태에서도 자주 확인하는 단순한 프로토콜이 적절히 절전하는 복잡한 설정보다 배터리를 많이 쓸 수 있고, 가까운 VMess 노드가 혼잡한 SS 노드보다 빠르게 응답할 수도 있습니다. 서로 다른 회선을 비교하면 노드 선택에는 도움이 되지만, 그것만으로 프로토콜의 우열을 증명할 수는 없습니다.
3. Trojan과 VLESS 연결 조건
Trojan: TLS 조건을 빠짐없이 확인하기
Trojan은 일반적으로 TLS 연결에 프록시 요청을 실어 보내고 비밀번호로 사용자를 인증합니다. 사용자가 놓치기 쉬운 부분은 비밀번호보다 주소와 인증서 이름의 관계입니다. 서버 주소는 도메인이나 IP일 수 있지만, TLS 핸드셰이크에 쓰이는 서버 이름은 서버 설정 및 인증서와 일치해야 합니다. 노드에 지정된 SNI, 인증서 체인, 포트는 한 세트로 확인하세요. 주소가 해석된다고 해서 TLS 조건까지 충족된 것은 아닙니다.
TLS 검증에는 인증서의 신뢰 여부, 이름 일치 여부, 유효 기간 등이 포함됩니다. 로그에 인증서 오류가 표시되면 기기 시간, 노드의 서버 이름, 서버 인증서 상태부터 확인하세요. 인증서 검증을 건너뛰면 일시적으로 연결될 수 있지만 서버 신원을 확인하는 중요한 절차가 생략되고, 구독에 잘못된 이름이 기록된 문제도 가려질 수 있습니다. 일상적으로 사용할 때는 검증을 유지하세요. 직접 구축한 환경이라면 올바른 인증서 또는 신뢰할 수 있는 인증서 체인을 설정해야 합니다.
Trojan에서 UDP 전달을 지원한다고 해서 클라이언트와 서버 사이에 독립적인 기본 UDP 통신 경로가 반드시 만들어지는 것은 아닙니다. 일반적인 구현은 UDP 데이터를 신뢰성 있는 연결에 캡슐화해 전송하므로 외부 연결의 패킷 손실과 대기열이 실시간 앱에 영향을 줄 수 있습니다. 웹은 되지만 음성 통화가 불안정하다면 앱의 UDP 트래픽이 클라이언트로 들어오는지, 노드가 전달을 허용하는지, 외부 전송이 혼잡한지 구분해 확인하세요. 노드 상세 정보의 UDP 스위치만 볼 일은 아닙니다.
VLESS: 경량 프로토콜도 외부 설정과 맞아야 함
VLESS도 V2Ray 관련 생태계에서 나온 프로토콜로, 비교적 가벼운 인증 및 전달 구조를 갖추며 UUID로 사용자를 식별하는 경우가 많습니다. 프로토콜 계층 자체에는 VMess와 같은 페이로드 암호화 방식이 없으므로 일반적으로 TLS 또는 이에 맞는 보안 전송을 사용합니다. ‘경량’이라는 말이 자동으로 더 안전하거나 빨라진다는 뜻은 아닙니다. 일부 역할을 외부 계층에 맡기는 구조이므로 노드를 고를 때 UUID와 주소뿐 아니라 보안 설정과 전송 방식도 함께 확인해야 합니다.
VLESS의 TCP, WebSocket, gRPC 조합은 임의로 서로 바꿔 쓸 수 없습니다. 서버가 특정 전송 방식으로 연결을 받도록 설정되어 있다면 클라이언트에서 다른 방식으로 바꿔도 보통 연결에 실패합니다. REALITY 또는 특정 flow를 사용하는 노드는 해당 코어의 지원 여부와 공개 키, 짧은 ID, 서버 이름, flow 등의 설정도 맞아야 합니다. 공유 링크에 이런 필드가 있는데 변환된 설정에서 사라졌다면 규칙 모드를 반복해서 바꾸기보다 형식 호환성부터 해결하세요.
고급 필드는 양쪽에서 모두 지원해야 합니다
클라이언트에 특정 옵션이 있다고 해서 서버도 같은 방식으로 작동하도록 구성된 것은 아닙니다. 예를 들어 특정 flow를 사용하려면 프로토콜, 보안 계층, 서버 설정이 모두 맞아야 합니다. 다중화도 양쪽 구현이 호환되어야 합니다. 고급 옵션을 전부 켠다고 장점이 더해지는 것은 아니며, 오히려 원인을 찾기 어려운 핸드셰이크 오류가 생길 수 있습니다. 제공자가 준 설정을 그대로 유지해 기본 연결부터 확인한 뒤 서버가 지원하는 기능을 확실히 알 때 선택 항목을 조정하는 것이 가장 안전합니다.
Trojan과 VLESS를 비교할 때는 먼저 현재 노드의 서버 구성이 올바른지, 클라이언트가 필요한 기능을 모두 지원하는지, 인증서와 필드를 관리하기 쉬운지 확인하세요. 안정적인 TLS 노드를 사용 중이라면 계속 사용해도 구조적인 문제는 없습니다. 특정 전송 기능이 필요하다면 해당 VLESS 조합을 확인하면 됩니다. 일부 전송 조합의 장점을 모든 VLESS 노드가 모든 Trojan 노드보다 낫다는 식으로 일반화할 수는 없습니다.
문제 해결을 위해 다음 순서로 기록해 보세요. 도메인 해석 여부, 포트 연결 여부, TLS 완료 여부, 인증 성공 여부, 대상 요청 응답 여부입니다. 인증서 오류는 규칙과 관계없는 단계에서 발생하며, 인증 실패도 DNS 캐시를 지워 해결되지 않습니다. 로그가 명확하지 않다면 노드 하나를 골라 요청을 한 번만 보내고 자동 전략 그룹 여러 개가 동시에 테스트되지 않도록 하세요. 그런 다음 자주 묻는 질문에서 해당 단계를 확인하고 모든 필드를 한꺼번에 바꾸지 마세요.
4. Hysteria2와 TUIC의 UDP 조건
QUIC은 어떤 계층의 문제를 해결하나요?
Hysteria2와 TUIC는 모두 QUIC 기반으로 설계되었으며, 일반적으로 UDP를 하위 전송으로 사용합니다. QUIC은 사용자 공간에서 신뢰성 있는 전송, 보안 핸드셰이크, 다중 스트림 관리를 구현할 수 있어 TCP 바이트 스트림 하나에서 패킷이 손실됐을 때 모든 논리 스트림이 같은 순서로 기다리는 문제를 줄입니다. 다만 네트워크 대역폭은 여전히 공유되고 혼잡 제어가 전송 속도를 제한합니다. 다중 스트림이 각 연결에 별도 대역폭을 보장하거나 패킷 손실 후 복구 비용을 없애는 것은 아닙니다.
가장 먼저 UDP 경로를 확인해야 합니다. 일부 방문자 네트워크는 제한된 유형의 통신만 허용하거나 장시간 UDP 세션을 안정적으로 처리하지 못합니다. 이 경우 한 네트워크에서는 노드가 정상 작동하지만 다른 네트워크에서는 계속 시간 초과될 수 있습니다. 시스템 프록시와 TUN을 전환해도 기기 내 트래픽 처리 방식만 바뀔 뿐 외부 네트워크가 UDP를 허용한다는 보장은 없습니다. 이미 확인된 TCP 계열 노드를 하나 남겨 두면 QUIC 노드를 계속 추가하는 것보다 원인을 파악하기 쉽습니다.
Hysteria2: 대역폭 설정은 높을수록 좋은 것이 아닙니다
Hysteria2는 패킷 손실과 지연 변동이 있는 연결 환경을 고려해 인증, TLS, 혼잡 제어 관련 기능을 제공합니다. 설정의 대역폭 값은 코어 구현과 서버의 협상 방식에 따라 이해해야 합니다. 이는 구독 서비스가 보장하는 대역폭도 아니고, 숫자를 높게 입력한다고 속도가 올라가는 것도 아닙니다. 대역폭 추정에 의존하는 전송 전략을 사용할 때 실제 회선보다 훨씬 높은 값을 입력하면 대기열과 패킷 손실이 늘어 같은 네트워크의 다른 앱에도 영향을 줄 수 있습니다.
서버와 코어가 대역폭 정보 협상을 지원한다면 우선 제공자가 안내한 설정을 사용하세요. 직접 입력해야 한다면 현재 네트워크에서 지속해서 낼 수 있는 성능을 기준으로 하고, 상호작용 작업과 다른 기기를 위한 여유를 남겨 두세요. 휴대폰이 Wi-Fi에서 셀룰러 네트워크로 전환되면 기존 추정값이 적합하지 않을 수 있습니다. Hysteria와 Hysteria2도 유형 이름만 바꿔 사용할 수 있는 동일한 프로토콜이 아니므로 서버 버전과 클라이언트 구현이 맞는지 확인해야 합니다.
TUIC: 인증, 혼잡 제어, 세션 유지
TUIC도 QUIC으로 프록시 연결을 전달하며, 일반적인 설정에는 UUID, 비밀번호, TLS 서버 이름, ALPN, 혼잡 제어 옵션이 포함됩니다. 프로토콜 세대와 구현에 따라 호환성 차이가 있을 수 있으므로 공유 링크가 비슷해 보여도 양쪽 설정이 맞는다는 뜻은 아닙니다. 가져오기는 성공했지만 연결이 바로 끊긴다면 연결 유지 간격을 먼저 줄이기보다 프로토콜 세대, 인증 필드, ALPN을 확인하세요. 잘못된 세션을 유지해도 인증 오류는 해결되지 않습니다.
두 프로토콜에는 UDP 릴레이 방식, 연결 유지, 핸드셰이크 최적화 옵션이 포함될 수 있습니다. 일부 0-RTT 방식은 기존 세션 정보와 양쪽의 지원이 필요하며 재전송 공격 관련 위험도 있으므로 범용 가속 옵션으로 취급해서는 안 됩니다. 연결 마이그레이션도 구현과 네트워크 경로에 따라 달라집니다. Wi-Fi에서 셀룰러 네트워크로 전환해도 진행 중인 모든 앱 세션이 그대로 유지된다고 보장할 수는 없으며, 앱 수준에서 다시 연결해야 할 수 있습니다.
| 증상 | 우선 확인할 항목 | 바로 시도하지 말아야 할 조정 |
|---|---|---|
| 특정 네트워크에서만 실패 | UDP 연결 가능 여부, 네트워크 정책, 주소 해석 | 인증 비밀번호를 반복해서 변경 |
| 연결 후 부하가 커지면 끊김 | 대역폭 추정, 혼잡, 기기 처리 능력 | 전송 대역폭을 더 높임 |
| 가져오기는 되지만 핸드셰이크 실패 | 프로토콜 세대, 인증, TLS, ALPN | 인증서 검사를 모두 끔 |
| 한동안 유휴 상태였다가 다시 연결해야 함 | 세션 시간 초과, 백그라운드 제한, 연결 유지 설정 | 심박 간격을 지나치게 짧게 설정 |
UDP를 사용할 수 있고 실제로 회선에 손실이나 변동이 있는 환경이라면 두 방식 모두 기존 노드와 함께 테스트해 볼 만합니다. 다만 암호화, 타이머, 사용자 공간의 패킷 처리도 필요하므로 기기 부하와 배터리 소모를 직접 확인해야 합니다. 대용량 파일 다운로드가 한 번 빨라졌다고 웹, 음성 통화, 대기 상태, 모든 네트워크 전환까지 함께 개선된다고 판단하지 마세요. 성능은 구체적인 작업을 기준으로 평가해야 합니다.
5. 속도, 리소스, 모바일 배터리
대기 시간을 단계별로 나눠 보기
노드 목록의 지연 시간은 보통 특정 조건에서 한 번 측정한 값으로, 모든 웹사이트를 앱에서 이용할 때의 실제 시간을 의미하지 않습니다. 전체 요청에는 DNS 조회, 서버 연결, 프로토콜 인증, TLS 핸드셰이크, 대상 서버 연결, 응답 대기가 포함될 수 있습니다. 어떤 측정은 기존 연결을 재사용하고 어떤 측정은 매번 새 연결을 만듭니다. 전략 그룹을 거치는 방식과 노드에 직접 연결하는 방식도 있습니다. 두 클라이언트의 측정 조건이 다르면 표시된 수치를 같은 기준으로 비교할 수 없습니다.
짧은 웹 요청은 첫 핸드셰이크와 대상 서버 응답에 영향을 받기 쉽고, 대용량 다운로드는 대역폭, 패킷 손실, 지속적인 혼잡을 더 잘 드러냅니다. 원격 터미널은 일시적인 대기열과 멈춤에 민감합니다. 다중화는 반복 연결을 줄일 수 있지만 더 많은 요청을 하나의 외부 연결에 모을 수도 있습니다. 혼잡할 때 사용 경험이 개선되는지는 전송 방식과 구현에 따라 달라집니다. 첫 방문, 재방문, 지속 전송을 각각 살펴보고 다운로드 속도 하나로 일상적인 사용 경험을 단정하지 마세요.
리소스 사용량은 프로토콜 이름만으로 정해지지 않습니다
프로세서의 암호화 명령어 지원, 운영체제 네트워크 스택, 코어 구현, 연결 수, 로그 수준이 모두 리소스 사용량에 영향을 줍니다. 데스크톱에서는 차이가 잘 드러나지 않는 설정도 구형 휴대폰이나 라우터에서는 병목이 될 수 있습니다. QUIC의 사용자 공간 처리와 타이머는 추가 작업을 요구하며, 기존 프로토콜도 플러그인, 다중 캡슐화, 많은 동시 연결로 부하가 커질 수 있습니다. 따라서 모든 기기에 적용되는 프로토콜별 메모리나 전력 수치를 제시하는 것은 적절하지 않습니다.
작업 관리자를 볼 때는 클라이언트 화면과 코어 프로세스를 구분해야 합니다. 창 애니메이션, 로그 스크롤, 구독 해석, 백그라운드 업데이트는 화면 프로세스의 리소스를 사용할 수 있고, 실제 트래픽 전달은 별도 프로세스에서 이뤄집니다. 테스트 전에 불필요한 실시간 로그를 끄고 구독 업데이트가 끝날 때까지 기다리세요. 앱과 작업 조건을 동일하게 유지한 뒤 CPU 사용률과 메모리 변화 추이를 살펴보세요. 시작 직후의 최고치만으로 장시간 사용 비용을 판단할 수는 없습니다.
휴대폰 배터리는 잦은 기기 깨우기로 소모될 수 있습니다
모바일에서는 암호화 부하뿐 아니라 무선 모듈이 활성 상태로 유지되는 시간도 고려해야 합니다. 잦은 상태 확인, 짧은 심박 간격, 반복되는 연결 재시도, 여러 전략 그룹의 동시 속도 측정은 기기를 반복해서 깨울 수 있습니다. 전송 데이터가 적어도 배터리가 절약된다고 볼 수는 없습니다. 불필요한 확인을 줄이고 중복 구독 작업을 피한 뒤 실제 연결 끊김 상황에 따라 유지 설정을 조정하세요. 프로토콜만 바꾸는 것보다 개선 원인을 설명하기 쉽습니다.
Android의 VpnService는 클라이언트가 시스템 트래픽을 받도록 하는 기능입니다. 권한을 승인했다고 해서 시스템이 앱을 백그라운드에서 계속 실행하도록 허용하는 것은 아닙니다. 배터리 최적화, 제조사별 백그라운드 관리, 자동 시작 설정이 복구 속도에 영향을 줄 수 있습니다. 관련 설정은 Android 백그라운드 실행 안내에서 확인할 수 있습니다. 백그라운드 실행 허용은 프로세스가 유지되도록 돕는 설정이지, 모든 배터리 소모 문제의 원인은 아닙니다. 테스트를 위해 시스템의 절전 기능을 모두 장기간 끌 필요도 없습니다.
| 목표 | 확인할 내용 | 동일하게 유지할 조건 |
|---|---|---|
| 웹과 업무 | 첫 응답, 재시도 실패, 연속 접속 | 대상 웹사이트, 네트워크, 앱 |
| 대용량 다운로드 | 지속 처리량, 연결 끊김, 기기 발열 | 파일 출처, 동시 연결 수, 시간대 |
| 모바일 대기 상태 | 백그라운드 복구, 기기 깨우기, 배터리 사용량 | 측정 간격, 화면 상태, 신호 |
| 음성 통화와 상호작용 | 끊김, 간헐적 멈춤, 연결 복구 | 앱 작업과 UDP 지원 조건 |
비교할 때는 후보 노드를 번갈아 사용하고 네트워크, 시간, 대상, 실패 증상을 기록하세요. 평소 실제로 사용하는 작업도 충분히 포함해야 합니다. 노드가 서로 다른 서버에 있다면 결론은 ‘현재 조건에서 이 노드가 더 적합하다’여야지 ‘이 프로토콜이 항상 더 빠르다’가 되어서는 안 됩니다. 휴대폰에서는 셀룰러 신호 강도와 화면 전력도 살펴보세요. 이런 조건이 크게 바뀌면 시스템 배터리 통계만으로 프로토콜의 영향을 따로 입증하기 어렵습니다.
6. 원본, Meta, mihomo 코어
명칭의 변화와 지원 범위
원본 Clash는 YAML 설정, 전략 그룹, 규칙 기반 분기를 중심으로 사용 방식을 정립했습니다. 이후 등장한 Clash.Meta는 이 설정 구조를 바탕으로 프로토콜과 네트워크 기능을 확장했고, mihomo는 Meta 코어 계열의 후속 명칭으로 사용됩니다. 따라서 Meta와 mihomo는 서로 무관해 설정 전체를 새로 배워야 하는 별개의 체계가 아닙니다. 그렇다고 이름이 비슷하다는 이유만으로 어떤 시점의 빌드든 동일한 필드와 동작을 보장하는 것도 아닙니다.
원본 오픈소스 코어와 Clash Premium도 구분해야 합니다. 과거의 일부 TUN, 규칙 집합, 스크립트 기능은 서로 다른 배포 계열에서 제공됐습니다. 이를 모두 원본이 지원한다고 묶어 설명할 수 없으며, 오래된 화면의 기능을 보여 주는 이미지로 현재 오픈소스 코어의 동작을 추측해서도 안 됩니다. 오래된 튜토리얼에 코어 계열과 설정 맥락이 나와 있지 않다면 현재 설정값으로 그대로 따라 하기보다 개념 참고 자료로 활용하세요.
주요 구조는 호환되지만 모든 필드가 보장되는 것은 아닙니다
일반적인 proxies, proxy-groups, rules 구조는 호환성이 높고 기본 SS, VMess, Trojan 설정도 이전할 수 있는 경우가 많습니다. mihomo는 VLESS, Hysteria2, TUIC과 더 다양한 규칙 및 DNS 기능을 지원하지만, 실제 사용 가능 여부는 빌드에 따라 달라집니다. 프로토콜 유형을 인식하는 것은 첫 단계일 뿐입니다. 전송 조합, flow, TLS 옵션, 추가 인증 필드도 이어서 확인해야 합니다.
반대 방향의 호환성은 실패하기 쉽습니다. 새 프로토콜, 새 규칙 구문, 새 DNS 필드가 포함된 설정을 오래된 코어에 넣으면 알 수 없는 유형 오류가 나거나 일부 필드가 적용되지 않아 라우팅이 달라질 수 있습니다. 특히 규칙 집합 형식, 매칭 방식, DNS 분기는 서로 연결되어 있습니다. 설정이 실행된다고 해서 연결 경로까지 완전히 같다고 볼 수는 없습니다. 이전 후에는 예상 경로를 알고 있는 대상을 몇 개 골라 실제 적용 규칙과 출구 노드를 확인하세요.
| 코어 계열 | 설정을 볼 때 확인할 항목 | 마이그레이션 시 유의 사항 |
|---|---|---|
| 원본 오픈소스 Clash | 기존 프로토콜, 기본 전략 및 규칙 구조 | 후속 확장 유형도 지원한다고 단정하지 않기 |
| Clash Premium | 과거의 독점 기능과 설정 규약 구분하기 | 스크립트 등 기능을 그대로 옮기지 않기 |
| Clash.Meta / mihomo | 확장 프로토콜, 규칙 집합, DNS, TUN | 현재 실행 중인 코어에서 설정 확인하기 |
실제로 실행되는 코어부터 확인하기
데스크톱 클라이언트에는 코어가 내장되어 있을 수도 있고, 코어를 바꾸거나 서비스 프로세스로 실행할 수도 있습니다. 정보 화면에 표시되는 클라이언트 버전이 코어 버전과 반드시 같은 것은 아닙니다. 문제를 해결할 때는 코어 정보나 시작 로그에서 이름을 확인한 뒤 현재 설정이 어디에서 불러와지는지 살펴보세요. 여러 클라이언트를 설치한 적이 있다면 시스템 프록시가 가리키는 포트와 백그라운드에서 이전 서비스가 계속 대기 중인지도 확인해야 합니다. 한 화면에서 설정을 바꾸더라도 실제 트래픽이 다른 프로세스로 들어갈 수 있습니다.
명령줄 사용자는 아래 명령으로 mihomo 정보를 확인하고 지정된 디렉터리의 설정을 검사할 수 있습니다. 설정 검사 통과는 구문과 인식 가능한 설정이 조건을 충족했다는 뜻일 뿐, 원격 비밀번호, 인증서, 회선 연결 가능 여부를 확인해 주지는 않습니다. 검사 전에 해당 디렉터리가 평소 사용하는 위치인지 확인하세요. 그래픽 클라이언트는 자체 실행 설정을 만들 수 있어 이 경로를 읽지 않을 수도 있습니다.
mihomo -v
mihomo -t -d "$HOME/.config/mihomo"
코어를 업그레이드하거나 교체하기 전에 기존 설정, 규칙 참조, 로컬 재정의를 저장하세요. 이전 후에는 DNS, 시스템 프록시, TUN 상태를 확인해야 합니다. 권한 부족은 시스템 통합 문제이므로 노드 프로토콜을 바꿔 해결할 일이 아닙니다. 기능 차이에 관한 자세한 내용은 mihomo와 원본 코어의 차이를 확인하세요. 지원이 중단된 클라이언트의 설정을 옮길 때는 마이그레이션 체크리스트를 참고하고, 되돌릴 수 있는 작업 환경을 먼저 유지하세요.
7. 구독 형식과 설정 호환성
링크, 노드 목록, 전체 설정
구독 주소는 리소스를 가져오는 경로일 뿐, 응답 내용의 형식이 통일되어 있지는 않습니다. 한 주소가 전체 Clash YAML을 반환할 수도 있고, 여러 공유 링크를 인코딩한 목록일 수도 있으며, 요청 헤더에 따라 다른 형식을 반환할 수도 있습니다. 전체 설정에는 노드, 전략 그룹, 규칙, DNS가 포함되는 경우가 많지만 노드 목록은 노드 데이터만 제공합니다. 둘을 혼동하면 노드는 보이지만 원하는 전략 그룹이 없거나, 가져온 뒤 필수 구조가 없다는 오류가 날 수 있습니다.
proxy-providers는 별도 리소스에서 노드를 가져와 전략 그룹이 참조할 수 있게 합니다. rule-providers는 규칙 집합을 제공합니다. 어떤 전체 구독 주소든 넣으면 자동으로 분리되는 것은 아닙니다. 특히 규칙 제공자는 선언된 동작과 파일 형식이 맞아야 합니다. 도메인 목록, IP 목록, 전체 규칙 행은 서로 다른 형식이므로 같은 내용으로 취급할 수 없습니다. 문제를 확인하기 전에 리소스의 실제 응답 구조를 살펴보고 참조 위치를 점검하세요.
변환 과정에서 빠지기 쉬운 정보
구독 변환은 원본 형식의 항목을 대상 코어가 이해하는 필드로 매핑해야 합니다. 기본 주소와 비밀번호는 대체로 유지하기 쉽지만, 최신 프로토콜 옵션, 플러그인 설정, ALPN, flow, REALITY 설정, 일부 UDP 전송 옵션은 지원되지 않을 수 있습니다. 변환 성공은 대상 형식이 생성됐다는 뜻일 뿐, 노드의 모든 동작이 보존됐다는 뜻은 아닙니다. 특정 유형의 노드만 집중적으로 실패한다면 같은 내용을 반복 변환하기보다 원본 정보와 가져온 뒤의 노드 세부 정보를 항목별로 비교하세요.
제공자가 mihomo에 맞는 설정을 직접 제공할 수 있다면 중간 변환을 줄이기 위해 해당 형식을 우선 사용하는 것이 좋습니다. 변환이 꼭 필요하다면 도구가 해당 프로토콜을 지원하는지, 규칙 템플릿과 DNS 설정을 교체하는지 확인하세요. 구독 URL에는 개인 접근 자격 증명이 포함될 수 있습니다. 데이터 처리 방식을 알 수 없는 서비스에 제출하지 말고, 공개 스크린샷, 문의 내용, 로그 첨부 파일에도 전체 주소를 남기지 마세요.
작은 예제로 구조를 익히고 확인되지 않은 필드는 붙이지 않기
아래는 mihomo에서 읽을 수 있는 최소 직접 연결 설정 예시입니다. 수신 포트, 전략 그룹, 규칙의 관계를 보여 주며 원격 노드는 포함하지 않아 원격 프록시 연결을 만들지 않습니다. 백업한 뒤 테스트용 파일에 따로 저장해 구문을 확인하는 데 활용하세요. 현재 사용하는 구독 설정을 덮어쓰지 마세요. 실제 노드는 신뢰할 수 있는 출처에서 받아야 하며, 이 예시의 이름을 바꾼다고 노드가 만들어지는 것은 아닙니다.
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
proxy-groups:
- name: Route
type: select
proxies:
- DIRECT
rules:
- MATCH,Route
YAML에서는 들여쓰기로 계층을 표현합니다. 목록 앞의 하이픈과 같은 수준에 있는 키의 위치도 의미에 영향을 줍니다. 여러 구독을 합치면 이름이 같은 노드 때문에 전략 그룹 참조가 모호해질 수 있고, 이름이 같은 전략 그룹이 기존 정의를 덮어쓸 수도 있습니다. 규칙 순서가 바뀌면 처음 매칭되는 항목도 달라집니다. 파일 두 개를 단순히 이어 붙여서는 안 됩니다. 출처별 이름 범위를 명확히 지정하고, 모든 그룹 참조가 존재하는지 확인한 뒤 최종 규칙이 예상한 기본 처리 항목으로 끝나는지 점검하세요.
업데이트 실패가 항상 형식 문제인 것은 아닙니다. 요청 시간 초과, 인증 만료, 로그인 페이지 반환, 원격 규칙 집합의 일시적인 연결 불가가 원인일 수도 있습니다. 먼저 다운로드 상태와 응답 유형을 확인한 다음 구문 오류를 살펴보세요. 구독 업데이트 실패와 노드 핸드셰이크 실패를 혼동하지 마세요. 구독 업데이트 관련 사례는 구독 문제에서 확인하고, 설정 전환과 백업은 Profile 입문에서 더 알아보세요.
정상 작동하는 설정 스냅샷을 보관하는 것이 특히 중요합니다. 백업에는 구독 주소뿐 아니라 로컬 규칙, 전략 그룹 선택, 재정의 로직도 포함해야 합니다. 문제 해결 자료를 공유할 때는 프로토콜 유형, 필드 이름, 실패 단계를 남기되 인증 정보, 개인 도메인, 구독 자격 증명은 삭제하세요. 구조 문제를 재현하기 쉬우면서 복구 과정에서 자격 증명을 새로 옮기는 일도 방지할 수 있습니다.
8. 사용 환경별 선택과 검증
일상적인 데스크톱과 Linux 작업 환경
주로 브라우저, 코드 저장소, 데스크톱 업무를 사용한다면 유지 관리 상태가 명확하고 구독을 온전히 읽을 수 있는 클라이언트를 먼저 고른 뒤, 기존 SS, VMess, Trojan, VLESS 노드 중 안정적인 하나를 선택하세요. 여러 기기에서 사용할 클라이언트는 Clash Plus를 살펴볼 수 있습니다. Linux 데스크톱에서는 배포판에 맞춰 Clash Verge Rev 또는 FlClash를 선택하세요. 새 프로토콜은 실제 문제나 기능 요구가 있을 때 고려하면 됩니다. 모든 유형을 갖춰야 설정이 완전해지는 것은 아닙니다.
Linux에서는 앱이 시스템 프록시를 따르는지도 확인해야 합니다. 브라우저는 접속되지만 터미널 도구가 실패한다면 터미널이 프록시 환경 변수를 읽지 않을 수 있습니다. 컨테이너와 독립 네트워크 네임스페이스도 데스크톱 설정을 자동으로 상속하지 않습니다. 먼저 트래픽을 제어하는 경로를 확인하고 필요하면 TUN 모드 가이드에 따라 권한과 라우팅을 설정하세요. 원격 서버와 라우터에서 코어를 직접 실행하는 방식은 서비스 관리에 익숙한 사용자에게 적합하며, 일반적인 데스크톱 사용자는 그래픽 인터페이스를 쓰는 편이 낫습니다.
모바일 네트워크, 실시간 앱, 대용량 파일
휴대폰이 Wi-Fi와 셀룰러 네트워크를 자주 오간다면 첫 속도 측정보다 연결 복구, 백그라운드 유지, 배터리 소모를 확인하세요. UDP 경로가 안정적이라면 Hysteria2나 TUIC를 후보에 추가할 수 있습니다. 일부 네트워크에서 자주 시간 초과된다면 이미 검증한 TCP 계열 노드를 대안으로 남겨 두세요. 서버 지원 여부를 확인하지 않은 채 모든 노드에 다중화나 추가 전송 옵션을 강제로 적용하지 마세요. 원래 별개였던 문제가 한꺼번에 발생할 수 있습니다.
음성 통화, 회의, 게임은 실제 UDP 지원 여부와 지터, 간헐적인 멈춤을 확인해야 합니다. 프로토콜에 QUIC이 표시된다고 모든 실시간 앱이 이득을 보는 것은 아닙니다. 앱 서버 위치, 전달 경로, 시스템 트래픽 제어 범위도 중요합니다. 대용량 파일을 전송할 때는 지속 속도와 기기 발열을 살피고 상호작용 앱에 필요한 대역폭도 남겨 두세요. 한 회선에서 최대 속도가 나와도 가족이 함께 사용하는 환경의 기본 선택으로 가장 적합하다고 볼 수는 없습니다.
| 사용 환경 | 우선 조건 | 중점 검증 항목 |
|---|---|---|
| 데스크톱 웹과 개발 | 구독 호환성, 명확한 규칙, 안정적인 노드 | 첫 응답과 도구의 트래픽 제어 범위 |
| 휴대폰 일상 사용 | 백그라운드 복구, 적절한 상태 확인 간격 | 네트워크 전환과 대기 중 배터리 소모 |
| 변동이 큰 회선 | UDP 사용 가능 여부를 확인한 뒤 QUIC 방식 비교 | 지속적인 패킷 손실에서 실제 작업 체감 |
| 서버와 라우터 | 아키텍처 호환성, 충분한 리소스, 유지 관리하기 쉬운 설정 | 부하, 서비스 복구, 라우팅 범위 |
간단한 검증 절차로 계속 사용할지 판단하기
현재 작동하는 설정을 먼저 저장하고 후보 노드 하나를 선택한 뒤 네트워크와 테스트 대상을 고정하세요. 웹 접속, 지속 전송, 평소 사용하는 상호작용 작업을 각각 한 번씩 진행하고 연결 기록에서 전략 그룹, 매칭 규칙, 실제 출구를 확인합니다. 요청이 실제로 후보 노드를 통과했음을 확인한 다음에야 사용 경험의 차이를 결과에 기록하세요. 규칙 때문에 대상이 직접 연결되었다면 속도 측정 결과는 선택한 프로토콜과 관계가 없습니다. 먼저 테스트 조건을 바로잡아야 합니다.
실패하면 단계별로 확인을 멈추세요. 가져오기 실패는 형식, 시작 실패는 필드와 참조, 핸드셰이크 실패는 주소·인증·TLS, 응답 이상은 대상 서비스와 규칙, 일부 앱만 실패하는 경우는 시스템 트래픽 제어와 DNS를 살펴봅니다. 한 번에 한 단계만 수정하고 성공한 다음 다음 단계로 넘어가세요. 연결 로그에는 대상 주소 같은 정보가 포함될 수 있습니다. 문제 해결을 마치면 일상 사용에 적합한 로그 수준으로 되돌리고, 자세한 기록을 위해 높은 빈도의 출력을 계속 켜 두지 마세요.
최종적으로 선택한 방식은 현재 사용 환경에 적합한 이유를 설명할 수 있어야 합니다. 예를 들어 기존 구독과 호환되고, 모바일 네트워크에서 안정적으로 복구되며, 대용량 다운로드가 더 안정적이거나 유지 관리 항목이 적을 수 있습니다. 비교 과정과 노드 속도 측정 방법은 속도 측정 및 검증 가이드에서 확인하세요. 클라이언트 화면의 차이는 클라이언트 비교에서 더 살펴볼 수 있습니다. 프로토콜, 코어, 인터페이스는 각기 다른 문제를 해결하므로 이 세 계층을 구분하는 것이 하나의 종합 순위를 좇는 것보다 유용합니다.