세 가지 실행 모드의 트래픽 흐름 차이
Clash와 그 파생 코어인 Clash Meta(mihomo)는 클라이언트 설정에서 일반적으로 세 가지 실행 모드를 제공합니다: 규칙 모드(Rule), 글로벌 모드(Global), 다이렉트 모드(Direct). 이 세 모드가 결정하는 것은 노드 자체가 아니라 "네트워크 요청이 발생한 후 어떤 판단을 거쳐 어디로 향하는가"입니다. 이 판단 로직을 이해하는 것이 각 모드의 이름을 외우는 것보다 훨씬 중요합니다.
- 규칙 모드: 모든 요청이 설정 파일의
rules목록과 순서대로 매칭되며, 도메인, IP 대역, GEOIP 소속 지역 등의 조건에 따라 트래픽을 해당 프록시 그룹 또는 다이렉트로 분배합니다. 어떤 규칙에도 매칭되지 않은 요청은 목록 마지막의 기본 정책(보통MATCH또는FINAL)으로 처리됩니다. - 글로벌 모드: 규칙 매칭을 건너뛰고, 모든 트래픽(도메인이나 IP와 무관하게)이 현재 선택된 프록시 그룹 또는 노드로 일괄 전송됩니다. 아웃바운드 동작이 매우 일관적이지만 구분성이 없습니다.
- 다이렉트 모드: 프록시를 건너뛰고 모든 트래픽이 로컬 네트워크를 통해 직접 아웃바운드됩니다. 프록시 기능을 임시로 끄는 것과 동일합니다.
세 모드의 핵심 차이는 "판단 단계가 존재하는지"와 "존재한다면 판단의 정밀도가 어느 정도인지"에 있습니다. 규칙 모드는 세밀한 판단을 유지하고, 글로벌 모드와 다이렉트 모드는 모두 판단을 포기하지만, 포기한 이후 트래픽의 종착지가 다릅니다 — 하나는 프록시 노드, 다른 하나는 로컬 네트워크입니다.
| 모드 | 규칙 매칭 여부 | 트래픽 종착지 | 대표적인 지연 특성 |
|---|---|---|---|
| 규칙 모드 | 예 | 규칙에 따라 다이렉트 또는 여러 프록시 노드로 분배 | 다이렉트 규칙에 매칭된 요청은 지연이 낮고, 프록시 규칙에 매칭된 요청은 노드에 따라 달라짐 |
| 글로벌 모드 | 아니오 | 현재 선택된 노드로 일괄 전송 | 모든 요청의 지연이 동일하며 해당 노드의 회선 품질에 좌우됨 |
| 다이렉트 모드 | 아니오 | 로컬 네트워크로 직접 아웃바운드 | 프록시를 거치지 않아 Clash를 사용하지 않을 때와 동일한 원본 지연 |
참고: 다이렉트 모드는 "규칙 모드에서 전부 다이렉트로 설정한 것"과 동일하지 않습니다. 다이렉트 모드는 클라이언트 차원에서 프록시 판단 로직 전체를 끄는 것이므로, 설정 파일에 프록시 규칙이 많이 작성되어 있어도 적용되지 않습니다. 반면 규칙 모드에서는 특정 규칙이 다이렉트로 명시되어 있어도, 나머지 규칙들은 여전히 정상적으로 트래픽을 프록시 노드로 유도합니다.
규칙 모드의 대표적인 적용 시나리오
규칙 모드는 대부분의 일상적인 사용 시나리오에서 권장되는 설정입니다. "국내(자국) 서비스는 낮은 지연의 다이렉트를 유지"하면서 "해외 또는 특정 서비스는 프록시를 사용"하는 두 가지 요구를 동시에 만족시킬 수 있고, 사용자가 수동으로 전환할 필요가 없기 때문입니다. 일반적인 규칙 차원은 다음과 같습니다.
- 도메인 접미사 및 키워드 매칭: 예를 들어 자국에서 흔히 쓰이는 동영상, 결제, 공공기관 관련 도메인을 다이렉트 정책에 포함시켜 불필요한 우회를 방지합니다.
- GEOIP 지리 위치 매칭: 특정 국가나 지역에 속한 IP를 해당 정책으로 분류합니다. 자국 CDN과 해외 서버를 구분할 때 자주 사용됩니다.
- LAN 및 프라이빗 주소대의 다이렉트 처리: 라우터 관리 페이지, LAN 내부의 프린터나 NAS 장비에 접속할 때는 프록시를 거치지 않도록 보장합니다. 이런 규칙은 보통 규칙 목록의 앞쪽에 배치됩니다.
- 프로세스 및 포트 기준 규칙(일부 Clash Meta 코어에서 지원): 요청을 발생시킨 애플리케이션 이름을 기준으로 매칭하여, "특정 앱만 프록시를 사용하고 나머지는 다이렉트"와 같은 세밀한 제어를 구현합니다.
대표적인 규칙 예시는 다음과 같습니다.
rules:
- DOMAIN-SUFFIX,cn,DIRECT
- GEOIP,CN,DIRECT
- DOMAIN-KEYWORD,examplecdn,Proxy
- IP-CIDR,192.168.0.0/16,DIRECT
- MATCH,Proxy
이런 설정의 핵심 아이디어는, 명확히 다이렉트로 처리해야 할 트래픽을 먼저 걸러내고, 불확실한 트래픽은 마지막의 MATCH 규칙에 일괄적으로 넘기는 것입니다. 규칙 모드는 장시간 상시 실행하며 접속 속도와 안정성을 동시에 고려해야 하는 시나리오, 예를 들어 일상 업무, 웹 서핑, 메신저 사용 등에 적합합니다. 규칙 파일은 보통 구독 제공자가 관리하며, 사용자는 클라이언트의 "설정" 페이지에서 현재 적용 중인 규칙 세트를 확인하거나, "오버라이드" 기능을 사용해 원본 구독 내용을 수정하지 않고도 사용자 정의 규칙을 추가할 수 있습니다.
글로벌 모드의 대표적인 적용 시나리오와 위험
글로벌 모드의 가치는 "예측 가능성"에 있습니다. 모든 트래픽이 동일한 경로를 거치므로, 규칙 오판으로 인해 특정 사이트 접속이 비정상적으로 되는 문제가 발생하지 않습니다. 다음과 같은 시나리오에서는 규칙 모드보다 더 적합합니다.
- 규칙이 제대로 적용되고 있는지 이상 여부 확인: 특정 사이트의 접속이 느리거나 연결이 실패하는 원인이 규칙 매칭 오류일 것으로 의심될 때, 글로벌 모드로 전환하여 모든 트래픽을 강제로 프록시 노드로 보냅니다. 그래도 문제가 지속된다면 문제의 원인이 규칙 설정이 아니라 노드 자체나 네트워크 환경에 있다는 것을 의미합니다.
- 자국 및 해외 접속 경로를 통일해야 하는 경우: 일부 기업 내부망 테스트나 국가 간 데이터 비교 등의 시나리오에서는 모든 요청이 동일한 출구 주소에서 발생해야 합니다. 글로벌 모드는 이를 보장할 수 있지만, 규칙 모드에서는 자국 트래픽이 다이렉트로 처리되어 출구 주소가 일치하지 않게 됩니다.
- 특정 노드의 전반적인 성능을 임시로 검증: 새로 추가한 노드가 다양한 사이트에서 연결성과 속도가 어떤지 집중적으로 테스트하고 싶을 때, 글로벌 모드를 사용하면 규칙 분기로 인한 간섭 변수를 배제할 수 있습니다.
주의: 글로벌 모드에서는 자국 사이트 접속도 프록시 노드를 거치게 되며, 이는 보통 추가적인 지연 증가를 의미합니다. 또한 실제 로컬 IP 소속 지역에 의존하는 일부 서비스(예: 지도 위치 확인, 일부 결제 인증)에서 이상이 발생할 수 있습니다. 글로벌 모드를 장기간 사용하는 것은 트래픽을 절약하거나 속도를 높이는 방법이 아니며, 문제를 진단하거나 출구 일관성이 명확히 필요한 경우에만 짧게 활성화하는 것을 권장합니다.
또한 유의할 점은, 글로벌 모드에서 선택되는 "현재 노드"는 단일 노드 또는 단일 프록시 그룹이므로, 해당 노드 자체가 불안정하면 모든 트래픽이 동시에 영향을 받습니다. 이는 규칙 모드에서의 분산된 분기 처리보다 위험이 더 집중된다는 뜻입니다.
모드 전환 후 주의해야 할 캐시 및 연결 상태 문제
모드 전환은 클라이언트 화면상의 단순한 스위치처럼 보이지만, 내부적으로는 연결 테이블, DNS 캐시, 코어 상태의 재구성이 관련되어 있어 처리가 미흡하면 "전환 후 웹페이지가 열리지 않음", "연결됨으로 표시되지만 실제로는 통신 불가" 등의 현상이 나타날 수 있습니다. 다음은 주의해야 할 세부 사항입니다.
- 이미 수립된 장기 연결은 자동으로 재분기되지 않습니다: 모드 전환 전에 이미 열려 있던 TCP 연결(예: 재생 중인 동영상 스트림, 다운로드 중인 파일)은 일반적으로 원래의 아웃바운드 경로를 그대로 사용하며, 해당 연결이 자연스럽게 종료될 때까지 유지됩니다. 즉시 적용이 필요하다면 해당 애플리케이션의 연결을 수동으로 끊거나 애플리케이션을 재시작하는 것이 좋습니다.
- DNS 캐시로 인해 도메인이 여전히 이전 결과로 해석될 수 있습니다: 규칙 모드에서 대부분의 분기는 GEOIP 판단에 의존하며, GEOIP 판단의 전제는 도메인 해석이 먼저 완료되는 것입니다. 클라이언트나 시스템 차원의 DNS 캐시에 모드 전환 이전의 해석 결과가 남아 있으면, 단시간 내에는 규칙 매칭이 여전히 이전 IP 소속 지역을 기준으로 판단할 수 있습니다. 이 경우 클라이언트에서 DNS 캐시를 수동으로 지우거나 캐시가 자연스럽게 만료될 때까지 기다리면 됩니다.
- 프록시 그룹의 헬스 체크 상태는 모드 전환으로 초기화되지 않습니다: 특정 프록시 그룹이 규칙 모드에서 지연 테스트 실패로 사용 불가로 표시되었다면, 글로벌 모드로 전환한 뒤에도 해당 그룹을 계속 선택하고 있으면 마찬가지로 연결에 실패합니다. 이는 모드 자체와는 무관하며, 먼저 노드의 연결 가능 여부를 확인해야 합니다.
- 브라우저 및 일부 애플리케이션은 자체 연결 풀을 사용합니다: 브라우저는 성능을 위해 이미 수립된 HTTP/2 또는 HTTPS 연결을 재사용하므로, 모드 전환 후 브라우저가 즉시 변화를 인식하지 못할 수 있습니다. 페이지 로딩 이상이 발생하면 먼저 강제 새로고침이나 브라우저 프로세스 재시작을 시도하고, 곧바로 프록시 설정에 문제가 있다고 판단하지 말아야 합니다.
권장: 모드 전환 후에는 먼저 새로 연 브라우저 탭에서 명확한 테스트 주소에 접속하여, 연결 상태 카드에 표시되는 현재 프로토콜 및 노드 정보가 예상한 값으로 업데이트되었는지 확인하는 것이 좋습니다. 이상이 없음을 확인한 후 다른 작업을 진행하여, 남아 있는 이전 연결 상태로 인해 잘못된 판단을 내리지 않도록 합니다.
클라이언트에서 빠르게 전환하고 확인하는 방법
클라이언트(예: Clash Verge, Mihomo Party, FlClash)마다 화면 구성은 조금씩 다르지만, 조작 절차는 대체로 비슷합니다.
- 클라이언트 메인 화면을 열고 "모드" 또는 "실행 모드" 관련 세그먼트 컨트롤을 찾습니다. 보통 "규칙 / 글로벌 / 다이렉트" 세 가지 옵션으로 표시됩니다.
- 해당 모드를 클릭하여 전환을 완료합니다. 대부분의 클라이언트는 상태 표시줄이나 연결 상태 카드에 현재 적용 중인 모드 이름을 동기화하여 표시합니다. 예를 들어 연결 상태 카드 상단의 프로토콜 정보에
rule또는global이 표시됩니다. - 전환 후 로그 패널을 열어 최근 몇 건의 요청이 어떤 규칙 또는 정책에 매칭되었는지 확인하여, 트래픽 흐름이 예상과 일치하는지 확인합니다. 이 단계는 규칙 설정이 실제로 적용되고 있는지 점검할 때 특히 유용합니다.
- 단순히 노드 연결 가능 여부를 임시로 확인하는 것이라면, 확인이 끝난 후 규칙 모드로 다시 전환하는 것을 잊지 마세요. 글로벌 모드를 장시간 유지하면 지연 증가와 출구 이상의 위험이 있습니다.
일상적인 사용자라면 규칙 모드와 잘 관리된 구독 규칙 세트를 함께 사용하는 것으로 대부분의 시나리오를 충분히 처리할 수 있으며, 빈번하게 수동으로 모드를 전환할 필요는 없습니다. 글로벌 모드는 주로 문제 진단 도구나 특수한 시나리오에서의 임시 선택이며, 다이렉트 모드는 프록시가 전혀 필요 없을 때 프록시 기능을 빠르게 끄는 스위치로 사용하기에 적합합니다.