1. 결론부터: 세 모드가 각각 담당하는 역할
어떤 Clash 클라이언트를 열어봐도 메인 화면에는 규칙(Rule), 글로벌(Global), 다이렉트(Direct) 세 개의 모드 버튼이 나란히 있습니다. 핵심은 딱 한 줄로 정리됩니다. 모드는 “들어온 연결을 누구에게 넘길지”를 결정할 뿐, 노드 속도나 구독 길이와는 아무 관계가 없습니다.
먼저 세 모드의 처리 방식을 표로 정리하고, 뒤에서 하나씩 자세히 풀어보겠습니다.
| 모드 | 연결 처리 방식 | 설정 방법 | 권장 용도 |
|---|---|---|---|
| 규칙 (Rule) | 목적지 주소를 규칙 목록과 하나씩 대조해 일치하는 항목으로 처리 | mode: rule | 평소에 기본으로 사용 |
| 글로벌 (Global) | 규칙 목록을 건너뛰고 GLOBAL 정책 그룹에서 현재 선택된 노드로 전부 처리 | mode: global | 노드 임시 테스트 |
| 다이렉트 (Direct) | 규칙 목록을 건너뛰고 전부 기기에서 직접 발신 | mode: direct | 문제 원인 대조 확인 |
2. 규칙 모드: 목록을 위에서부터 순서대로 대조
먼저 동작 방식을 보겠습니다. 규칙 모드에서는 연결이 들어올 때마다 클라이언트가 목적지 주소(도메인 또는 IP)를 규칙 목록의 첫 줄부터 순서대로 대조합니다. 일치하는 줄을 찾으면 그 줄에 지정된 정책으로 처리되는데, 특정 노드 정책 그룹일 수도 있고 DIRECT(직접 연결)나 REJECT(차단)일 수도 있습니다. 마지막 줄까지 일치하는 항목이 없으면 기본 규칙인 MATCH(구버전 Clash에서는 FINAL)로 처리됩니다.
예시로 살펴보겠습니다. 아래는 전형적인 설정의 뼈대입니다.
mode: rule
rules:
- DOMAIN-SUFFIX,example-ads.com,REJECT
- DOMAIN-SUFFIX,google.com,노드 선택
- GEOIP,CN,DIRECT
- MATCH,노드 선택
한 줄씩 따라가 보면 이렇습니다. example-ads.com 접속은 첫 줄에서 바로 차단됩니다. google.com 접속은 두 번째 줄에 일치해 '노드 선택' 정책 그룹으로 넘어갑니다. 국내(중국 본토) 사이트에 접속하면 세 번째 줄의 GEOIP 규칙이 일치해 기기에서 바로 연결됩니다. 나머지 모든 접속은 어떤 줄에도 일치하지 않아 MATCH 규칙에 따라 노드를 거칩니다. 순서가 곧 판정 순서이며, 먼저 일치한 규칙이 적용되고 그 뒤 줄은 더 이상 검사되지 않습니다.
이유를 짚어보면, 평소에 규칙 모드를 권장하는 것은 “어떤 트래픽을 우회시키고 어떤 트래픽을 직접 연결할지”를 표 하나로 고정해두기 때문입니다. 국내 사이트는 직접 연결되어 속도가 빠르고 노드 트래픽도 아끼며, 해외 사이트는 노드를 거치므로 서로 방해하지 않습니다. 이 표는 구독이나 설정 파일과 함께 내려오므로, 초보자는 직접 손댈 필요 없이 모드만 제대로 선택하면 됩니다.
3. 글로벌 모드: 모든 연결을 노드에게 넘기기
동작 방식은 이렇습니다. 글로벌 모드로 전환하면 규칙 목록 전체가 건너뛰어지고, 모든 연결이 GLOBAL이라는 내장 정책 그룹으로 일괄 전달됩니다. 이 그룹에서 현재 선택된 노드가 무엇이든, 전체 트래픽이 그 노드를 거칩니다. 노드를 바꾸려면 프록시 페이지에서 GLOBAL 그룹을 찾아 노드 목록에서 클릭해 선택하면 됩니다.
주로 두 가지 상황에서 씁니다. 첫째, 새 노드를 받았을 때 사용 가능한지, 지연이 얼마나 되는지 확인하려고 글로벌로 전환해 모든 트래픽을 그 노드로 보내보면 결과가 가장 직관적으로 나옵니다. 둘째, 일부 프로그램이 시스템 프록시의 우회 로직을 읽지 않아 트래픽을 강제로 전부 노드에 태워야 할 때, 글로벌 모드로 임시 대응할 수 있습니다.
사용 후 반드시 원래 모드로 되돌리기
글로벌 모드에서는 국내(중국 본토) 사이트 접속도 노드를 거치게 되어 지연이 늘고 속도가 느려지며 노드 트래픽도 불필요하게 소모됩니다. 이 모드는 대조 실험의 “실험군”과 같은 역할이지, 평소 쓰는 기본 모드가 아닙니다. 노드 테스트가 끝나면 규칙 모드로 되돌리세요.
4. 다이렉트 모드: 클라이언트는 켜져 있지만 개입하지 않음
동작 방식은 이렇습니다. 다이렉트 모드에서도 클라이언트는 평소처럼 로컬 포트를 리스닝하지만, 들어오는 모든 연결을 노드를 거치지 않고, 규칙 목록도 확인하지 않은 채 기기에서 그대로 직접 내보냅니다.
이 모드의 진짜 쓸모는 “대조군” 역할입니다. “특정 사이트가 열리지 않는다” 같은 문제를 진단할 때 다이렉트 모드로 전환해 다시 시도해보면 원인을 절반으로 좁힐 수 있습니다. 다이렉트에서는 열리는데 규칙 모드에서만 안 열린다면 노드나 규칙 목록 쪽 문제일 가능성이 크고, 다이렉트에서도 안 열린다면 사이트 자체나 로컬 네트워크 문제이므로 프록시와는 무관하니 클라이언트를 더 만질 필요가 없습니다.
여기서 헷갈리기 쉬운 부분이 하나 있습니다. 다이렉트 모드는 시스템 프록시를 끄는 것과 다릅니다. 시스템 프록시 스위치는 여전히 켜져 있어서 트래픽은 일단 클라이언트로 들어오지만, 클라이언트가 그대로 통과시켜줄 뿐입니다. 프록시를 완전히 끄고 싶다면 시스템 프록시 스위치를 직접 끄거나 클라이언트를 종료해야 합니다. 시스템 프록시 스위치 위치와 구독 가져오기 전체 과정은 사용 가이드에서 단계별로 설명하고 있습니다.
5. 모드 전환 방법: 화면, 설정 파일, API 세 가지
같은 기능이지만 진입 방법이 세 가지이니, 편한 방법을 골라 쓰면 됩니다.
- 그래픽 화면Clash Verge Rev는 '프록시' 페이지 상단, Clash for Windows는 Proxies 페이지 상단에 Rule / Global / Direct 세 개 버튼이 있어 클릭 즉시 적용되며 클라이언트를 재시작할 필요가 없습니다.
- 설정 파일설정 파일의
mode: rule항목이 시작 시 초기 모드를 결정하며, 값은 rule, global, direct 세 가지입니다. 화면에서 수동으로 전환하면 이 값을 즉시 덮어쓰며, 대부분의 클라이언트는 마지막으로 선택한 모드를 기억해 다음 실행 시 자동으로 복원합니다. - 외부 컨트롤러RESTful API로도 전환할 수 있습니다.
/configs에 PATCH 요청을 보내며, 요청 본문은{"mode":"global"}입니다. 각종 패널의 모드 버튼도 내부적으로 이 방식을 사용합니다.
6. 상황별로 맞는 모드 고르기
흔히 겪는 상황을 목록으로 정리했으니 참고해서 선택하세요.
- 평소 웹서핑, 영상 시청, 자료 검색: 규칙 모드로 두고 따로 손댈 필요 없습니다.
- 새 노드 속도 측정, 사용 가능 여부 확인: 잠시 글로벌로 전환하고 테스트 후 규칙 모드로 복귀합니다.
- 해외 서버 게임, 항상 프록시를 거쳐야 하는 프로그램: 글로벌 모드를 사용하고, 프로그램이 시스템 프록시조차 읽지 않는다면 TUN 모드로 기기 전체 트래픽을 처리하는 것도 고려해보세요.
- “사이트가 안 열림, 연결 안 됨” 문제 진단: 다이렉트로 전환해 대조해보고, 4장의 이분법으로 원인을 좁혀갑니다.
- 회사 내부망, 학교 네트워크는 반드시 직접 연결: 규칙 모드를 그대로 유지하고, 내부망 대역이 DIRECT로 설정되어 있는지 확인합니다. 보통 구독에 기본으로 포함되어 있습니다.
7. 자주 묻는 질문
모드를 전환하면 진행 중인 연결도 바로 바뀌나요?
아니요. 모드는 새로 생성되는 연결에만 적용되며, 이미 연결된 세션은 기존 방식으로 계속 진행됩니다. 전환 후에는 페이지를 새로고침하거나 앱을 재시작해야 새 모드의 효과를 확인할 수 있습니다.
글로벌 모드에서 국내(중국 본토) 사이트가 느려지는데, 노드가 고장난 건가요?
대부분은 아닙니다. 글로벌 모드에서는 국내 트래픽도 노드를 거치게 되므로 지연이 늘어나는 것은 구조상 당연한 결과입니다. 규칙 모드로 되돌렸을 때 정상으로 돌아온다면 노드 자체에는 문제가 없다는 뜻입니다.
규칙 모드에서 특정 사이트가 여전히 프록시를 거치는데, 바꿀 수 있나요?
가능합니다. 규칙은 위에서 아래로 순서대로 대조되며 먼저 일치한 규칙이 적용됩니다. 해당 사이트에 대한 규칙을 더 앞쪽에 배치하거나, 기본 규칙인 MATCH가 어디를 가리키는지 확인해보세요. 수정해야 하는 것은 규칙 목록이며, 모드 스위치가 아닙니다.
모드 설정은 구독을 따라가나요? 기기를 바꾸면 다시 설정해야 하나요?
구독을 따라가지 않습니다. 모드는 클라이언트 로컬에서 관리되는 실행 상태로, 기기마다 각각 저장되므로 기기나 클라이언트를 바꾸면 다시 선택해야 합니다.