이 페이지는 체계적인 참고 매뉴얼이며 설치 절차를 대신하지 않습니다. Clash를 처음 사용하거나 아직 구독 가져오기와 시스템 프록시 설정을 완료하지 않았다면 먼저 시작 가이드에 따라 연결을 구성하세요. 클라이언트 설치 파일을 찾는다면 다운로드 센터로 이동하세요. 기본 설정을 마친 뒤 이 페이지를 활용해 현재 네트워크, 기기와 코어에 적합한 프로토콜인지 판단할 수 있습니다.
프로토콜 이름이 실제 사용감을 보장하지는 않습니다. 연결 결과는 서버 구현, 회선 품질, 혼잡 제어, 전송 계층, 암호화 방식, 클라이언트 코어와 기기의 전원 정책에 함께 영향을 받습니다. 따라서 이 글은 단순 순위를 매기지 않고 변수를 나누어 재사용 가능한 선택 방법을 제시합니다.
1. 먼저 프로토콜 선택 기준 세우기
프로토콜, 전송 방식, 클라이언트는 서로 다른 계층입니다
Clash 설정의 프록시 노드는 일반적으로 세 계층의 정보를 담습니다. 첫 번째는 Shadowsocks, VMess, Trojan, VLESS, Hysteria2 또는 TUIC 같은 프로토콜 자체로, 인증 방식과 데이터 캡슐화 및 세션 유지 방법을 정합니다. 두 번째는 일반 TCP, WebSocket, gRPC, HTTP/2, QUIC 또는 UDP 기반 맞춤 전송처럼 프로토콜을 실어 나르는 전송 방식입니다. 세 번째가 설정을 실행하는 클라이언트와 코어입니다. 그래픽 클라이언트는 구독 관리, 정책 그룹, 시스템 프록시와 화면 조작을 담당하고, mihomo 같은 코어는 실제로 노드를 해석해 연결을 전달합니다.
이 세 계층을 하나의 결론으로 묶어서는 안 됩니다. TCP를 사용하는 VMess와 WebSocket을 사용하는 VMess는 핸드셰이크 횟수, 헤더 오버헤드와 연결 재사용 방식이 다릅니다. VLESS 자체는 가볍지만 TLS, REALITY, gRPC가 더해지면 실제 연결 과정에는 해당 전송 계층의 연산과 왕복이 포함됩니다. 클라이언트 이름만으로 특정 프로토콜의 모든 확장을 지원한다고 판단할 수도 없습니다. 호환성을 확인할 때는 화면에 비슷한 이름이 보이는지만 보지 말고 코어 종류, 노드 필드와 전송 조합을 확인해야 합니다.
제약 조건을 먼저 정한 뒤 프로토콜 비교하기
실용적인 선택 순서는 서버에서 어떤 프로토콜을 제공하는지 확인하고, 현재 클라이언트 코어가 이를 완전히 해석할 수 있는지 검토한 다음 네트워크 특성과 기기 제약을 고려하고 마지막으로 속도를 비교하는 것입니다. 사용자가 로컬에서 기존 노드를 다른 프로토콜로 바꾸는 일은 대개 불가능합니다. 프로토콜, 포트, 인증 정보와 서버 설정이 서로 맞아야 하기 때문입니다. 구독에 SS 노드만 있다면 type 필드를 수정한다고 Hysteria2로 변환되지 않습니다. 이런 변경은 핸드셰이크 실패만 일으킵니다.
네트워크 제약에는 최소한 UDP 안정성, 높은 왕복 지연, 뚜렷한 패킷 손실, Wi-Fi와 모바일 네트워크 사이의 잦은 전환 여부가 포함됩니다. 기기 제약으로는 프로세서 성능, 백그라운드 실행 제한, 배터리 용량과 장시간 다중 연결 유지 여부를 살펴봐야 합니다. 데스크톱은 전원 공급이 안정적이므로 처리량과 연결 복구를 우선하기 좋습니다. 모바일에서는 깨우기 횟수, 지속적인 패킷 전송, 무선 모듈 활성 시간과 백그라운드 유지 비용을 함께 따져야 합니다.
6가지 판단 기준
이 글에서는 핸드셰이크 비용, 전송 효율, 불안정한 네트워크에서의 복구력, 리소스 사용량, 모바일 환경 성능, 생태계 호환성의 6가지 기준으로 프로토콜을 비교합니다. 핸드셰이크 비용은 최초 연결에 필요한 왕복 횟수를, 전송 효율은 유효 페이로드 비율과 재사용 방식을 봅니다. 복구력은 패킷 손실과 지터 상황에서의 성능 저하를, 리소스 사용량은 암호화·혼잡 제어·세션 유지에 따른 CPU와 메모리 비용을 포함합니다. 모바일 성능은 무선 모듈이 자주 깨어나는지에 중점을 두며, 생태계 호환성은 구독 형식, 코어와 서버 지원 범위를 확인합니다. 모든 프로토콜은 한 기준에서는 이점이 있어도 다른 기준에서는 비용이 생길 수 있습니다.
따라서 프로토콜 선택의 목표는 모든 상황에서 가장 강한 하나를 찾는 것이 아니라 뚜렷한 불일치를 피하는 것입니다. 예를 들어 UDP 품질이 계속 불안정하다면 QUIC 매개변수를 반복 조정하기보다 검증된 TCP 조합을 우선하는 편이 효과적입니다. 지연 시간이 높고 간헐적 패킷 손실이 있다면 Hysteria2나 TUIC가 더 부드러운 처리량을 낼 수 있습니다. 오래된 기기에서 웹과 메시지만 처리한다면 구조가 단순하고 구현이 성숙한 SS가 리소스를 덜 사용할 가능성이 큽니다. 요구 사항을 제약 조건으로 정리하면 프로토콜 순위표보다 신뢰할 수 있는 결론을 얻을 수 있습니다.
| 판단 기준 | 확인할 사실 | 흔한 오해 |
|---|---|---|
| 핸드셰이크 | 최초 연결 왕복, TLS 또는 QUIC 연결 과정 | 노드 지연만 보고 첫 데이터 도착 시간은 보지 않음 |
| 불안정한 네트워크 | 패킷 손실, 지터, 네트워크 전환 후 복구 | 짧은 다운로드로 장시간 상태를 대신함 |
| 리소스 | CPU, 메모리, 백그라운드 깨우기와 발열 | 클라이언트 화면의 사용량까지 모두 프로토콜 탓으로 돌림 |
| 호환성 | 코어, 필드, 전송 방식과 구독 형식 | 이름이 같으면 반드시 가져올 수 있다고 생각함 |
2. SS, VMess, Trojan과 VLESS의 설계 차이
Shadowsocks: 단순한 구조와 폭넓은 구현
Shadowsocks는 보통 SS로 줄여 부릅니다. 사전 공유 키로 프록시 데이터를 보호하고 비교적 간결한 구조로 TCP와 UDP 트래픽을 전달하는 것이 핵심입니다. 초기 구현에는 여러 전통 암호화 방식이 있었지만, 현재 설정에서는 aes-128-gcm, aes-256-gcm, chacha20-ietf-poly1305 같은 AEAD 암호화가 일반적입니다. AEAD는 암호화와 무결성 보호를 동시에 제공하며 클라이언트와 서버는 완전히 같은 방식과 비밀번호를 사용해야 합니다.
SS의 장점은 성숙한 구현, 적은 노드 필드와 폭넓은 클라이언트 지원에서 나옵니다. 일반 웹 탐색, 소프트웨어 업데이트, 메신저와 대부분의 데스크톱 환경에서 낮은 설정 복잡도로 안정적인 성능을 제공하는 경우가 많습니다. AES는 하드웨어 가속을 지원하는 데스크톱 프로세서에서 효율적이고, ChaCha20은 일부 모바일 기기나 저전력 프로세서에 더 적합할 수 있습니다. 다만 알고리즘 이름만으로 결과를 단정할 수 없으며 실제 구현과 기기의 명령어 집합도 중요합니다.
SS의 한계 역시 단순한 구조와 관련이 있습니다. 복잡한 전송 조합을 포함하는 범용 프로토콜 프레임워크가 아니므로 확장성은 구체적인 구현, 플러그인과 서버 기능에 더 의존합니다. 구독에 플러그인 매개변수가 포함되어 있다면 mihomo가 해당 플러그인 유형과 필드를 인식해야 합니다. 서버, 포트와 비밀번호만 복사하면 중요한 전송 정보가 빠질 수 있습니다. 가져오기는 되지만 연결되지 않는 SS 노드는 시스템 프록시를 반복해서 바꾸기보다 암호화 방식, 플러그인 옵션과 UDP 활성화 여부를 먼저 확인하세요.
VMess: 세션 정보를 포함하는 완성도 높은 프로토콜
VMess는 V2Ray 생태계에서 시작되었으며 UUID 같은 식별 정보로 인증하고 TCP, WebSocket, HTTP/2 등과 조합할 수 있습니다. SS보다 프로토콜 계층에서 처리하는 일이 많아 설정 필드도 풍부합니다. 오래된 설정에서는 alterId 같은 필드도 볼 수 있지만, 최신 서버는 대개 다른 권장값을 사용합니다. 이전 구독을 가져올 때 코어가 필드를 받아들이더라도 실제 서버 설정과 더 이상 일치하지 않을 수 있습니다.
VMess의 가치는 성숙한 생태계, 다양한 전송 조합과 넓은 기존 구독 지원 범위에 있습니다. 대신 설정 과정이 길어 프로토콜 인증, 전송 유형, TLS, 서버 이름, 경로와 요청 헤더가 함께 연결 결과를 결정할 수 있습니다. 어느 하나라도 서버와 다르면 시간 초과나 핸드셰이크 종료로 나타날 수 있습니다. 문제를 해결할 때는 구독의 원본 필드부터 확인하고, 불필요해 보인다는 이유만으로 익숙한 설정을 삭제하지 않는 편이 좋습니다.
성능 면에서 VMess가 본질적으로 느린 것은 아닙니다. 다만 추가 캡슐화, 전송 계층과 암호화에는 일정한 비용이 발생합니다. 여러 노드가 실제로 같은 회선을 사용한다면 일반 TCP 조합은 WebSocket과 TLS를 겹친 조합보다 핸드셰이크와 프레임 오버헤드가 적은 편입니다. 그러나 실제 사용에서는 회선 혼잡이 이러한 차이보다 훨씬 크게 작용하는 경우가 많습니다. 변수를 통제했을 때만 프로토콜 계층 비교가 의미를 가집니다.
Trojan: TLS 연결을 기반으로 하는 방식
Trojan은 일반적으로 TLS 위에서 연결을 만들고 비밀번호로 인증하며 TLS로 보호되는 연결에 데이터를 실어 보냅니다. 핵심 설정은 서버 주소, 포트, 비밀번호, 서버 이름과 인증서 검증 동작입니다. 클라이언트의 sni 또는 servername은 서버 인증서와 배포 방식에 맞아야 합니다. 인증서 검증을 임의로 끄면 오류를 일시적으로 우회할 수 있지만 보안 경계가 달라지므로 일반적인 문제 해결 방법으로 삼아서는 안 됩니다.
Trojan은 표준 TLS 구성 요소가 성숙했고 인증서 체계와 배포 방식이 명확하며 많은 코어에서 안정적으로 처리된다는 장점이 있습니다. 새 연결을 만들 때 TCP와 TLS 핸드셰이크를 모두 수행하므로 지연 시간이 긴 환경에서는 첫 데이터 도착 시간이 늘어날 수 있습니다. 연결 재사용과 세션 재개가 일부 비용을 줄일 수 있지만 효과는 클라이언트와 서버 구현에 따라 다릅니다. 짧은 연결이 많은 웹 환경에서는 첫 데이터 도착 시간을 함께 확인하고, 지속 전송에서는 회선 품질을 더 중요하게 보세요.
Trojan 구독에서 흔히 발생하는 문제는 SNI, 인증서 도메인, 전송 계층과 포트 불일치입니다. 한 클라이언트에서는 노드가 작동하고 다른 클라이언트에서는 실패한다면 양쪽에서 내보낸 전체 노드 필드를 먼저 비교하세요. 특히 네트워크 유형, ALPN, SNI와 인증서 검증 옵션을 확인해야 합니다. 비밀번호만 대조해서는 설정이 같은지 확인할 수 없습니다.
VLESS: 가벼운 인증과 조합 가능한 확장
VLESS는 가벼운 프로토콜 계층을 사용하며 VMess처럼 내장 암호화를 담당하지 않습니다. 보통 TLS, REALITY 또는 다른 보안 전송에 의존해 보호합니다. UUID 등의 정보로 인증하고 TCP, WebSocket, gRPC 같은 전송 방식과 조합할 수 있습니다. VLESS의 설정은 읽기 쉽지만 노드 필드가 반드시 적다는 뜻은 아닙니다. 흐름 제어, 전송, 보안 계층, 서버 이름, 공개 키, 짧은 ID와 경로 등의 매개변수는 여전히 서버와 일치해야 합니다.
VLESS는 최신 서버 구성에서 자주 사용되며 서로 다른 전송 방식을 조합해 다양한 배포 요구에 대응할 수 있습니다. 프로토콜 계층 오버헤드는 가볍지만 최종 성능은 전체 조합이 결정합니다. VLESS+일반 TCP, VLESS+gRPC, VLESS+WebSocket은 서로 다른 데이터 경로이므로 하나의 성능 결론으로 볼 수 없습니다. REALITY 관련 필드는 코어 지원에 의존합니다. 구버전 기본 Clash는 대개 이를 완전히 해석하지 못하지만 mihomo는 더 넓은 범위를 지원합니다.
VLESS를 선택할 때 중요한 것은 단순히 ‘최신’이라는 점이 아닙니다. 구독과 코어가 전체 필드를 제공하는지, 서버 조합이 안정적인지, 현재 네트워크가 해당 전송에 적합한지를 확인해야 합니다. 기존 VMess나 Trojan 노드가 오랫동안 안정적이라면 프로토콜 이름이 바뀌었다는 이유만으로 마이그레이션할 필요는 없습니다. 프로토콜 변경은 설정 복잡도 감소, 코어가 지원하는 새 전송 사용, 특정 네트워크에서의 연결 복구 개선처럼 명확한 문제를 해결해야 합니다.
| 프로토콜 | 주요 인증 또는 보호 방식 | 주요 설정 항목 | 우선 고려할 상황 |
|---|---|---|---|
| SS | 사전 공유 키와 AEAD | 암호화 방식, 비밀번호, 플러그인, UDP | 성숙도와 낮은 복잡도를 중시할 때 |
| VMess | UUID, 프로토콜 캡슐화와 선택적 보안 계층 | 전송, TLS, 경로와 기존 필드 | 검증된 VMess 구독과 서버를 이미 사용하는 경우 |
| Trojan | TLS와 비밀번호 인증 | SNI, 인증서, ALPN, 전송 방식 | 서버가 표준 TLS 방식으로 배포된 경우 |
| VLESS | 가벼운 인증과 외부 보안 계층 의존 | 보안 계층, 흐름 제어, 전송 확장 | 최신 전송과 mihomo 코어를 사용하는 경우 |
3. Hysteria2와 TUIC: 높은 지연과 패킷 손실을 위한 UDP 방식
QUIC 또는 맞춤형 혼잡 제어를 사용하는 이유
기존 TCP는 연결별로 신뢰성 있고 순서가 보장된 데이터 스트림을 유지합니다. 패킷 손실이 발생하면 재전송과 혼잡 윈도 조정으로 이후 데이터가 대기할 수 있고, 여러 논리 요청이 하나의 TCP 경로를 공유하면 서로 영향을 줄 수 있습니다. QUIC는 UDP 위에서 신뢰성 있는 전송, 암호화와 다중 스트림을 구현하고 더 많은 전송 제어를 사용자 공간에서 처리합니다. Hysteria2와 TUIC는 이러한 방향을 활용해 높은 지연, 무작위 패킷 손실 또는 큰 폭의 대역폭 변화가 있는 환경에서 연결 성능을 개선할 수 있지만, 단순한 ‘UDP 가속 스위치’는 아닙니다.
UDP 방식이 효과를 내려면 무엇보다 종단 간 UDP 품질이 좋아야 합니다. 로컬 네트워크, 라우터 또는 서버 진입점에서 UDP를 강하게 제한하거나 매핑 유지 시간이 짧거나 지속적인 패킷 손실이 발생한다면 아무리 발전된 프로토콜도 기본 경로 문제를 보완할 수 없습니다. 처음에는 정상적으로 연결되다가 수십 초 후 처리량이 급감하거나, 속도 측정은 되지만 장시간 연결이 자주 재생성되는 것이 흔한 증상입니다. 이때는 같은 회선의 TCP 노드와 먼저 비교해 문제가 프로토콜, 회선 또는 로컬 네트워크 중 어디에 있는지 확인하세요.
Hysteria2의 대역폭 활용 방식
Hysteria2는 QUIC 기반 전송을 사용하며 높은 지연과 패킷 손실 환경에서 처리량을 적극적으로 활용하는 데 초점을 둡니다. 설정에는 보통 서버, 포트, 인증 정보, TLS 서버 이름과 인증서 검증 설정이 포함됩니다. 일부 서버는 혼잡 위장 관련 매개변수도 제공합니다. 클라이언트가 구독을 다운로드한 뒤에는 이 필드를 유지하세요. 인증 문자열을 SS 비밀번호로 착각하거나 일반 HTTPS 주소를 Hysteria2 노드에 그대로 입력해서는 안 됩니다.
Hysteria2는 장거리, 대역폭 지연 곱이 크거나 무작위 패킷 손실이 있는 환경에서 보수적인 TCP 혼잡 제어보다 적극적으로 처리량을 확보할 수 있습니다. 적극적인 전송은 처리량 유지에 도움이 되지만 네트워크 상태가 나쁠 때 재전송, CPU 작업과 무선 모듈 활성 시간이 늘어날 수 있습니다. 지속 다운로드, 동영상 전송이나 원격 대용량 파일 접근에 적합할 수 있지만 모든 짧은 웹 요청이 더 빨라지는 것은 아닙니다. 짧은 요청의 체감 속도는 DNS, QUIC 연결 수립, 인증서 검증과 애플리케이션의 연결 재사용에도 영향을 받습니다.
설정의 대역폭 관련 매개변수는 실제 사용 가능한 성능을 반영해야 하며 크게 입력할수록 좋은 것은 아닙니다. 과도한 추정은 순간적인 전송량, 대기열과 추가 패킷 손실을 만들 수 있고, 지나치게 낮은 값은 처리량을 제한합니다. 서비스 제공자가 구독으로 값을 지정했다면 우선 원래 값을 유지하세요. 직접 조정해야 한다면 안정적인 네트워크에서 여러 번 측정하고 지속적으로 사용 가능한 처리량보다 약간 낮은 값을 적용한 뒤 대기열로 지연이 크게 늘지 않는지 관찰하세요.
TUIC의 연결 마이그레이션과 다중 스트림
TUIC 역시 QUIC 체계를 기반으로 하며, 일반적인 설정에는 UUID, 비밀번호, 서버 이름, 혼잡 제어기와 UDP 릴레이 모드가 포함됩니다. 낮은 지연, 다중화와 연결 상태 관리에 초점을 둔 설계입니다. QUIC는 기존의 4-튜플에만 의존하지 않고 연결 ID를 사용하므로 구현과 네트워크 조건이 허용된다면 기기가 Wi-Fi에서 모바일 네트워크로 전환된 뒤 세션을 더 쉽게 복구할 수 있습니다. 그러나 ‘마이그레이션 지원’이 전환 중단이 전혀 없다는 뜻은 아닙니다. 모바일 운영체제의 백그라운드 정책, 주소 변화와 중간 장비의 매핑이 모두 결과에 영향을 줍니다.
TUIC의 혼잡 제어 옵션은 처리량과 지연 사이의 균형을 바꿉니다. 적극적인 알고리즘은 대역폭이 충분할 때 전송 속도를 빠르게 높일 수 있지만 공유 네트워크에서는 대기열을 늘릴 수도 있습니다. 보수적인 정책은 일반적으로 더 안정적이지만 지연 시간이 긴 회선에서는 상승 속도가 느립니다. 클라이언트는 구독 또는 서버 권장값을 따르고 알고리즘 이름만 보고 수정하지 않는 편이 좋습니다. 클라이언트와 서버가 TUIC 세대나 필드를 다르게 해석하면 인증 직후 연결이 끊기거나 UDP 전달을 사용할 수 없는 경우가 많습니다.
Hysteria2와 TUIC 중 무엇을 선택할지는 보통 서버 지원 여부가 결정합니다. 같은 회선에 두 노드가 있다면 세 가지 작업으로 비교할 수 있습니다. 짧은 웹 페이지 여러 개를 연속해서 열어 첫 데이터 도착 시간과 실패 재시도를 확인하고, 10분 이상 지속 전송을 유지해 처리량 변동을 관찰하며, 모바일 기기에서 네트워크를 한 번 전환해 복구 시간과 배터리 변화를 확인하세요. 결론은 단일 속도 측정값이 아니라 실제 작업을 기준으로 내려야 합니다.
| 항목 | Hysteria2 | TUIC |
|---|---|---|
| 전송 기반 | QUIC 기반 맞춤 전송 | QUIC 기반 다중 스트림 연결 체계 |
| 주요 매개변수 | 인증, SNI, 대역폭, 위장 | UUID, 비밀번호, 혼잡 제어, UDP 릴레이 |
| 대표적인 장점 | 높은 지연과 무작위 패킷 손실에서도 처리량 유지 | 다중 스트림과 연결 상태 관리 |
| 공통 전제 | 종단 간 UDP를 사용할 수 있고 품질이 안정적이며, 클라이언트와 서버의 필드가 완전히 일치해야 합니다 | |
4. 속도, 리소스 사용량과 모바일 배터리
속도를 첫 데이터, 처리량과 안정성으로 나누어 보기
‘빠르다’는 말에는 최소 세 가지 지표가 포함됩니다. 첫 데이터 도착 시간은 애플리케이션이 연결을 시작한 뒤 첫 유효 데이터를 받을 때까지의 시간으로, DNS, 프로토콜 핸드셰이크, TLS 또는 QUIC 연결 수립과 서버 처리의 영향을 받습니다. 지속 처리량은 대용량 파일이나 동영상이 안정 구간에서 전송되는 성능을 뜻합니다. 안정성은 1분에서 수시간 동안 연결 끊김, 재연결과 뚜렷한 지터가 발생하는지를 봅니다. 어떤 프로토콜은 지속 처리량에서 우수해도 최초 연결이 복잡해 짧은 웹 페이지의 체감 경험을 개선하지 못할 수 있습니다.
비교할 때는 서버 위치, 회선, 기기, 시간대와 클라이언트 코어를 동일하게 유지해야 합니다. 이름은 다르지만 회선도 다른 두 노드를 비교하면 결과는 주로 회선 차이를 반영합니다. 웹 페이지 로딩, 지속적인 파일 전송과 실시간 음성의 세 가지 작업을 각각 여러 번 실행하고 최고값이 아니라 중간 수준의 체감을 기록하는 것이 좋습니다. Clash의 정책 그룹 지연 테스트는 명백히 사용할 수 없는 노드를 걸러내는 데 적합하지만 전체 처리량의 기준으로 사용하기에는 부족합니다. 자동 정책 그룹의 차이는 url-test, fallback과 load-balance 선택 가이드에서 더 확인할 수 있습니다.
CPU, 메모리와 동시 연결
프로토콜의 리소스 사용량은 암호화 연산, 데이터 복사, 혼잡 제어, 연결 재사용, 로그와 규칙 매칭에서 발생합니다. SS는 프로토콜 구조가 간결해 상주 오버헤드가 낮은 편이며, AES와 ChaCha20의 실제 비용은 하드웨어 가속 여부에 따라 달라집니다. VMess와 다중 전송 계층은 더 많은 캡슐화를 처리해야 합니다. Trojan은 성숙한 TLS 라이브러리를 사용하지만 짧은 연결이 많으면 핸드셰이크 비용을 반복해서 부담합니다. VLESS 자체는 가볍지만 gRPC, TLS 또는 복잡한 흐름 제어를 추가하면 최종 오버헤드는 전체 조합에 따라 달라집니다.
Hysteria2와 TUIC의 QUIC 처리는 사용자 공간에서 실행되며 패킷 손실 감지, 혼잡 윈도와 여러 논리 스트림을 유지해야 합니다. 고속 전송이나 불안정한 네트워크에서 재전송이 많을 때는 단순한 TCP 프로토콜보다 CPU 사용량이 높을 수 있습니다. 최신 데스크톱 기기는 대개 감당할 수 있지만 저전력 라우터, 구형 휴대전화나 소형 서버는 지속 부하를 확인해야 합니다. 메모리 측면에서는 단일 프로토콜 객체보다 노드 수, 규칙 집합, GeoIP 데이터, 연결 패널 기록과 DNS 캐시가 더 큰 영향을 주는 경우가 많습니다. 클라이언트 사용량이 늘었다고 곧바로 프로토콜 탓으로 돌릴 수 없습니다.
리소스 문제를 진단할 때는 먼저 같은 규칙과 DNS 설정을 고정하고 노드 프로토콜 하나만 바꾸세요. 연결 상세 화면의 지속 새로고침을 끄고 로그 수준도 일반 수준으로 유지합니다. 유휴 상태, 일반 탐색과 지속 전송의 세 상태를 각각 관찰하세요. 유휴 상태에서도 사용량이 높다면 그래픽 인터페이스, 규칙 업데이트, DNS 반복 처리나 시스템 프록시 충돌일 가능성이 큽니다. 고속 전송에서만 증가한다면 암호화와 전송 처리 비용에 더 가깝습니다.
모바일 배터리 소모는 프로토콜 이름 하나로 결정되지 않습니다
모바일 기기의 주요 전력 소모원은 대개 화면, 무선 기저대역, CPU 깨우기와 백그라운드 유지입니다. 프록시 프로토콜은 패킷 전송 빈도, 재전송 횟수, 연결 유지와 암호화 연산을 통해 간접적으로 배터리에 영향을 줍니다. 작은 패킷을 계속 보내면 무선 모듈이 더 오래 활성 상태로 유지됩니다. 불안정한 네트워크에서 재전송이 많으면 네트워크와 CPU 비용이 함께 증가합니다. 연결 유지를 너무 짧게 설정하면 시스템이 자주 깨어나고, 너무 길게 설정하면 불필요한 세션을 유지할 수 있습니다.
일상적인 가벼운 탐색에서는 성숙한 SS, Trojan 또는 VLESS TCP 조합이 예측 가능한 전력 사용량을 보이는 경우가 많습니다. 모바일 네트워크 품질이 좋고 지속 전송이 뚜렷할 때는 Hysteria2와 TUIC가 더 짧은 시간에 작업을 끝내 순간 부하를 일부 상쇄할 수 있습니다. 반대로 UDP 패킷 손실이 심하면 재전송과 연결 유지로 배터리 소모가 늘 수 있습니다. 절전 여부는 특정 시점의 CPU 비율이 아니라 같은 작업을 완료하는 데 걸린 총 시간과 총 배터리 사용량으로 판단해야 합니다.
Android와 iOS는 백그라운드 네트워크 활동도 제한합니다. 클라이언트가 시스템에 의해 일시 중지되거나 VPN 서비스가 절전 정책으로 종료되거나 네트워크 전환 후 연결을 제때 재구성하지 못하면 프로토콜 연결이 끊긴 것처럼 보일 수 있습니다. Android 사용자는 클라이언트의 VPN 권한과 백그라운드 실행 정책을 확인하세요. iOS 사용자는 시스템이 허용하는 클라이언트와 네트워크 확장 방식을 사용해야 합니다. 적합한 소프트웨어는 Android 다운로드 또는 iOS 다운로드에서 Clash Plus 같은 클라이언트를 확인할 수 있습니다.
| 프로토콜 또는 조합 | 첫 데이터 도착 비용 경향 | 지속 부하 경향 | 모바일 환경에서 확인할 점 |
|---|---|---|---|
| SS + AEAD | 낮음 | 대체로 낮음 | 암호화 알고리즘과 기기 하드웨어 가속 |
| Trojan + TLS | TCP와 TLS 연결 수립 포함 | 연결이 안정된 뒤에는 비교적 안정적 | 짧은 연결 수와 세션 재사용 |
| VLESS + TLS/REALITY | 보안 계층과 전송 방식에 따라 결정 | 조합에 따라 달라짐 | 흐름 제어, 전송 방식과 코어 지원 |
| Hysteria2 / TUIC | QUIC 연결 수립 포함 | 고속 전송이나 불안정한 네트워크에서 높아질 수 있음 | UDP 패킷 손실, 재전송과 백그라운드 연결 유지 |
5. 기본 Clash, Clash Meta와 mihomo의 코어 관계
기본 Clash의 역할
기본 Clash는 설정 파일, 규칙 기반 분기, 정책 그룹, DNS와 여러 플랫폼의 프록시 진입점이라는 기본 모델을 만들었습니다. proxies, proxy-groups, rules, mixed-port, mode처럼 기존 설정에서 사용하는 필드와 구조도 여전히 많습니다. Meta 계열과 mihomo가 폭넓은 호환성을 유지하고 있으므로 이러한 기본 구조를 이해하는 것은 여전히 유용합니다.
그러나 기본 프로젝트가 더 이상 확장되지 않으면서 최신 프로토콜과 전송 방식은 완전한 지원 범위에 포함되지 않습니다. VLESS 최신 확장, Hysteria2, TUIC, REALITY 또는 최신 DNS 기능을 포함한 설정을 기본 코어가 해석할 수 있다고 가정해서는 안 됩니다. 일부 구형 클라이언트 화면은 여전히 Clash라는 이름을 사용하지만 내부 코어는 다를 수 있습니다. 제품 이름만 보고 추측하지 말고 클라이언트 정보 화면, 코어 설정이나 실행 로그를 확인해야 합니다.
Clash Meta와 mihomo의 계승 관계
Clash Meta는 기본 Clash의 설정 모델을 바탕으로 프로토콜, DNS, 규칙 프로바이더, TUN과 네트워크 스택 기능을 확장했습니다. mihomo는 이 코어 계열이 이어서 사용하는 이름입니다. 실제 논의에서는 ‘Meta 코어’와 ‘mihomo’가 같은 기술 계열의 서로 다른 시기나 패키징 방식을 가리키는 경우가 많습니다. 새 설정은 mihomo 문서와 현재 클라이언트가 실제로 사용하는 코어를 기준으로 삼으세요. 이전 튜토리얼의 Meta 필드도 대부분 참고할 수 있지만 모든 기본값을 그대로 옮겨서는 안 됩니다.
mihomo의 주요 가치는 단순히 프로토콜 수를 늘리는 데 있지 않습니다. 프로토콜, 정책 그룹, 규칙, DNS와 TUN을 하나의 코어에서 연동할 수 있다는 점에 있습니다. SS, VMess, Trojan, VLESS, Hysteria2, TUIC 등 여러 노드를 처리하고 더 풍부한 규칙 집합과 DNS 동작을 지원합니다. 프로토콜을 해석할 수 있다고 해서 노드 연결까지 보장되는 것은 아닙니다. 서버 매개변수, 인증서, 전송 필드와 로컬 네트워크가 모두 올바라야 합니다.
그래픽 클라이언트와 코어는 나누어 이해해야 합니다. Clash Plus, Clash Verge Rev, FlClash, Clash Nyanpasu 등은 서로 다른 화면, 업데이트 방식과 시스템 통합을 제공합니다. 설정 문법과 프로토콜 기능을 실제로 결정하는 것은 내장되었거나 호출되는 코어입니다. 클라이언트가 일부 필드에 그래픽 스위치를 제공할 수도 있고 YAML 수정만 허용할 수도 있습니다. Clash Plus를 우선 추천하는 것은 다양한 플랫폼에서 그래픽 조작과 주요 설정을 폭넓게 지원하기 때문이며, 하위 프로토콜이 서버와 일치해야 한다는 사실은 바뀌지 않습니다.
설정 호환성은 ‘기본 호환성 + 확장 필드 인식’입니다
기본 포트, 일반적인 정책 그룹, DOMAIN-SUFFIX 규칙과 SS 노드만 사용하는 설정은 여러 Clash 계열 코어 사이에서 대체로 쉽게 옮길 수 있습니다. mihomo 전용 프로토콜, 규칙 집합 형식, DNS 옵션이나 TUN 확장을 추가하면 구형 코어로의 마이그레이션이 실패할 수 있습니다. 실패 방식은 세 가지입니다. 설정 검사에서 알 수 없는 필드 오류가 직접 발생하거나, 알 수 없는 필드가 무시되어 예상과 다른 동작을 하거나, 노드는 표시되지만 프로토콜 구현이 없어 연결 단계에서 실패합니다. 두 번째가 가장 발견하기 어려우므로 마이그레이션 후에는 실제 트래픽 경로를 반드시 확인해야 합니다.
설정 검사는 가장 비용이 적은 첫 단계입니다. mihomo에서는 명령어로 현재 코어가 문법과 필드를 받아들일 수 있는지 확인할 수 있습니다. 명령어의 경로는 실제 로컬 설정 위치로 바꿔야 합니다.
mihomo -t -f config.yaml
검사를 통과했다는 것은 YAML 구조와 알려진 필드가 현재 코어에서 기본적으로 유효하다는 뜻일 뿐입니다. 구독 주소에 접근할 수 있는지, 노드 인증이 올바른지, DNS 경로가 예상대로인지까지 증명하지는 않습니다. 이후 클라이언트를 실행하고 로그에서 provider 업데이트, 인증서, DNS 또는 수신 포트 오류가 있는지 확인한 다음 직접 연결 규칙, 프록시 규칙과 최종 MATCH 규칙을 각각 검증하세요.
| 코어 계열 | 설정 기반 | 프로토콜 범위 | 적합성 판단 |
|---|---|---|---|
| 기본 Clash | 규칙, 정책 그룹, DNS, 기본 프록시 | 기존 프로토콜 중심 | 기존 설정을 읽거나 기본 모델을 이해할 때 |
| Clash Meta | 기본 구조 호환 및 확장 기능 추가 | VLESS, TUIC 등의 기능 확장 | 기존 Meta 설정을 계속 마이그레이션할 때 |
| mihomo | Meta 계열을 계승하며 지속적으로 유지 관리 | 이 글의 6가지 프로토콜과 추가 확장 지원 | 새 클라이언트와 새 설정에 우선 선택 |
6. 구독 형식, 노드 필드와 호환성 판단
공유 링크, YAML과 구독 변환
일반적인 구독은 완전한 Clash YAML, 노드 공유 링크 모음, 또는 클라이언트 유형에 따라 서버가 동적으로 생성한 콘텐츠를 반환할 수 있습니다. 완전한 YAML은 노드, 정책 그룹, 규칙과 DNS를 함께 담을 수 있고 공유 링크는 보통 단일 노드만 설명합니다. 구독 변환 서비스는 원본 데이터를 특정 클라이언트 형식으로 다시 구성합니다. 세 형식은 포함하는 정보량이 다르므로 가져오기에 성공했다고 내용이 완전한 것은 아닙니다.
SS 공유 링크에는 보통 암호화 방식, 비밀번호, 서버와 포트가 포함됩니다. 기존 형식의 VMess 링크는 JSON 정보를 인코딩해 전달하는 경우가 많고, Trojan, VLESS, Hysteria2와 TUIC는 SNI, 전송 방식, 보안 계층과 기타 확장을 URI 쿼리 매개변수로 표현하는 경우가 많습니다. 중간 도구가 새 필드를 인식하지 못하면 노드 이름만 남기고 중요한 매개변수를 잃을 수 있습니다. 그 결과 ‘목록에는 있지만 모두 시간 초과되는’ 설정이 만들어집니다.
서비스 제공자가 Clash Meta 또는 mihomo용으로 명확히 표시한 구독 형식을 우선 사용하세요. 원본 공유 링크만 있다면 해당 프로토콜과 확장 필드를 인식할 수 있는 가져오기 도구를 사용해야 합니다. 여러 변환 단계를 연속해서 거치지 마세요. 각 단계에서 필드 이름이 바뀌거나 알 수 없는 매개변수가 삭제되거나 이스케이프가 변경될 수 있습니다. 구독 파싱 실패를 확인하는 방법은 구독 링크 만료 또는 파싱 실패 자가 점검 절차를 참고하세요.
최소 노드로 필드가 완전한지 확인하기
호환성 문제를 해결할 때는 구독에서 노드 하나를 복사해 별도의 테스트 설정에 넣고 서버가 제공한 모든 필드를 유지한 뒤 select 정책 그룹을 하나 만들 수 있습니다. 아래 예시는 필드 계층만 보여 주며 실제 서버 정보는 포함하지 않습니다. 들여쓰기는 공백을 사용하고 프로토콜 매개변수는 서버의 실제 값으로 바꿔야 합니다.
mixed-port: 7890
mode: rule
log-level: info
proxies:
- name: SS-Test
type: ss
server: server.example
port: 443
cipher: chacha20-ietf-poly1305
password: "your-password"
udp: true
proxy-groups:
- name: PROXY
type: select
proxies:
- SS-Test
rules:
- MATCH,PROXY
이 최소 설정은 코어가 포트를 수신하고 노드를 해석해 기본 연결을 만들 수 있는지 확인하는 데 적합합니다. 운영 환경에 필요한 DNS, 규칙 집합과 로컬 네트워크 옵션이 없으므로 기존 설정을 직접 덮어써서는 안 됩니다. 최소 설정은 작동하지만 전체 구독이 작동하지 않는다면 문제는 대개 정책 그룹 참조, 규칙 프로바이더, DNS 또는 중복 노드 이름에 있습니다. 최소 설정도 실패한다면 프로토콜 필드, 인증 정보, 서버 상태와 로컬 네트워크로 돌아가야 합니다.
파일 확장자보다 중요한 것은 필드 매핑입니다
파일 이름이 YAML이라고 해서 내용이 mihomo 구조에 맞는다는 보장은 없습니다. 유효한 문서는 올바르게 들여쓰기되어야 하며 목록 항목과 매핑 계층이 명확해야 합니다. 구독이 텍스트 형식의 오류 페이지, 로그인 안내나 시간 초과 메시지를 반환할 수도 있고, 그러면 클라이언트는 파싱 실패를 보고합니다. 확인할 때는 먼저 응답 시작 부분이 YAML 또는 노드 링크 형식에 맞는지 확인한 다음 HTTP 상태, 인코딩과 업데이트 로그를 살펴보세요.
서로 다른 코어가 같은 개념에 별칭을 허용할 수 있지만 문서화되지 않은 암시적 변환에 의존해서는 안 됩니다. 예를 들어 서버 이름은 sni 또는 servername으로 표현될 수 있고, 인증서 검증 생략 필드도 다를 수 있으며 WebSocket 경로와 요청 헤더에도 정해진 중첩 계층이 있습니다. 가장 확실한 방법은 구독 생성기가 출력한 내용을 유지하고 현재 코어가 지원하는 형식과 대조하는 것입니다. 직접 마이그레이션할 때는 한 번에 필드 하나만 바꾸고 변경 직후 설정 검사를 실행하세요.
정책 그룹은 노드 이름이나 provider 이름을 참조하기도 합니다. 노드 이름을 바꾼 뒤 그룹 내부 참조를 함께 수정하지 않으면 코어가 프록시를 찾지 못할 수 있습니다. provider 업데이트가 실패해도 기존 캐시 때문에 이전 노드가 표시되는 경우가 있어 구독이 정상이라고 오해하기 쉽습니다. 업데이트 시각, 로그와 실제 선택 항목을 확인해 클라이언트가 새 내용을 사용하는지 확인해야 합니다. 노드 목록이 비어 있거나 특정 프로토콜이 필터링되거나 업데이트 후 필드가 사라지는 문제는 대개 구독 형식과 코어 기능과 관련이 있습니다.
구독의 보안 경계와 로컬 오버라이드
구독에는 서버, 인증과 정책 정보가 포함되므로 신뢰할 수 있는 출처만 가져와야 합니다. 설정을 공유하기 전에는 실제 인증 정보를 삭제하세요. 클라이언트에서 오버라이드나 병합 기능을 제공한다면 어떤 필드가 원격 구독에서 오고 어떤 필드가 로컬에서 추가되는지 명확히 해야 합니다. 흔한 방식은 원격 콘텐츠가 노드를 제공하고 로컬 설정이 정책 그룹, 규칙과 DNS를 관리하도록 하는 것입니다. 이렇게 하면 구독 업데이트가 개인 규칙을 반복해서 덮어쓰지 않지만 병합 순서가 잘못되면 같은 이름의 그룹이 교체될 수 있습니다.
대규모로 수정하기 전에는 사용할 수 있는 설정 사본을 저장하고 현재 코어 유형을 기록하세요. 구독 업데이트 후 연결에 문제가 생기면 클라이언트, 프로토콜과 DNS를 동시에 바꾸기보다 먼저 설정을 되돌릴 수 있습니다. 한 번에 여러 변수를 바꾸면 문제의 원인을 찾을 수 없습니다. 자주 묻는 질문과 오류 현상은 자주 묻는 질문에서 계속 확인할 수 있습니다.
7. 네트워크, 기기와 작업에 맞춰 프로토콜 선택하기
데스크톱 업무와 일반 웹 탐색
Windows, macOS와 Linux 데스크톱은 일반적으로 전원 공급이 안정적이고 클라이언트를 장시간 실행할 수 있습니다. 업무용 웹 페이지, 문서 동기화, 코드 저장소와 메신저에서는 연결 안정성, 첫 데이터 도착 시간의 일관성과 호환성을 중시합니다. 이미 검증된 SS, Trojan 또는 VLESS TCP 노드가 있다면 안정적인 항목을 우선 사용하고 프로토콜 이름이 최신이라는 이유로 자주 옮길 필요는 없습니다. SS는 설정이 간단하고 Trojan은 TLS 배포가 명확하며 VLESS는 최신 서버 조합을 이미 사용하는 환경에 적합합니다.
클라이언트로는 그래픽 인터페이스, 시스템 프록시, TUN과 구독 관리가 필요한 사용자에게 Clash Plus가 적합합니다. Clash Verge Rev, FlClash와 Clash Nyanpasu도 운영체제와 조작 선호에 따라 선택할 수 있습니다. 서버나 스크립트 환경에서는 mihomo 코어를 직접 사용할 수 있습니다. 클라이언트 차이는 주로 인터페이스와 시스템 통합에 있으며 프로토콜 연결 여부는 여전히 코어와 노드 필드가 결정합니다. 설치 경로는 다운로드 센터에 모아 두었습니다.
사무실 네트워크에서 UDP 성능이 확실하지 않다면 먼저 TCP 프로토콜로 안정적인 기준을 만든 뒤 Hysteria2나 TUIC를 테스트하세요. 정책 모드는 rule로 유지해 도메인이 규칙에 따라 해당 정책 그룹으로 들어가게 하는 것이 좋습니다. 전역 모드는 짧은 진단에 적합하지만 규칙 오류를 숨기는 용도로 사용해서는 안 됩니다. 노드 선택에 url-test를 사용할 때는 테스트 주소의 지연으로 최적 노드를 고르는 기능이지 모든 업무의 실제 처리량을 계속 평가하는 기능이 아니라는 점을 이해해야 합니다.
높은 지연, 무작위 패킷 손실과 지속 전송
네트워크 왕복 시간이 길고 간헐적인 패킷 손실이 뚜렷하며 동영상, 원격 파일이나 지속 다운로드가 주 작업이라면 Hysteria2와 TUIC를 우선 테스트할 가치가 있습니다. QUIC 전송과 혼잡 제어가 보수적인 TCP보다 전송을 빠르게 복구할 수 있습니다. 다만 테스트 전 UDP를 지속적으로 사용할 수 있는지 확인하고 서버가 비교 가능한 회선에 있는지 보장해야 합니다. UDP가 제한된다면 Trojan, VLESS 또는 SS의 TCP 조합이 일반적으로 더 예측 가능합니다.
지속 전송 환경에서는 시작 후 몇 초의 최고값이 아니라 10분 이상 관찰해야 합니다. 평균 처리량, 최저 처리량, 연결 끊김 횟수와 동시에 웹을 사용할 때의 지연을 기록하세요. 높은 처리량 때문에 다른 애플리케이션의 대기열이 눈에 띄게 늘어난다면 동시성을 낮추거나 대역폭 매개변수를 조정해야 하며 전송 상한을 계속 높여서는 안 됩니다. 가정용 공유 네트워크에서는 단일 기기의 처리량과 전체 지연 사이의 균형이 특히 중요합니다.
실시간 음성, 온라인 회의와 대화형 원격 데스크톱에서는 최고 대역폭보다 지터와 패킷 손실 복구가 더 중요할 수 있습니다. 적합한 네트워크에서 Hysteria2나 TUIC가 변동을 줄일 수 있지만 지속적인 재전송은 오히려 역효과를 낼 수 있습니다. 실제 통화나 상호작용 테스트를 진행하고 안정적인 TCP 노드를 fallback으로 남겨 두세요. fallback 정책 그룹은 순서대로 사용 가능 여부를 확인해 명확한 주·백업 관계에 적합합니다. 지연이 낮은 항목을 선택하는 url-test와는 다른 로직입니다.
모바일 기기와 잦은 네트워크 전환
Android와 iOS에서 선택할 때는 배터리, 백그라운드 제한과 네트워크 마이그레이션을 함께 고려해야 합니다. 가벼운 탐색, 메시지와 이메일은 성숙한 SS, Trojan 또는 VLESS 노드부터 선택하고, 장시간 동영상과 대용량 파일 작업에서는 Hysteria2와 TUIC를 비교하세요. 기기가 Wi-Fi와 모바일 네트워크 사이를 자주 오간다면 QUIC 연결 복구가 더 매끄러운지 관찰할 수 있습니다. 다만 운영체제가 네트워크를 전환할 때 잠시 재연결될 가능성은 여전히 있습니다.
모바일 테스트는 최소 한 번의 완전한 사용 주기 동안 진행해야 합니다. 화면 밝기, 사용하는 앱 조합과 네트워크 조건을 비슷하게 유지하면서 같은 작업을 수행한 뒤 배터리 변화를 비교하세요. 순간 CPU 사용량이 높다고 총 전력 소모가 반드시 큰 것은 아닙니다. 전송을 더 빨리 끝내 무선 모듈의 활성 시간을 줄일 수도 있기 때문입니다. 반대로 백그라운드에서 작은 패킷을 계속 보내고 자주 재시도하면 부하가 낮아 보여도 깨우기 시간이 길어질 수 있습니다. 클라이언트가 시스템에 의해 종료된다면 즉시 프로토콜을 바꾸기보다 먼저 백그라운드 권한을 조정하세요.
라우터, 저전력 호스트와 홈 게이트웨이
라우터와 저전력 호스트는 프로세서, 메모리와 발열 여유가 제한적이므로 지속적인 CPU 사용량을 중심으로 프로토콜을 선택해야 합니다. SS는 대체로 무난한 출발점이며 구체적인 암호화 알고리즘은 하드웨어 성능과 함께 테스트해야 합니다. Trojan의 TLS, VMess의 캡슐화와 고속 전송에서의 QUIC는 계산 부담을 높일 수 있습니다. 기기가 회선 속도를 충분히 내지 못한다면 프로토콜 병목인지 시스템 전달 병목인지 판단하기 전에 단일 코어 사용량, 소프트 IRQ와 온도를 먼저 확인하세요.
홈 게이트웨이로 사용할 때는 단일 기기보다 연결 수와 DNS 요청량이 대개 많습니다. 규칙 집합 규모, TUN 네트워크 스택, 연결 추적과 로그 수준도 리소스에 영향을 줍니다. 전체 부하를 해결하기 위해 프로토콜만 바꾸지 말고 중복 규칙을 정리하고 디버그 로그를 장시간 실행하지 않으며 DNS 캐시에 적절한 정책을 설정하세요. mihomo 코어는 완전한 규칙과 다중 프로토콜을 지원해야 하는 게이트웨이에 적합하지만 그래픽 클라이언트는 보통 개인용 컴퓨터에 더 알맞습니다.
| 사용 환경 | 우선 선택 | 중점 검증 항목 | 대체 방안 |
|---|---|---|---|
| 데스크톱 업무와 웹 탐색 | SS、Trojan、VLESS TCP | 첫 데이터, 안정성, 시스템 프록시 | 검증된 TCP 노드로 전환 |
| 높은 지연에서의 지속 전송 | Hysteria2、TUIC | UDP, 장시간 처리량, 대기열 지연 | Trojan 또는 VLESS TCP |
| 모바일에서의 가벼운 사용 | SS、Trojan、VLESS | 백그라운드 유지, 배터리, 네트워크 전환 | 재시도를 줄이고 안정적인 노드 선택 |
| 저전력 게이트웨이 | SS와 간소화된 규칙 | 단일 코어 사용량, 온도, 연결 수 | 동시성과 규칙 복잡도 낮추기 |
8. 검증, 마이그레이션과 문제 위치 찾기
반복 가능한 검증 절차 만들기
프로토콜 마이그레이션을 기존 노드 삭제부터 시작해서는 안 됩니다. 먼저 현재 사용 가능한 설정을 유지하고 새 노드를 별도 정책 그룹에 추가한 뒤 같은 규칙으로 테스트하세요. 첫 단계에서는 설정 검사를 실행해 YAML과 필드를 현재 코어가 해석할 수 있는지 확인합니다. 두 번째 단계에서는 클라이언트에서 새 노드를 선택해 기본 TCP 연결을 테스트합니다. 세 번째 단계에서는 DNS 조회와 규칙 적중을 확인합니다. 네 번째 단계에서 UDP, 지속 전송과 네트워크 전환을 테스트합니다. 각 단계에서 한 계층만 검증하면 실패 시 빠르게 되돌릴 수 있습니다.
기본 연결에 성공한 뒤에는 짧은 연결, 장시간 연결과 다중 동시 연결을 각각 검증해야 합니다. 짧은 연결은 캐시되지 않은 페이지 여러 개를 연속으로 열어 첫 데이터 도착 시간과 실패율을 관찰합니다. 장시간 연결은 파일 전송이나 동영상 재생을 10분 이상 유지하며 변동을 확인합니다. 다중 연결은 일상적인 부하에서 정책 그룹과 코어가 안정적인지 확인하는 데 사용합니다. 모바일에서는 일정 시간 화면을 잠근 뒤 다시 잠금 해제해 연결이 복구되는지도 확인하세요. 한 번의 테스트로 모든 상태를 확인할 수는 없습니다.
프록시가 실제로 적용되었는지 판단할 때는 화면의 스위치만 보지 마세요. 시스템 프록시 또는 VPN 상태, 연결 패널의 대상 도메인, 규칙 적중과 출구 결과를 확인해야 합니다. 최초 연결의 전체 과정은 노드 선택, 지연 측정과 프록시 적용 확인을 참고하세요. 모든 노드가 동시에 시간 초과된다면 노드 시간 초과 문제 해결 순서에 따라 클라이언트, 노드와 로컬 네트워크를 구분하세요.
계속 재설치하지 말고 오류 계층별로 원인 찾기
설정 파싱 오류는 일반적으로 연결 전에 발생하며 로그에 YAML 줄 번호, 알 수 없는 필드나 정책 그룹 참조가 표시됩니다. 이때는 들여쓰기, 콜론 뒤 공백, 목록 계층과 코어 지원 여부를 확인하면 되며 방화벽을 바꿀 필요는 없습니다. 노드는 표시되지만 연결이 시간 초과된다면 서버, 포트, 프로토콜 유형, 인증 정보와 로컬 네트워크를 확인하세요. TLS 핸드셰이크 오류는 시스템 시간, SNI, 인증서 검증과 ALPN을 중점적으로 확인합니다. QUIC 노드가 인증 후 연결을 끊는다면 UDP 경로, 혼잡 제어와 서버 세대를 추가로 확인해야 합니다.
일부 웹사이트만 이상할 때는 프로토콜 자체가 첫 번째 의심 대상이 아닙니다. 도메인이 예상한 정책 그룹으로 전달되는지, DNS가 현재 모드에 적합한 결과를 반환하는지, 애플리케이션이 시스템 프록시를 우회하는지를 확인하세요. TUN 모드는 더 많은 애플리케이션 트래픽을 가로챌 수 있지만 라우팅, 권한과 DNS 인계라는 변수를 추가합니다. 문제를 해결할 때는 잠시 최소 규칙을 사용해 연결을 확인한 뒤 규칙과 DNS 설정을 하나씩 복원하여 전역 모드가 규칙 오류를 장시간 숨기지 않도록 하세요.
모든 프로토콜이 갑자기 작동하지 않는다면 먼저 구독 업데이트, 시스템 시간, 로컬 수신 포트, 시스템 프록시, VPN 권한, 방화벽과 현재 네트워크를 확인하세요. 특정 노드 하나만 실패하고 같은 프로토콜의 다른 노드는 정상이라면 서버나 노드 필드 문제일 가능성이 큽니다. 한 프로토콜만 전부 실패한다면 코어 지원, 구독 변환과 해당 프로토콜이 의존하는 전송 계층을 비교하세요. 이렇게 그룹별로 판단하는 편이 노드를 무작위로 하나씩 클릭하는 것보다 빠릅니다.
기존 코어에서 mihomo로 마이그레이션하기
마이그레이션 전에 기존 설정의 포트, 프록시 노드, 정책 그룹, 규칙, DNS, TUN과 provider를 목록으로 정리하세요. 첫 번째 단계에서는 기본 포트, 사용 가능한 노드 하나, select 그룹 하나와 MATCH 규칙만 옮겨 코어가 실행되는지 확인합니다. 두 번째 단계에서 DNS와 자주 사용하는 규칙을 추가하고, 세 번째 단계에서 원격 provider, TUN과 새 프로토콜을 추가합니다. 단계별로 옮기면 어느 기능 묶음에서 차이가 발생했는지 명확해집니다.
기본 Clash 설정의 기본 필드는 대체로 계속 사용할 수 있지만 기존 튜토리얼의 기본값을 mihomo의 최적 설정으로 그대로 간주해서는 안 됩니다. 특히 DNS 강화 모드, Fake-IP 범위, 스니핑, TUN 네트워크 스택과 규칙 집합 형식은 현재 클라이언트와 시스템에 맞춰 조정해야 합니다. 사용 중단 경고가 나타나면 로그를 끄는 것으로 숨기지 말고 현재 코어 문서에 따라 필드를 교체하세요.
새 프로토콜로 마이그레이션할 때는 서버가 생성한 전체 노드 객체를 유지하세요. VLESS의 흐름 제어와 보안 계층, Hysteria2의 인증과 대역폭 필드, TUIC의 UUID, 비밀번호와 혼잡 제어를 기존 노드 템플릿을 보고 임의로 작성해서는 안 됩니다. 설정 검사를 통과한 뒤 노드를 url-test나 fallback 그룹에 추가하세요. 자동 그룹의 테스트 주소와 간격은 추가 요청을 발생시키므로 모바일에서는 간격을 너무 짧게 설정하지 않는 편이 좋습니다.
장기적으로 유지 관리 가능한 설정 만들기
안정적인 설정은 변경 주기가 서로 다른 내용을 분리해야 합니다. 구독은 노드 업데이트를 담당하고, 로컬 정책 그룹은 선택 로직을 표현하며, 규칙은 트래픽을 분류하고, DNS와 TUN은 시스템 연결을 담당하도록 구성하세요. 같은 노드를 여러 위치에서 중복 관리하지 말고 원격 업데이트가 중요한 로컬 설정을 덮어쓰게 하지도 마세요. 노드 이름은 명확하고 안정적으로 정하며 정책 그룹 이름도 자주 바꾸지 않아야 규칙과 애플리케이션의 참조가 끊기지 않습니다.
변경할 때마다 네 가지를 기록하세요. 어느 계층을 수정했는지, 어떤 문제를 해결하려는지, 어떻게 검증할지, 어떻게 되돌릴지를 남기는 것입니다. 프로토콜 마이그레이션에 명확한 목표가 없다면 현재의 안정적인 방식을 유지해야 합니다. SS, VMess, Trojan, VLESS, Hysteria2와 TUIC에는 각각 적합한 범위가 있으며 최종 선택은 사용 가능한 서버, 네트워크 특성, 기기 리소스와 작업 유형이 함께 결정해야 합니다. 프로토콜의 최신 여부만으로 순서를 정해서는 안 됩니다.
간소화한 결정 경로는 다음과 같습니다. 일반 웹 탐색에는 안정적인 TCP 프로토콜을 먼저 선택하고, 높은 지연의 지속 전송에는 Hysteria2나 TUIC를 테스트합니다. 새 프로토콜과 확장은 mihomo를 우선 사용하고, 모바일에서는 백그라운드 복구와 총 배터리 사용량을 추가로 비교합니다. 구독에 문제가 생기면 먼저 형식과 필드를 확인하고, 프로토콜을 바꾼 뒤에는 설정, 연결, DNS, 규칙, 애플리케이션의 5개 계층을 차례로 검증하세요. 이 과정을 거치면 프로토콜 선택은 일회성 속도 측정이 아니라 반복 가능한 엔지니어링 판단이 됩니다.