1. 먼저 프로토콜 선택 기준 세우기
프로토콜 이름은 속도 등급이 아닙니다
Clash 클라이언트의 프로토콜 유형은 기본적으로 클라이언트와 서버가 연결을 설정하고, 인증하며, 데이터를 캡슐화하고, 혼잡을 처리하는 방식을 나타냅니다. 특정한 속도 등급을 직접 의미하지는 않습니다. 같은 프로토콜이라도 서버, 경로, 기기에 따라 결과는 크게 달라질 수 있습니다. 서버와의 거리, 출구 대역폭, 왕복 지연 시간, 패킷 손실률, 서버 부하, 로컬 네트워크 품질이 실제 체감 성능을 결정하는 경우가 많습니다. 프로토콜 목록을 단순히 ‘최신 프로토콜은 항상 빠르고 구형 프로토콜은 항상 느리다’고 나열하면 잘못된 결론에 이르기 쉽고, 노드를 바꾼 뒤 경로 차이를 프로토콜 차이로 오해할 수도 있습니다.
선택할 때는 문제를 세 가지 계층으로 나누어 보세요. 첫째는 전송 계층으로 TCP 기반인지 UDP 기반인지, 또는 여러 전송 방식을 조합할 수 있는지 확인합니다. 둘째는 프로토콜 계층으로 인증, 암호화, 연결 다중화를 처리하는 방식을 봅니다. 셋째는 구현 계층으로 현재 클라이언트가 어떤 코어를 사용하는지, 해당 코어가 구독에 선언된 필드를 완전히 지원하는지 확인합니다. 세 계층이 모두 맞아야 노드를 정상적으로 불러오고 안정적으로 실행할 수 있습니다. 클라이언트 화면에 특정 프로토콜 이름이 표시된다고 해서 모든 확장 매개변수가 지원된다는 뜻은 아닙니다. 구독 변환기가 YAML을 출력했다고 해서 대상 코어가 그 안의 모든 필드를 이해하는 것도 아닙니다.
제약 조건을 먼저 확인하고 선호도를 비교하세요
실제 선택은 네 가지 제약 조건을 확인하는 것부터 시작할 수 있습니다. 먼저 서비스 제공자가 어떤 노드 유형을 제공하는지 확인하세요. 프로토콜은 연결 양쪽이 함께 지원해야 하므로 클라이언트에서 VMess 노드를 VLESS나 Trojan으로 바꿀 수 없습니다. 다음으로 클라이언트 코어를 확인합니다. 오리지널 Clash는 초기의 주요 프로토콜과 기본 규칙 체계를 비교적 안정적으로 지원하지만, 최신 프로토콜과 확장 기능은 대체로 Clash Meta 또는 후속 프로젝트인 mihomo가 필요합니다. 그다음 기기 환경을 확인하세요. 데스크톱은 추가 메모리 사용과 지속 연결을 비교적 잘 감당하지만, 모바일 기기는 백그라운드 연결 유지, 무선 모듈 활성화 횟수, 불안정한 네트워크에서의 전환을 살펴봐야 합니다. 마지막으로 네트워크 특성을 확인합니다. 안정적이고 패킷 손실이 적은 네트워크와 지연 시간이 높고 약간의 패킷 손실이 있는 네트워크에 적합한 방식은 서로 다릅니다.
이러한 제약 조건을 확인한 뒤에야 연결 시작 속도, 지속 처리량, 동시 연결 성능, 리소스 사용량, 설정 복잡도를 비교하는 것이 의미가 있습니다. 웹 브라우징과 대용량 파일 전송에서 중요한 지표도 다릅니다. 웹 접속은 DNS, 핸드셰이크 횟수, 첫 바이트 시간을 더 중요하게 보고, 대용량 파일 전송은 지속 처리량과 혼잡 제어를 중시합니다. 실시간 음성·영상은 지터, 패킷 손실 복구, 대기열 지연을 함께 고려해야 합니다. 한 번의 속도 측정은 측정 시점의 한 경로만 보여 줄 뿐 하루 동안의 부하 변화를 반영하지 않으며, 실제 사용 테스트를 대신할 수도 없습니다.
| 판단 기준 | 우선 확인할 내용 | 자주 하는 오해 |
|---|---|---|
| 서버 조건 | 프로토콜 유형, 포트, 인증 정보, 전송 매개변수가 모두 있는가 | 클라이언트의 프로토콜 이름만 바꾸고 서버도 같은 프로토콜을 지원해야 한다는 점을 무시함 |
| 코어 기능 | 프로토콜, 전송 계층, TLS, UDP 및 확장 필드 지원 여부 | 화면에서 노드를 가져올 수 있으면 모든 기능을 사용할 수 있다고 생각함 |
| 네트워크 경로 | 지연 시간, 패킷 손실, 지터, 대역폭 및 네트워크 전환 빈도 | 경로 품질 차이를 모두 프로토콜 탓으로 돌림 |
| 기기 제약 | 프로세서, 메모리, 발열, 배터리 및 백그라운드 정책 | 최고 속도만 비교하고 장시간 배터리 사용량과 온도를 확인하지 않음 |
반복 가능한 테스트 방법 만들기
두 노드를 비교할 때는 서버 지역, 테스트 시간, 클라이언트 코어, DNS 설정, 규칙 모드를 가능한 한 동일하게 유지해야 합니다. 먼저 다른 대용량 작업을 중지한 뒤 연결 설정, 웹 페이지 첫 로딩, 연속 다운로드, 동영상 탐색, 대기 후 복구를 각각 관찰합니다. 각 방법을 최소 몇 차례 반복하고, 가장 좋은 한 번이 아니라 중앙값에 가까운 결과를 기록하세요. 프로토콜을 바꾸면서 서버도 함께 바꾸면 성능 향상이 프로토콜 때문인지 경로 때문인지 판단할 수 없습니다. 모바일에서는 화면 잠금 후 복구, Wi-Fi와 모바일 네트워크 전환, 저전력 모드 테스트도 추가해야 합니다. 이런 과정에서 포그라운드 속도 측정보다 문제가 더 쉽게 드러나는 경우가 많습니다.
이 페이지의 결론은 환경과 분리된 절대적인 프로토콜 순위를 제시하기 위한 것이 아니라 설계상의 선택지를 이해하기 위한 것입니다. 설정이 간단하고 서버가 안정적이며 코어 지원이 완전한 전통 프로토콜이, 매개변수는 복잡하지만 배포 환경과 맞지 않는 최신 프로토콜보다 안정적인 경우가 많습니다. 합리적인 선택의 목표는 불필요한 변수를 줄여 대상 기기와 일상적인 네트워크에서 연결을 예측 가능하게 유지하는 것이지, 단일 테스트에서 가장 높은 수치를 좇는 것이 아닙니다.
2. SS, VMess, Trojan, VLESS의 설계상 선택지
Shadowsocks: 구조가 간결하고 구현 품질의 영향을 받음
Shadowsocks는 보통 SS로 줄여 부르며, 비교적 가벼운 방식으로 TCP와 UDP 트래픽을 암호화하고 전달하는 것이 핵심입니다. 설정 항목이 적은 편이고, 일반적으로 서버 주소, 포트, 비밀번호, 암호화 방식이 필요합니다. 프로토콜 구조가 간결하고 구현이 널리 보급되어 데스크톱, 모바일, 저사양 기기에서도 쉽게 배포할 수 있습니다. 안정적인 전달만 필요하고 설정 복잡도를 낮추고 싶은 환경에서는 여전히 SS가 분명한 장점을 가집니다. 실제 처리 부담은 프로토콜 자체뿐 아니라 선택한 암호화 알고리즘이 기기의 하드웨어 가속을 활용할 수 있는지에도 영향을 받습니다.
SS의 호환성 문제는 주로 암호화 방식 이름과 확장 플러그인에서 발생합니다. 최신 AEAD 방식과 구형 방식은 보안 특성과 구현 지원에서 차이가 있으며, 구독에 플러그인 매개변수가 포함되어 있다면 대상 코어가 플러그인 유형과 옵션도 이해해야 합니다. 서버, 포트, 비밀번호만 복사하고 플러그인 필드를 빠뜨리면 노드가 정상적으로 로드되더라도 통신을 완료하지 못할 수 있습니다. 이전할 때는 화면에 가장 눈에 띄는 네 가지 정보만 보지 말고 노드 객체 전체를 비교해야 합니다.
VMess: 기능이 풍부하지만 설정 필드가 많음
VMess는 일찍부터 완성도 높은 생태계를 형성한 프로토콜로, 보통 UUID 식별자, 전송 계층 옵션, TLS 설정, 경로 매개변수와 함께 사용됩니다. TCP, WebSocket 등 여러 전송 방식 위에서 동작할 수 있으므로 VMess로 표시된 두 노드라도 내부 구조는 완전히 다를 수 있습니다. 클라이언트는 주소, 포트, UUID, 전송 네트워크, Host, 경로, TLS 서버 이름, 인증서 검증 정책을 정확히 처리해야 합니다. 변환 과정에서 핵심 필드 하나라도 사라지면 핸드셰이크가 실패할 수 있습니다.
VMess의 장점은 오랜 기간 축적된 도구 체계와 성숙한 구독 생태계이며, 많은 클라이언트가 일반적인 링크 형식을 인식합니다. 반면 매개변수 조합이 많아 문제를 해결할 때 ‘프로토콜을 지원하는가’만 확인해서는 부족합니다. 예를 들어 WebSocket을 사용하는 노드의 경로와 Host는 서버 설정에 따라 결정됩니다. TLS를 활성화했다면 서버 이름과 인증서의 대응 관계도 정확해야 합니다. 일부 구형 설정에는 최신 구현에서 더 이상 중시하지 않는 호환 필드가 포함되어 있을 수 있습니다. mihomo로 이전할 때는 클라이언트나 신뢰할 수 있는 구독 생성기가 현재 형식을 출력하도록 하고, 오래된 필드를 그대로 이어 붙이지 않는 것이 좋습니다.
Trojan: TLS로 인증과 전송을 처리
Trojan의 일반적인 설정은 TLS 연결을 중심으로 구성되며, 서버, 포트, 비밀번호, 서버 이름, 인증서 검증 설정이 자주 포함됩니다. 클라이언트 입장에서는 일반 TCP 프로토콜보다 완전한 TLS 핸드셰이크와 인증서 확인 절차가 추가되므로 도메인 해석, 시스템 시간, SNI, 인증서 체인이 연결 결과에 모두 영향을 줍니다. 설정이 올바르면 Trojan의 사용 방식은 비교적 직관적이지만, 설정이 잘못되면 TLS 핸드셰이크 실패, 인증서 이름 불일치, 원격 서버에 의한 연결 종료로 나타나는 경우가 많습니다.
Trojan이라고 해서 모든 연결의 비용이 같아지는 것은 아닙니다. 최초 TLS 핸드셰이크에는 추가 왕복과 암호화 연산이 필요하며, 연결 재사용, 세션 복구, 서버 구현이 이후 성능에 영향을 줍니다. 지연 시간이 높은 환경에서 애플리케이션이 짧은 연결을 자주 만들면 핸드셰이크 비용이 더 뚜렷하게 나타납니다. 지속적인 전송에서는 이 고정 비용이 전체 전송 시간에 분산됩니다. 노드에 WebSocket, gRPC 등의 전송 방식이 더해졌다면 네트워크 유형과 관련 매개변수도 계속 확인해야 하며, Trojan의 비밀번호와 서버 이름만 남겨서는 안 됩니다.
VLESS: 간결한 프로토콜 계층, 조합에 맡기는 기능
VLESS는 UUID를 통한 식별을 자주 사용하지만, 프로토콜 자체가 전통적인 의미의 콘텐츠 암호화를 담당하지는 않습니다. 실제 보안 특성은 대체로 TLS나 지원되는 다른 전송 조합에 의해 결정됩니다. 프로토콜 계층의 중복 작업을 줄이고 전송, 암호화, 확장 기능을 조합 설정에 맡기는 설계입니다. 덕분에 확장성이 높지만 호환성 판단은 구체적인 조합에 더 크게 의존합니다. 노드 유형이 VLESS라는 사실만으로 특정 Clash 코어에서 사용할 수 있는지 판단할 수 없습니다. 전송 네트워크, TLS, 흐름 제어, 기타 확장 필드를 함께 확인해야 합니다.
mihomo에서 VLESS를 사용할 때 기본 노드와 일반적인 전송 방식은 비교적 잘 지원되지만, 특정 구현에 의존하는 최신 확장 기능은 코어 문서와 클라이언트 업데이트 상태를 확인해야 합니다. 구독 제공자가 다른 코어에만 맞는 필드를 출력하면 가져온 뒤 무시되거나 오류가 발생할 수 있습니다. 문제를 해결할 때는 먼저 복잡한 조합을 서버가 허용하는 기본 형태로 줄여 인증 정보와 TLS가 정상 작동하는지 확인한 다음 전송 방식과 확장 매개변수를 하나씩 복원하세요. 여러 옵션을 동시에 바꾸는 것보다 이 순서가 원인을 찾기 쉽습니다.
| 프로토콜 | 주요 설정 항목 | 주목할 만한 장점 | 이전 시 확인할 사항 |
|---|---|---|---|
| SS | 암호화 방식, 비밀번호, UDP, 플러그인 | 구조가 간결하고 구현 범위가 넓으며 설정이 단순함 | 암호화 방식과 플러그인 매개변수를 빠뜨리지 않아야 함 |
| VMess | UUID, 전송 네트워크, 경로, Host, TLS | 성숙한 생태계와 다양한 조합 방식 | 구형 필드와 전송 계층 필드를 다시 확인해야 함 |
| Trojan | 비밀번호, SNI, 인증서, 전송 방식 | 설정 흐름이 명확하고 TLS 체계가 성숙함 | 도메인, 인증서 이름, 시스템 시간 |
| VLESS | UUID, TLS, 전송, 확장 기능 | 프로토콜 계층이 간결하고 조합 유연성이 높음 | 기본 유형만이 아니라 전체 조합을 코어가 지원하는지 확인해야 함 |
3. Hysteria2와 TUIC: 지연 시간과 패킷 손실에 대응하는 UDP 방식
UDP를 전송 방식으로 사용하는 이유
기존 TCP 연결은 안정적인 전송과 혼잡 제어가 성숙하다는 장점이 있지만, 프록시 터널의 외부 계층과 애플리케이션의 내부 계층이 동시에 TCP를 사용하면 패킷 손실 복구, 재전송, 혼잡 제어가 서로 영향을 줄 수 있습니다. 특히 왕복 지연 시간이 높거나 간헐적인 패킷 손실이 있는 네트워크에서는 외부 계층의 패킷 하나가 손실되어 여러 내부 연결이 동시에 대기할 수 있습니다. UDP 기반의 최신 프로토콜은 사용자 공간에서 스트림, 다중화, 확인 응답, 혼잡 제어를 구성하므로 다양한 네트워크 조건에 더 유연하게 대응할 수 있습니다. Hysteria2와 TUIC는 모두 이러한 방식에 속하지만 구현 목표, 매개변수 표현, 코어 지원 세부 사항은 완전히 같지 않습니다.
UDP 방식의 가치를 ‘신뢰성을 건너뛴다’고 이해해서는 안 됩니다. 애플리케이션 데이터는 설계에 따라 확인, 재전송, 순서 정리를 수행해야 하며, 단지 이 작업을 사용자 공간의 프로토콜 스택이 구성하는 것입니다. UDP 방식이 대역폭을 저절로 만들어 내는 것도 아닙니다. 서버 출구 대역폭이 부족하거나 무선 신호가 약하거나 경로가 계속 혼잡하면 어떤 프로토콜도 물리적 조건의 제약을 받습니다. 주요 장점은 더 적합한 혼잡 제어, 헤드 오브 라인 블로킹 영향 감소, 다중 스트림 동시 처리 시 더 유연한 스케줄링에 있습니다.
Hysteria2: 비교적 집중된 설정과 불안정한 네트워크에서의 처리량
Hysteria2는 QUIC 관련 기능을 기반으로 하며, 일반적인 설정에는 서버 주소, 포트, 인증 비밀번호, TLS 서버 이름, 인증서 검증 옵션이 포함됩니다. 일부 배포 환경에서는 업로드·다운로드 대역폭 안내나 혼잡 제어 관련 매개변수도 지정합니다. 높은 지연 시간과 일정 수준의 패킷 손실이 있는 경로에서 사용 가능한 처리량을 유지하는 것이 주요 설계 목표 중 하나이므로, 지역 간 연결, 모바일 네트워크, 품질 변동이 큰 회선에 자주 사용됩니다. 다만 대역폭 매개변수는 클수록 좋은 것이 아닙니다. 실제 사용 가능한 대역폭보다 크게 입력하면 송신 측에서 대기열과 추가 패킷 손실이 발생할 수 있고, 너무 낮게 입력하면 처리량을 스스로 제한하게 됩니다.
Hysteria2를 사용할 때는 먼저 UDP 경로가 작동하는지 확인한 다음 인증과 TLS를 점검하세요. 노드가 전혀 연결되지 않으면 도메인 해석, 서버 포트, 시스템 시간, SNI, 인증서를 순서대로 확인할 수 있습니다. 연결은 되지만 속도 변동이 크다면 실제 업로드·다운로드 속도, 라우터 대기열, 무선 네트워크 품질을 계속 관찰해야 합니다. 일부 네트워크는 장시간 UDP 세션의 매핑 유지 시간이 짧아 유휴 상태 뒤 첫 요청이 실패하거나 자주 재연결될 수 있습니다. 이때는 시스템 백그라운드 정책, 라우터 NAT 상태, 클라이언트 연결 로그를 함께 확인해 원인을 판단하세요.
TUIC: 다중화와 연결 관리에 주목
TUIC 역시 UDP 기반의 최신 전송 기능을 사용하며, 노드 설정에는 일반적으로 서버, 포트, UUID, 비밀번호, TLS 서버 이름, 혼잡 제어 또는 UDP 전달 방식 등의 매개변수가 포함됩니다. 구현 단계에 따라 서로 다른 필드 표현이 사용된 적이 있어 구독 출처와 코어 사이에 형식 차이가 있으면 노드를 인식하면서도 특정 선택 매개변수가 예상대로 적용되지 않는 경우가 가장 흔합니다. 따라서 TUIC를 이전할 때는 type만 확인하지 말고 인증 필드 이름, 혼잡 제어 이름, UDP 릴레이 모드, 인증서 설정도 함께 확인해야 합니다.
TUIC의 다중화는 반복적인 핸드셰이크를 줄이고 여러 애플리케이션 스트림이 하위 연결을 공유하도록 도와줍니다. 그러나 공유가 많을수록 항상 좋은 것은 아닙니다. 하나의 하위 연결에서 혼잡이 계속되면 지나친 집중으로 더 많은 요청이 함께 영향을 받을 수 있고, 독립 연결을 지나치게 많이 만들면 핸드셰이크, 메모리, NAT 매핑 비용이 증가합니다. 클라이언트와 코어는 대체로 합리적인 기본값을 제공하므로, 로그로 병목을 확인하기 전에는 인터넷에 떠도는 매개변수 조각만 보고 크게 조정하지 않는 것이 좋습니다.
UDP 프로토콜의 네트워크 및 기기 한계
안정적이고 지연 시간이 낮으며 패킷 손실이 거의 없는 유선 네트워크에서는 Hysteria2나 TUIC가 단순한 TCP 방식보다 뚜렷한 개선을 보이지 않을 수 있습니다. 사용자 공간 프로토콜 스택, 암호화, 타이머 처리에도 프로세서 리소스가 필요하기 때문입니다. 반대로 지연 시간이 높거나 중간 정도의 무작위 패킷 손실이 있는 환경에서는 더 매끄러운 처리량을 유지할 가능성이 큽니다. 패킷 손실이 심한 혼잡에서 발생한다면 송신 속도를 무작정 높이는 것은 대기열만 악화시킵니다. 이때는 먼저 대역폭 안내 값을 낮추고 라우터 버퍼를 확인하며 동시 작업을 줄여야 합니다.
기업, 학교, 공공 Wi-Fi는 서로 다른 UDP 정책을 적용할 수 있으므로 네트워크를 바꾸면 결과도 달라질 수 있습니다. 모바일 기기는 이동통신 NAT, 백그라운드 동결, 무선 모듈 절전 정책의 영향도 받습니다. 따라서 UDP 프로토콜을 사용할 때는 비교용으로 작동하는 TCP 방식을 하나 남겨 두고, 연결에 문제가 생겼다고 코어, DNS, 규칙을 동시에 바꾸지 않는 것이 좋습니다. 비교 노드는 문제가 프로토콜 경로에 있는지 전체 설정 환경에 있는지 판단하는 데 도움이 됩니다.
proxies:
- name: "Hysteria2-Test"
type: hysteria2
server: test.example.com
port: 443
password: "your-password"
sni: test.example.com
skip-cert-verify: false
- name: "TUIC-Test"
type: tuic
server: test.example.com
port: 443
uuid: 00000000-0000-0000-0000-000000000000
password: "your-password"
sni: test.example.com
skip-cert-verify: false
위 예시는 mihomo 설정 구조를 설명하기 위한 것으로, 주소와 인증 정보는 예시 값이며 실제 연결에는 사용할 수 없습니다. 실제 설정은 서버에서 제공해야 하며 서버 이름과 인증서가 일치해야 합니다. 직접 입력한 뒤에는 먼저 클라이언트의 설정 검사 기능으로 필드 이름과 들여쓰기가 올바른지 확인한 다음 정책 그룹에 추가해 테스트하세요.
4. 연결 속도, 처리량, 리소스 사용량 비교 방법
‘속도’를 네 가지 지표로 나누기
사용자가 체감하는 속도에는 최소한 연결 설정 시간, 첫 바이트 시간, 지속 처리량, 동시 연결 안정성이 포함됩니다. 연결 설정 시간은 DNS, TCP 또는 QUIC 핸드셰이크, TLS 핸드셰이크, 프로토콜 인증의 영향을 받습니다. 첫 바이트 시간에는 대상 사이트의 응답과 정책 매칭도 포함됩니다. 지속 처리량은 회선 대역폭, 혼잡 제어, 패킷 손실 복구, 프로세서 성능의 영향을 크게 받으며, 동시 연결 안정성은 연결 재사용, 파일 디스크립터, 메모리, 서버 부하와 관련됩니다. 속도 측정 페이지의 최고치만으로는 웹 페이지 첫 로딩 지연, 동영상 탐색 끊김, 다수의 작은 요청이 대기열에 쌓이는 현상을 설명할 수 없습니다.
SS는 프로토콜 처리가 비교적 간결해 하드웨어 가속이 잘 작동하는 기기에서 추가 부담이 낮은 편입니다. Trojan과 TLS를 활성화한 VMess·VLESS는 TLS 핸드셰이크를 고려해야 하지만, 지속 연결이 설정된 뒤에는 고정된 핸드셰이크 비용이 장시간 전송에 분산됩니다. Hysteria2와 TUIC는 사용자 공간의 전송 로직이 더 복잡해 프로세서와 메모리를 더 사용할 수 있지만, 지연 시간이 높거나 패킷 손실이 있는 네트워크에서는 유연한 혼잡 제어로 더 안정적인 유효 처리량을 얻을 수 있습니다. 최종 결과는 네트워크 조건에 따라 달라지며 프로토콜 계층만으로 결정되지 않습니다.
암호화와 프로세서 성능
최신 데스크톱 프로세서와 모바일 칩은 일반적인 암호화 연산에 하드웨어 최적화를 제공하는 경우가 많지만, 알고리즘, 런타임 라이브러리, 코어 구현에 따라 활용 정도는 다릅니다. 저전력 라우터, 구형 스마트폰, 보급형 서버는 고속 전송 중 단일 코어 병목에 더 쉽게 도달합니다. 이때 네트워크 대역폭에는 여유가 남아 있지만 코어 프로세스 사용량이 계속 높아지고 기기 온도가 오르며 처리량이 더 이상 증가하지 않는 현상이 나타납니다. 프로토콜을 바꾸면 결과가 달라질 수 있지만, 과도한 로그, 복잡한 규칙, 트래픽 스니핑, 많은 연결 재사용이 활성화되어 있지 않은지도 확인해야 합니다. 이런 기능 역시 리소스를 소모합니다.
메모리 사용량은 코어 기본 실행, 규칙 집합, DNS 캐시, 연결 상태, 버퍼에서 주로 발생합니다. 프로토콜 자체의 정적인 차이보다 규칙 집합 크기와 동시 연결 수가 만드는 차이가 더 큰 경우가 많습니다. 대형 규칙 제공자를 여러 개 불러오거나 로그를 지나치게 오래 보관하거나 여러 구독을 동시에 실행하고 복잡한 DNS 분기를 활성화하면 SS에서 Trojan으로 바꾸는 것보다 더 큰 차이가 생길 수 있습니다. 서버나 라우터에 mihomo를 배포할 때는 시스템 네트워크 스택과 캐시에 사용할 메모리를 남겨 두어 메모리 부족으로 잦은 회수가 발생하지 않게 해야 합니다.
TCP 및 QUIC 계열 프로토콜의 패킷 손실 특성
TCP는 안정적인 네트워크에서 효율적이고 구현이 성숙했으며, 시스템 커널도 오랫동안 최적화되어 왔습니다. 하지만 지연 시간과 패킷 손실이 함께 발생하면 단점이 더 뚜렷해집니다. 특히 여러 애플리케이션 스트림이 하나의 외부 TCP 연결에 묶여 있을 때 데이터 세그먼트 하나가 손실되면 이후 데이터 전달이 막힐 수 있습니다. QUIC 계열 방식은 스트림별 상태를 분리해 관리하므로 한 스트림의 패킷 손실이 다른 스트림에 미치는 영향을 줄이고, 사용자 공간에서 적합한 혼잡 제어를 사용할 수 있습니다. 다만 UDP 패킷도 라우터 대기열과 네트워크 경로를 지나므로 심한 혼잡에서는 역시 속도를 낮춰야 합니다.
패킷 손실의 영향을 판단할 때는 연결 테스트를 한 번 실행하는 것만으로 부족합니다. 연속 요청, 안정적인 다운로드, 실시간 서비스에서 일정한 간격으로 멈춤이 발생하는지 관찰해야 합니다. Hysteria2나 TUIC로 바꾼 뒤 지속 처리량은 개선되지만 기기가 눈에 띄게 뜨거워진다면 네트워크 이점과 기기 비용이 동시에 존재하는 것이므로 사용 시간을 기준으로 판단해야 합니다. 개선이 짧은 속도 측정에서만 나타나고 장시간 전송에서 점차 떨어진다면 서버 제한 속도, 발열로 인한 클럭 저하, 잘못된 대역폭 매개변수와 관련될 수 있습니다.
| 프로토콜 유형 | 핸드셰이크 특성 | 처리 부담 경향 | 관찰하기 좋은 환경 |
|---|---|---|---|
| SS | 설정 및 인증 절차가 간결함 | 대체로 낮으며 암호화 방식의 영향을 받음 | 리소스가 제한된 기기, 안정적인 네트워크, 단순한 전달 |
| VMess | 전송 계층과 TLS 조합의 영향을 받음 | 중간 수준이며 필드와 캡슐화 조합이 많음 | 성숙한 설정과 기존 구독 생태계 |
| Trojan / VLESS | TLS 핸드셰이크가 포함되는 경우가 많음 | 중간 수준이며 전송 조합에 따라 달라짐 | 표준 TLS 기능과 명확한 인증서 관리가 필요한 환경 |
| Hysteria2 / TUIC | UDP 기반의 최신 핸드셰이크와 세션 | 다소 높을 수 있으며 사용자 공간 전송 작업이 많음 | 지연 시간이 높고 패킷 손실이 있으며 여러 스트림 조정이 필요한 환경 |
더 신뢰할 수 있는 비교 절차
먼저 같은 지역에 있고 회선 조건이 비슷한 두 노드를 선택한 뒤 같은 클라이언트와 같은 규칙 모드에서 테스트합니다. 1차 테스트에서는 최초 연결과 웹 페이지 열기 시간을 기록합니다. 2차 테스트에서는 몇 분 동안 지속적으로 전송하며 최고치가 아닌 평균 처리량을 관찰합니다. 3차 테스트에서는 자주 사용하는 여러 애플리케이션 요청을 동시에 시작해 상호작용 지연을 확인합니다. 4차 테스트에서는 연결을 유휴 상태로 둔 뒤 복구해 세션이 안정적인지 확인합니다. 테스트 중에는 코어 프로세스의 프로세서 사용량, 메모리, 기기 온도를 기록하고 서로 다른 시간대에 반복하세요. 결과가 크게 달라진다면 즉시 프로토콜 매개변수를 바꾸기보다 먼저 회선 부하를 원인으로 고려해야 합니다.
5. 모바일 배터리, 백그라운드 연결, 네트워크 전환
배터리 소모는 암호화 연산만으로 결정되지 않습니다
모바일 기기의 배터리 소모는 프로세서 연산, 무선 모듈 활성 시간, 백그라운드 깨우기, 데이터 재전송, 시스템 VPN 서비스가 함께 결정합니다. 프로토콜의 암호화 부담은 그중 일부일 뿐입니다. 연결을 계속 유지하되 활동 빈도가 낮은 방식이 자주 연결을 끊고 다시 설정하는 방식보다 배터리를 덜 사용할 수 있습니다. 이론상 처리 효율이 높은 방식도 네트워크가 불안정해 계속 재전송하면 더 많은 전력을 소비할 수 있습니다. 프로토콜을 평가할 때는 몇 분간의 속도 측정 뒤 배터리 비율만 보지 말고 포그라운드 브라우징, 화면 잠금 대기, 메시지 수신, 네트워크 전환, 동영상 전송을 포함한 완전한 사용 주기를 관찰해야 합니다.
SS는 설정이 간단해 모바일 기기에서 안정적인 성능을 얻기 쉬운 편이지만, 최종 결과는 UDP, DNS, 시스템 VPN 구현에 따라 달라집니다. Trojan, VMess, VLESS가 TLS나 전송 계층 연결을 자주 설정하면 깨우기와 핸드셰이크 비용이 증가합니다. 클라이언트가 연결을 합리적으로 재사용하고 세션을 유지하면 이 비용은 줄어듭니다. Hysteria2와 TUIC는 불안정한 네트워크에서 장시간 대기와 반복 전송을 줄여 유효 에너지 효율을 개선할 수 있지만, 사용자 공간 프로토콜 처리, 타이머, 지속적인 UDP 세션이 백그라운드 활동을 늘릴 수도 있습니다. 모든 스마트폰과 네트워크에 적용되는 고정된 배터리 소모 순위는 없습니다.
Android의 백그라운드 및 배터리 정책
Android 클라이언트는 일반적으로 시스템 VPN 인터페이스를 통해 트래픽을 처리합니다. 제조사별 백그라운드 관리 기능은 애플리케이션 프로세스, VPN 서비스, 네트워크 활동을 제한할 수 있으므로 화면 잠금 후 연결이 끊겼다고 해서 반드시 프로토콜 문제인 것은 아닙니다. Clash Plus, Clash Meta for Android, FlClash, Surfboard를 사용할 때는 먼저 시스템 상태 표시줄에 VPN 연결이 계속 표시되는지 확인한 다음 배터리 최적화로 앱이 일시 중지되지 않았는지 확인하세요. 특정 프로토콜만 화면 잠금 후 복구가 느리다면 연결 유지와 세션 복구를 비교하고, 모든 프로토콜이 동시에 멈춘다면 시스템 백그라운드 정책이나 앱 프로세스 종료일 가능성이 큽니다.
Android에서는 네트워크 전환도 별도로 테스트할 가치가 있습니다. Wi-Fi에서 모바일 네트워크로 전환하면 로컬 IP, NAT 매핑, 경로가 모두 바뀝니다. 기존 TCP 연결은 대개 다시 설정해야 하지만, QUIC 계열 프로토콜은 구현에 따라 더 유연하게 대응할 수 있습니다. 다만 클라이언트, 시스템 VPN, 서버가 함께 지원해야 합니다. 전환 후 연결됨으로 표시되지만 트래픽이 흐르지 않는다면 먼저 클라이언트 연결을 일시 중지했다가 다시 시작하고, DNS가 이전 네트워크 환경을 계속 가리키는지 확인하세요. 자동 전환이 잦은 기기에서는 불필요한 동시 연결을 줄여 전환마다 많은 세션이 다시 만들어지지 않도록 하는 것이 좋습니다.
iOS의 시스템 VPN 수명 주기
iOS 클라이언트도 시스템 Network Extension의 수명 주기와 메모리 제한의 영향을 받습니다. Clash Plus는 시스템이 제공하는 네트워크 확장을 통해 트래픽을 처리하며, 백그라운드 상태는 시스템이 통합적으로 관리합니다. 복잡한 노드 매개변수, 지나치게 큰 규칙 집합, 많은 DNS 캐시와 연결 수는 확장의 메모리 부담을 높일 수 있습니다. 모바일 설정을 리소스가 넉넉한 데스크톱 설정 그대로 복사해서는 안 되며, 특히 중복된 대형 규칙 집합을 여러 개 동시에 불러오지 않는 것이 좋습니다. 프로토콜이 연결되지 않으면 먼저 설정 자체가 정상적으로 해석되는지 확인한 뒤 개별 노드만 실패했는지 전체 VPN 확장이 종료되었는지 살펴보세요.
iOS에서 배터리 사용량을 비교할 때는 화면 밝기, 앱 사용 방식, 네트워크 유형을 비슷하게 유지하고 시스템 배터리 페이지에서 일정 시간 동안 관찰하세요. 특정 방식이 포그라운드 속도는 높지만 백그라운드 활동이 크게 증가한다면 지속 연결을 줄이거나 필요하지 않은 트래픽 스니핑을 끄고 규칙을 조정해 볼 수 있습니다. 문제를 프로토콜 교체만으로 해결하려 해서는 안 됩니다. iOS 클라이언트가 필요하다면 iOS 다운로드 섹션에서 Clash Plus의 App Store 링크와 공식 웹사이트 clashplus.io를 확인하세요.
불안정한 네트워크에서 배터리와 사용성의 균형
안정적인 가정용 Wi-Fi에서는 가벼운 TCP 방식으로 충분한 경우가 많으며 Hysteria2나 TUIC를 계속 사용해도 체감할 만한 이점이 없을 수 있습니다. 통근 중이나 모바일 네트워크, 접속 지점을 자주 바꾸는 환경에서는 최신 UDP 방식이 동영상 버퍼링과 연결 멈춤을 줄이는지 비교해 볼 수 있습니다. 스마트폰 온도, 백그라운드 활동, 데이터 사용량이 눈에 띄게 늘어난다면 기본 매개변수로 돌아가 실제 대역폭보다 높은 업로드·다운로드 값을 입력하지 마세요. 높은 송신 속도로 생긴 대기열과 재전송은 사용성을 떨어뜨리고 무선 모듈의 작동 시간도 늘립니다.
모바일에서는 두 개의 정책 진입점을 유지하는 것이 좋습니다. 하나는 일상적으로 검증한 안정적인 노드를 선택하고, 다른 하나는 지연 시간이 높거나 패킷 손실이 있는 네트워크에 적합한 노드를 선택합니다. 문제가 생기면 전체 설정을 즉시 다시 불러오기보다 먼저 정책을 전환하세요. 이렇게 하면 단일 노드 문제인지 클라이언트 전체 문제인지 빠르게 판단하고, 설정을 자주 수정해 생기는 변수를 줄일 수 있습니다. 구독 업데이트 후 프로토콜 필드가 바뀌었다면 새 노드를 먼저 수동으로 테스트한 뒤 자동 선택이나 장애 조치 정책에 추가하세요.
6. 오리지널 Clash, Clash Meta, mihomo의 계열 관계
오리지널 Clash: 설정 체계의 기반
오리지널 Clash는 널리 사용되는 YAML 설정 구조, 규칙 시스템, 정책 그룹, 제어 인터페이스를 정립했습니다. 일반적인 proxies, proxy-groups, rules, DNS, 포트 필드는 모두 이 체계에서 비롯되었습니다. 많은 클라이언트가 이미 코어를 바꿨더라도 화면과 설정 개념은 여전히 오리지널 Clash의 구성 방식을 이어 갑니다. 따라서 오리지널 설정 모델을 이해하는 것은 여전히 유용합니다. 노드는 연결을 설명하고, 정책 그룹은 선택과 자동 테스트를 담당하며, 규칙은 요청을 적절한 정책으로 전달하고, DNS는 도메인 해석과 규칙 매칭에 영향을 줍니다.
오리지널 Clash의 프로토콜 범위는 유지 관리가 이루어지던 시기의 일반적인 요구에 가깝습니다. SS, VMess, Trojan 등의 기본 설정에는 안정적이고 폭넓게 호환되는 문법을 제공하지만, Hysteria2, TUIC, VLESS 확장, 규칙 기능, 최신 DNS 기능을 사용하려면 대체로 후속 코어가 필요합니다. 오리지널 코어만 지원하는 구형 클라이언트를 계속 사용하면 구독은 가져와지지만 새 노드가 건너뛰어지거나, 알 수 없는 필드 오류가 발생하거나, 기능이 조용히 무시될 수 있습니다.
Clash Meta: 기존 모델의 확장
Clash Meta는 Clash 설정 체계와의 호환성을 기반으로 더 많은 프로토콜, 전송 방식, 규칙 기능, DNS 옵션을 추가했습니다. 중요한 점은 단순히 노드 유형을 늘린 것이 아니라 기존 정책 그룹과 규칙 모델이 새로운 프로토콜 구현을 계속 담을 수 있게 했다는 데 있습니다. 사용자는 익숙한 설정 구조 대부분을 유지하면서 VLESS, Hysteria2, TUIC 등의 기능을 사용할 수 있습니다. 다만 ‘오리지널과 호환된다’는 것은 많은 기본 필드와 구성 방식을 이어 사용할 수 있다는 뜻이지, 모든 Meta 설정을 오리지널 Clash에 역으로 전달할 수 있다는 의미는 아닙니다.
Meta 전용 프로토콜이나 확장 필드를 한 번이라도 사용하면 단방향 호환 관계가 형성됩니다. mihomo는 대체로 많은 오리지널 Clash 설정을 이해할 수 있지만, 오리지널 Clash는 모든 mihomo 설정을 이해하지 못합니다. 이전하기 전에는 프록시 유형, 규칙 유형, DNS 모드, 트래픽 스니핑, 규칙 제공자 형식, 정책 그룹 옵션을 포함한 확장 지점을 확인해야 합니다. 구형 클라이언트와 최신 클라이언트를 함께 관리해야 한다면 공통으로 지원되는 필드만 사용하거나 구독 시스템에서 대상별 설정을 두 개 생성하세요. 하나의 복잡한 설정으로 모든 코어와 억지로 호환시키는 방식은 피해야 합니다.
mihomo: 프로젝트 이름의 계승과 현재 구현
mihomo는 Clash Meta 이후 사용된 프로젝트 이름으로, 많은 클라이언트 화면과 문서에는 여전히 Meta, Clash Meta Core, mihomo가 함께 표시됩니다. 판단할 때는 클라이언트 이름만 보지 말고 실제 코어를 확인해야 합니다. Clash Plus, Clash Verge Rev, FlClash, Clash Nyanpasu 등의 그래픽 클라이언트는 설정 관리, 시스템 프록시, 로그, 업데이트 작업을 화면으로 제공할 수 있지만, 최종적으로 노드 프로토콜을 해석하고 실행하는 것은 코어입니다. 클라이언트 업데이트와 코어 업데이트가 별도로 진행될 수도 있으므로 화면 기능이 정상이라고 해서 구독의 최신 필드를 모두 지원한다는 뜻은 아닙니다.
이 사이트의 다운로드 페이지에서는 그래픽 클라이언트와 mihomo 코어 패키지를 따로 안내합니다. 일반적인 데스크톱 및 모바일 사용자는 그래픽 클라이언트를 우선 선택하고, 모든 플랫폼을 지원하는 대표 선택지인 Clash Plus를 사용하면 통합 화면에서 가져오기, 정책 선택, 시스템 프록시 관리를 처리하기 쉽습니다. mihomo 코어를 직접 다운로드하는 방식은 서버, 라우터, 설정과 프로세스를 직접 관리해야 하는 환경에 더 적합합니다. 코어 자체는 완전한 데스크톱 앱이 아니므로 시스템 프록시, 시작 시 실행, 설정 편집, 업데이트는 외부 도구가 담당해야 합니다.
| 코어 계열 | 역할 | 프로토콜 및 기능 범위 | 설정 호환 방향 |
|---|---|---|---|
| 오리지널 Clash | 기본 설정 모델과 규칙 체계 | 유지 관리 시기의 주요 프로토콜과 규칙 기능을 지원 | 기본 문법의 출처이며 이후 확장 기능 대부분을 읽지 못함 |
| Clash Meta | 기본 모델과 호환되며 프로토콜 및 규칙을 확장 | VLESS, 최신 UDP 프로토콜 및 다양한 기능 추가 | 대부분의 기본 설정은 상위 코어로 이전할 수 있지만 확장 설정은 역방향 이전이 어려움 |
| mihomo | Meta 프로젝트의 후속 이름이자 현재 구현 | 확장 프로토콜, DNS, 규칙 기능을 이어받아 유지 관리 | 현재 문서에 따라 필드를 확인하고, 오래된 이름만으로 지원 범위를 추정하지 않음 |
클라이언트가 어떤 코어를 사용하는지 확인하는 방법
먼저 클라이언트의 ‘정보’, ‘코어’, ‘실행 상태’ 페이지에서 애플리케이션 이름과 코어 이름을 구분하세요. 다음으로 설정 검사나 시작 로그를 확인합니다. 코어는 로드 과정에서 알 수 없는 필드, 프록시 해석 실패, 규칙 오류를 보고하는 경우가 많습니다. 그다음 mihomo에서만 지원하는 노드를 하나 선택해 테스트하세요. 가져오는 과정에서 노드가 필터링된다면 구독 변환 대상과 현재 코어가 맞지 않을 가능성이 있습니다. 일부 클라이언트는 코어를 전환하거나 코어 파일을 별도로 업데이트할 수 있으므로 설치 패키지 파일명만 보고 판단해서는 안 됩니다.
구형 클라이언트에서 이전할 때는 새 클라이언트에 구독 사본을 먼저 가져오고, 유일하게 작동하는 설정을 덮어쓰지 마세요. 노드 수, 정책 그룹, 규칙이 예상과 일치하는지 확인한 다음 DNS와 프로토콜 연결을 테스트합니다. mihomo와 오리지널 Clash의 자세한 차이는 mihomo와 오리지널 Clash의 차이에서도 확인할 수 있습니다. 설정이 시작 단계에서 바로 오류를 내면 첫 번째 해석 오류부터 처리하세요. 이후 오류는 앞선 구조 문제로 인한 연쇄 오류일 수 있습니다.
7. 구독 형식, YAML 필드, 이전 호환성
노드 링크, 구독 목록, 전체 설정은 서로 다른 계층입니다
단일 노드 링크는 일반적으로 프로토콜, 서버, 포트, 인증 매개변수 등 하나의 프록시에 필요한 정보만 설명합니다. 구독 목록은 여러 노드의 모음으로 Base64 텍스트, 전용 링크 목록, 서버 생성 형식을 사용할 수 있습니다. 완전한 Clash 설정에는 노드뿐 아니라 정책 그룹, 규칙, DNS, 포트, 기타 실행 매개변수도 포함됩니다. 구독을 클라이언트로 가져올 때 클라이언트가 해석, 변환, 병합, 덮어쓰기를 수행할 수 있으므로 최종적으로 로드되는 YAML은 원격 원본과 완전히 같지 않을 수 있습니다.
호환성 문제는 변환 과정에서 자주 발생합니다. 원본 구독에 대상 코어가 알지 못하는 프로토콜이 포함되어 있으면 변환기가 알 수 없는 필드를 버릴 수 있습니다. 또는 다른 생태계의 필드를 Clash 문법으로 매핑하면서 특정 확장 매개변수를 반영하지 못할 수도 있습니다. 노드 수가 맞아 보인다고 해서 각 노드의 구조가 완전하다는 뜻은 아닙니다. 이전 후에는 서로 다른 프로토콜에서 하나씩 노드를 표본 검사하세요. 특히 WebSocket, gRPC, TLS, Reality 계열 확장이나 UDP 매개변수가 있는 노드는 핵심 필드가 빠지지 않았는지 확인해야 합니다.
YAML 구조와 유형을 정확하게 유지해야 합니다
YAML은 들여쓰기로 계층을 표현하므로 목록 항목, 객체, 문자열 유형을 정확히 작성해야 합니다. 포트는 보통 숫자로 쓰고 불리언 값은 true 또는 false로 작성합니다. 특수 문자가 포함된 비밀번호와 이름은 따옴표를 사용하는 것이 좋습니다. Tab 문자, 전각 구두점, 잘못된 들여쓰기, 중복 키는 설정 해석을 실패하게 만들 수 있습니다. 클라이언트에서 문법 검사를 제공한다면 기본 설정을 교체하기 전에 사용하세요. 직접 편집할 때는 한 번에 작은 부분만 수정하고, 직전에 로드할 수 있었던 사본을 보관하세요.
proxies:
- name: "SS-Test"
type: ss
server: test.example.com
port: 8388
cipher: aes-128-gcm
password: "your-password"
udp: true
proxy-groups:
- name: "수동 선택"
type: select
proxies:
- "SS-Test"
- DIRECT
rules:
- MATCH,수동 선택
이 설정은 노드, 정책 그룹, 규칙 사이의 참조 관계를 보여 줍니다. 정책 그룹의 이름은 노드 이름과 정확히 일치해야 하며, 규칙 끝에서 참조하는 정책 그룹도 실제로 존재해야 합니다. 예시 주소와 비밀번호로는 직접 연결할 수 없습니다. 실제 구독에서 노드 이름에 쉼표, 특수 기호, 중복 이름이 포함되면 변환기가 이름을 변경할 수 있으므로 직접 작성한 정책 그룹 참조도 함께 업데이트해야 합니다.
기본 필드 호환성이 동작의 완전한 일치를 의미하지는 않습니다
같은 필드라도 코어에 따라 기본값이 다를 수 있으며, 일부 구형 필드는 계속 허용되더라도 더 이상 권장되지 않을 수 있습니다. 이전할 때 가장 안전한 방법은 대상 클라이언트에서 기본 설정을 새로 생성하고, 노드·정책 그룹·정말 필요한 규칙만 옮기는 것입니다. 구형 클라이언트가 내보낸 실행 매개변수 전체를 그대로 복사하는 방식은 피하세요. 시스템 프록시 포트, 제어 인터페이스, 캐시 경로, 외부 리소스 디렉터리는 대개 기기 환경에 따라 달라지므로 여러 플랫폼에서 그대로 재사용하기 적합하지 않습니다.
DNS는 또 다른 고위험 영역입니다. 오리지널 Clash, Meta, mihomo의 DNS 기능과 사용 가능한 필드는 계속 발전해 왔으므로 구형 설정의 nameserver, fallback, fake-ip 범위, 필터 규칙을 현재 코어에 맞춰 다시 확인해야 합니다. 노드는 연결되지만 일부 도메인만 해석되지 않는다면 문제를 ‘시스템 요청이 클라이언트로 들어오는가’, ‘Clash가 어떤 해석기를 사용하는가’, ‘해석 결과가 규칙 매칭에 어떻게 반영되는가’의 세 단계로 나누어 보세요. 자세한 요청 경로는 Clash DNS 설정 자세히 보기에서 확인할 수 있습니다.
구독 업데이트 실패와 로컬 오버라이드
클라이언트는 일반적으로 구독 주소, 원격 설정 캐시, 로컬 오버라이드를 저장합니다. 원격 설정에서 생성된 파일을 직접 편집하면 다음 업데이트에서 수정 내용이 덮어써질 수 있고, 오버라이드 규칙의 범위가 너무 넓으면 업데이트 후 새 노드 필드가 삭제될 수도 있습니다. 원본 구독은 보관하고, 클라이언트가 지원하는 오버라이드 계층에서 정책 그룹이나 규칙을 추가하는 것이 좋습니다. 업데이트에 실패하면 먼저 주소에 접근할 수 없는지, 응답 내용이 비어 있는지, 인증 정보가 만료되었는지, 다운로드는 성공했지만 해석에 실패했는지를 구분하세요. 앞의 두 가지는 가져오기 단계의 문제이고 뒤의 두 가지는 콘텐츠 단계의 문제이므로 해결 방향이 다릅니다.
예약 업데이트의 간격을 지나치게 짧게 설정하지 마세요. 자주 요청한다고 노드가 계속 빨라지는 것은 아니며, 오히려 반복 해석, 정책 그룹 재구성, 모바일 백그라운드 깨우기가 늘어날 수 있습니다. 구독 제공자가 업데이트 주기를 명시했다면 그 권장 사항을 따르세요. 별도 요구가 없다면 실제 변경 빈도에 맞춰 합리적인 주기를 선택합니다. 업데이트 후 노드 수가 갑자기 줄었다면 기존 캐시를 먼저 보존하고 사용 가능한 설정을 즉시 삭제하지 마세요. 관련 처리 순서는 Clash 구독 업데이트 실패 원인과 자동 업데이트 간격 설정을 참고할 수 있습니다.
| 이전 대상 | 대체로 바로 이전 가능 | 다시 확인해야 할 항목 |
|---|---|---|
| 기본 노드 | 서버, 포트, 인증 정보 | 전송 확장, TLS, 플러그인, UDP 옵션 |
| 정책 그룹 | select, url-test 등의 기본 구성 방식 | 테스트 매개변수, 노드 필터, 상태 확인 동작 |
| 규칙 | DOMAIN, IP-CIDR, MATCH 등의 일반 규칙 | 확장 규칙 유형과 규칙 제공자 형식 |
| DNS | 기본 해석기 주소와 활성화 의도 | 모드, fallback, fake-ip, 필터 로직 |
| 애플리케이션 설정 | 일반적으로 여러 플랫폼에서 복사하지 않는 것이 좋음 | 포트, 경로, 시스템 프록시, 시작 방식 |
8. 기기와 네트워크 환경에 맞춘 최종 선택
안정적인 데스크톱 네트워크: 호환성과 유지 관리 비용을 우선
Windows, macOS, Linux 데스크톱 기기가 안정적인 광대역에 연결되어 있다면 프로토콜 차이보다 서버 경로 차이가 더 큰 경우가 많습니다. 이미 신뢰할 수 있는 SS, Trojan, VMess, VLESS 노드가 있다면 프로토콜 이름이 오래되었다는 이유만으로 바꿀 필요는 없습니다. 현재 클라이언트가 완전히 지원하고, 구독 필드가 명확하며, 서버가 안정적으로 관리되는 방식을 우선 선택하세요. 그래픽 인터페이스가 필요하다면 먼저 다운로드 페이지에서 Clash Plus를 선택한 뒤 플랫폼 요구 사항에 따라 Clash Verge Rev, FlClash, Clash Nyanpasu 또는 목록에 있는 다른 클라이언트를 비교할 수 있습니다.
데스크톱에서 처음 설정할 때는 복잡한 오버라이드를 곧바로 쌓기보다 규칙 모드를 사용하는 것이 좋습니다. 먼저 노드 직접 연결 테스트, 정책 그룹 전환, DNS를 확인한 뒤 추가 규칙을 불러오세요. 같은 서비스에서 여러 프로토콜을 제공한다면 같은 지역의 노드를 선택해 단일 변수 비교를 진행할 수 있습니다. 안정적인 네트워크에서는 최고치보다 첫 로딩, 장시간 안정성, 리소스 사용량을 우선 확인하세요. SS는 설정이 간단하고, Trojan과 VLESS는 TLS 매개변수에 의존하는 경우가 많으며, VMess는 전송 필드를 빠짐없이 보존해야 합니다. 설정과 경로가 더 성숙한 방식이라면 어떤 프로토콜이든 일상적인 선택으로 적합할 수 있습니다.
지연 시간이 높거나 패킷 손실이 약간 있는 환경: Hysteria2와 TUIC 비교
지역 간 연결, 모바일 핫스팟, 무선 품질 변동이 큰 환경에서는 Hysteria2와 TUIC를 테스트해 볼 수 있습니다. 먼저 클라이언트가 mihomo를 사용하는지 확인하고 구독에서 노드 필드를 모두 출력하는지 확인하세요. 테스트는 기본 매개변수로 기준선을 만든 뒤 시작하며, 처음부터 높은 대역폭 값을 입력하지 마세요. 지속 다운로드가 더 매끄럽고 동영상 탐색 후 복구가 빠르며 기기 리소스도 감당할 만하다면 최신 UDP 방식이 현재 경로에 적합할 수 있습니다. 반대로 유휴 상태 후 연결이 자주 끊기거나 특정 네트워크에서 UDP 세션을 전혀 만들 수 없다면 Trojan, VLESS, SS를 대체 진입점으로 남겨 두세요.
Hysteria2는 인증과 TLS 설정을 비교적 집중적으로 구성하고 불안정한 네트워크에서 처리량을 테스트하려는 환경에 더 적합합니다. TUIC는 인증 필드, 다중화, 혼잡 제어, UDP 릴레이 방식이 대상 코어와 일치하는지 더 주의 깊게 확인해야 합니다. 두 프로토콜 모두 서버 설정과 분리해 임의로 변환해서는 안 됩니다. 서버가 둘 중 하나만 제공한다면 그 구현을 중심으로 테스트해야 하며, 이름만 보고 다른 방식이 반드시 더 빠르다고 판단해서는 안 됩니다.
모바일 기기: 최고 속도보다 안정적인 복구를 우선
Android와 iOS를 선택할 때는 화면 잠금, 백그라운드, 네트워크 전환 테스트를 포함해야 합니다. 가정용 Wi-Fi를 주로 사용한다면 안정적인 SS, Trojan, VLESS가 균형 잡힌 성능을 내기 쉽습니다. 모바일 네트워크에서 지연 시간이 높고 무작위 패킷 손실이 있다면 Hysteria2나 TUIC를 테스트할 수 있지만 배터리 사용량, 온도, 백그라운드 활동도 함께 관찰해야 합니다. 화면 잠금 후 시스템이 클라이언트를 일시 중지한다면 먼저 시스템의 백그라운드 허용 정책을 조정하고, 모든 연결 끊김을 프로토콜 탓으로 돌리지 마세요.
모바일 설정에서는 규칙 집합과 동시 연결 규모를 제한하고 데스크톱 설정 전체를 스마트폰에 그대로 복사하지 않는 것이 좋습니다. 검증된 안정 정책과 불안정한 네트워크용 정책을 하나씩 남겨 두고, 전환할 때는 노드나 정책 그룹만 바꾸세요. 구독 업데이트 후에는 먼저 테스트한 다음 자동 선택 그룹에 넣습니다. 이렇게 하면 갑작스러운 호환성 문제를 줄이고 이상이 노드, 프로토콜, 시스템 VPN 수명 주기 중 어디에서 발생했는지 판단하기 쉬워집니다.
라우터와 서버: 리소스 예산이 상한을 결정
라우터, 보조 라우터, 소형 서버에서 mihomo를 직접 실행할 때는 먼저 프로세서 아키텍처, 사용 가능한 메모리, 저장 공간, 시스템 서비스 관리 방식을 확인해야 합니다. 저전력 기기에서는 단순한 프로토콜과 적당한 규칙을 사용하는 편이 안정적입니다. 복잡한 DNS, 트래픽 스니핑, 대형 규칙 집합, 최신 UDP 프로토콜이 겹치면 단일 코어가 가득 차거나 메모리 압박이 발생할 수 있습니다. 배포 전에는 적은 수의 노드와 기본 규칙으로 실행해 장시간 리소스를 관찰한 뒤 기능을 하나씩 추가하세요.
라우터가 전체 로컬 네트워크의 트래픽을 담당하면 동시 연결 수가 한 대의 컴퓨터보다 훨씬 많아집니다. 프로토콜 다중화, 연결 추적, DNS 캐시, 로그가 모두 리소스 요구량을 키울 수 있습니다. 사용량이 많은 시간대에 속도가 떨어진다면 프로세서, 메모리, 온도, 네트워크 인터페이스, 상위 회선을 함께 확인해야 하며 프로토콜만 바꿔서는 안 됩니다. mihomo 코어를 직접 사용한다는 것은 프로세스 감시, 설정 권한, 업데이트 절차를 직접 처리해야 한다는 뜻입니다. 이러한 작업에 익숙하지 않다면 데스크톱이나 모바일 그래픽 클라이언트가 유지 관리 비용이 더 낮습니다.
이전 및 검증 체크리스트
구형 클라이언트에서 mihomo 클라이언트로 이전할 때는 먼저 구독 주소와 현재 작동하는 설정을 백업한 다음 대상 클라이언트를 설치하세요. Clash Plus를 우선 선택하고 새 클라이언트에 구독을 다시 추가하되 기존 앱 데이터를 덮어쓰지 않는 것이 좋습니다. 가져오기가 끝나면 노드 수와 프로토콜 분포를 확인하고, 실제 존재하는 SS, VMess, Trojan, VLESS, Hysteria2, TUIC 노드를 각각 선택해 테스트합니다. 그다음 정책 그룹, 규칙 모드, DNS, 시스템 프록시를 확인하고 마지막으로 시작 시 실행, 백그라운드 권한 등의 앱 설정을 처리하세요.
노드를 검증할 때는 설정 해석 가능 여부, 노드 연결 완료 여부, 도메인 해석 여부, 규칙이 예상한 정책을 선택하는지, 지속 전송이 안정적인지, 화면을 잠그거나 유휴 상태로 둔 뒤 복구되는지를 정해진 순서대로 확인하세요. 첫 단계에서 실패했다면 속도 측정 매개변수를 계속 조정해서는 안 됩니다. 노드에는 연결되지만 웹 페이지가 열리지 않는다면 DNS와 시스템 프록시를 확인하세요. 지속 전송 단계에서만 문제가 발생할 때 혼잡, 패킷 손실, 리소스 사용량을 중점적으로 비교합니다. 인터넷 연결 불가, 구독 업데이트 실패, 시작 오류가 발생하면 문제 해결에서 증상별 안내를 확인하세요.
단순화한 선택 순서
- 먼저 서버가 무엇을 제공하는지 확인: 클라이언트는 로컬에서 한 프로토콜을 다른 프로토콜로 변환할 수 없습니다.
- 다음으로 코어가 완전히 지원하는지 확인: Hysteria2, TUIC, VLESS 확장은 mihomo를 우선 사용하세요.
- 안정적인 네트워크에서는 유지 관리 비용을 우선: 설정이 완전하고 안정적으로 작동하는 SS, Trojan, VMess, VLESS는 모두 일상적인 방식으로 사용할 수 있습니다.
- 지연 시간이 높고 패킷 손실이 있을 때 최신 UDP를 테스트: 기본 매개변수로 기준선을 만들고 처리량, 온도, 배터리 사용량을 함께 관찰하세요.
- 이전할 때 복구용 설정을 보존: 노드, 정책, DNS, 시스템 프록시를 각각 검증해 모든 변수를 한 번에 바꾸지 않도록 하세요.
최종 선택에서 유일한 정답을 찾을 필요는 없습니다. 데스크톱, 스마트폰, 라우터가 서로 다른 클라이언트와 프로토콜을 사용할 수 있으며, 안정적인 네트워크와 불안정한 네트워크를 두 개의 정책 그룹으로 나누어 필요에 따라 전환할 수도 있습니다. 프로토콜 선택의 핵심은 서버 기능, 코어 지원, 구독 필드, 기기 조건이 완전한 연결 구조를 이루도록 하는 것입니다. 이 네 가지가 일치한다면 전통적인 프로토콜과 최신 프로토콜 모두 적합한 환경에서 충분히 기능할 수 있습니다.