CLASH / 구성 읽기 참고 자료

Clash 용어집

코어, 프로토콜, 라우팅, 구성 필드를 여섯 가지 개념별로 찾아볼 수 있습니다. 각 카드에서 용어의 뜻과 혼동하기 쉬운 차이를 확인하고, 용어 링크로 해당 항목을 바로 공유하세요.

코어와 클라이언트

연결을 처리하는 프로그램과 조작 인터페이스를 제공하는 앱을 먼저 구분하세요.

mihomo

Formerly Clash Meta

mihomo는 Clash Meta 프로젝트를 이어받은 프록시 코어로, 연결 처리와 규칙 매칭, DNS 등 핵심 기능을 담당합니다. GUI 클라이언트가 mihomo를 사용할 수 있지만, 클라이언트와 코어의 이름이 같지는 않을 수 있습니다. 설정을 사용할 수 있는지 판단할 때는 앱 이름만 보고 추측하지 말고, 실행 중인 코어와 지원 범위를 확인해야 합니다.

프록시 코어

Proxy core

프록시 코어는 연결을 실제로 받아 라우팅 규칙을 적용하고 외부 연결을 생성하는 프로그램입니다. GUI 클라이언트는 설치 파일에 코어를 포함하거나 설정에서 코어 업데이트를 관리할 수 있습니다. 구성 오류를 해결할 때는 화면의 연결 스위치보다 코어 로그가 더 유용한 단서가 되는 경우가 많습니다. 스위치가 켜져 있어도 모든 연결이 성공한 것은 아니기 때문입니다.

GUI 클라이언트

GUI client

GUI 클라이언트는 구독 가져오기, 프록시 그룹 선택, 연결 기록 확인, 시스템 프록시 설정 등의 인터페이스를 제공하고, 유효한 구성을 코어에 전달해 실행합니다. 같은 코어를 사용하더라도 클라이언트마다 메뉴 이름과 구성 저장 방식이 다를 수 있습니다. 안내서에 나온 버튼 위치는 참고용이며, 화면의 문구가 완전히 같지 않더라도 해당 기능을 찾아 사용하면 됩니다.

구성 호환성

Configuration compatibility

구성 호환성은 현재 클라이언트와 코어가 구성의 필드, 프로토콜, 동작 옵션을 인식할 수 있는지를 뜻합니다. YAML을 읽을 수 있다고 해서 모든 기능이 지원되는 것은 아닙니다. 가져올 때 알 수 없는 필드, 정책을 찾을 수 없음, 지원하지 않는 프로토콜 등의 오류가 나면 먼저 구성의 대상 코어를 확인한 다음 필드 표기, 참조 이름, 기능 지원 여부를 점검하세요.

프록시 프로토콜

프로토콜은 클라이언트와 서버가 통신하는 방식을 정하며, 노드 이름이나 전송 방식과는 다릅니다.

Shadowsocks

SS / type: ss

Shadowsocks는 암호화 프록시 프로토콜입니다. 구성에는 보통 서버 주소, 포트, 암호화 방식, 비밀번호가 포함됩니다. 클라이언트와 서버에서 서로 호환되는 암호화 방식을 사용해야 하므로, 비밀번호가 같다는 이유만으로 구성이 올바르다고 볼 수 없습니다. 일부 노드는 별도의 플러그인 매개변수도 필요하므로 직접 입력할 때는 서비스 제공자가 안내한 값을 빠짐없이 설정하세요.

VMess

type: vmess

VMess는 UUID로 사용자를 식별하는 프록시 프로토콜로, 여러 전송 방식을 함께 사용할 수 있습니다. 서버 주소와 포트, 전송 계층 매개변수, TLS 설정을 서버 측 설정과 일치시켜야 합니다. WebSocket 경로와 요청 헤더는 노드 메모가 아니라 전송 설정입니다. 이를 빠뜨리면 서버에 연결할 수 있어도 프록시 연결은 계속 실패할 수 있습니다.

VLESS

type: vless

VLESS는 경량 프록시 프로토콜로, 자체적으로 전송을 암호화하지 않으며 보통 TLS나 REALITY 같은 방식과 함께 사용합니다. VMess와는 별개의 프로토콜이므로 유형 이름만 바꿔 서로 변환할 수 없습니다. 가져온 뒤 매개변수가 지원되지 않는다는 오류가 나오면 코어의 기능과 서버 요구 사항을 함께 확인하고, 특히 전송 방식, 흐름 제어, 관련 핸드셰이크 매개변수를 살펴보세요.

Trojan

type: trojan

Trojan은 보통 TLS로 암호화된 연결을 만들고 비밀번호로 인증하는 프록시 프로토콜입니다. 연결 성공 여부는 서버 이름, 인증서, 전송 매개변수가 서로 일치하는지에도 달려 있습니다. 인증서 오류가 발생하면 기기 시간, 입력한 도메인, 인증서 유효성을 확인하세요. 인증서 검증을 끄는 방법을 상시 해결책으로 삼는 것은 바람직하지 않습니다.

실행 모드

rule, global, direct는 아웃바운드 선택 방식을 정하고, TUN은 트래픽이 코어에 들어오는 방식을 정합니다.

규칙 모드

Rule mode / mode: rule

규칙 모드는 mode: rule에 해당합니다. 코어는 구성에 지정된 규칙 순서에 따라 들어오는 연결에 사용할 아웃바운드 정책을 선택합니다. 처음 일치한 규칙의 정책을 적용하므로 직접 연결과 프록시 연결이 동시에 사용될 수 있습니다. 규칙 모드로 바꾼 뒤에도 프록시 그룹에서 선택한 출구를 확인하세요. 모드 전환만으로 노드가 선택되지는 않습니다.

전역 모드

Global mode / mode: global

전역 모드는 mode: global에 해당하며, 코어로 들어오는 연결을 모두 GLOBAL 정책으로 처리합니다. 코어 내부의 아웃바운드 선택 방식만 바꾸므로 모든 앱의 트래픽이 자동으로 코어에 들어오는 것은 아닙니다. 시스템 프록시를 우회하는 앱은 전역 모드로 바꿔도 해결되지 않을 수 있으므로 트래픽을 받아들이는 방식도 확인해야 합니다.

직접 연결 모드

Direct mode / mode: direct

직접 연결 모드는 mode: direct에 해당하며, 코어로 들어온 연결을 원격 프록시 노드 없이 대상에 직접 연결합니다. 클라이언트를 완전히 종료하는 것과는 달라 코어가 DNS와 연결을 계속 처리할 수 있습니다. 원래 네트워크 상태와 비교하려면 직접 연결 모드 전환, 시스템 프록시 해제, TUN 중지를 구분해야 합니다. 각 작업이 영향을 주는 단계가 다릅니다.

TUN 모드

Virtual network interface

TUN 모드는 가상 네트워크 인터페이스로 트래픽을 받아 시스템 프록시 설정을 따르지 않는 일부 앱의 트래픽도 처리할 수 있습니다. 트래픽을 받아들이는 방식이므로 규칙 모드나 전역 모드와 함께 사용할 수 있습니다. 활성화할 때는 시스템 권한, 라우팅, DNS 가로채기가 관련되는 경우가 많습니다. 다른 VPN도 함께 실행 중이라면 노드를 계속 바꾸기보다 기본 경로 충돌 여부를 확인하세요.

규칙과 라우팅

규칙은 조건을 매칭하고, 정책은 이를 처리하며, 데이터 모음은 재사용할 매칭 조건을 제공합니다.

규칙 기반 라우팅

Rule-based routing

규칙 기반 라우팅은 도메인, 대상 IP, 프로세스 등의 조건에 따라 연결을 직접 연결, 차단 또는 지정된 프록시 정책으로 보냅니다. 규칙은 보통 위에서 아래로 적용되므로 순서가 최종 결과에 영향을 줍니다. 조건이 넓은 규칙을 앞에 두면 뒤의 세부 규칙이 적용되지 않을 수 있습니다. 웹사이트가 잘못된 출구를 사용하는 문제를 확인할 때는 연결 기록에서 적용된 규칙을 살펴본 뒤 순서나 조건을 조정하세요.

프록시 그룹

proxy-groups

프록시 그룹은 노드나 다른 정책을 묶어 규칙에서 참조할 수 있는 아웃바운드 진입점으로 만듭니다. select는 수동 선택에 사용하고, url-test와 fallback은 각각의 검사 방식에 따라 사용할 출구를 선택합니다. 규칙은 프록시 그룹 이름을 참조하므로 이름을 바꾸면 모든 참조도 함께 수정해야 합니다. 그렇지 않으면 정책을 찾을 수 없다는 구성 오류가 발생할 수 있습니다.

GeoIP

IP geolocation matching

GeoIP는 IP 데이터베이스의 위치 정보를 바탕으로 대상 IP를 매칭하며, 국가나 지역별 정책 선택에 자주 사용됩니다. 데이터베이스 결과가 웹사이트 운영자의 위치를 뜻하지는 않으며, IP 할당이 바뀌면 정보가 늦게 갱신될 수도 있습니다. 도메인 규칙과 GeoIP 규칙은 서로 다른 단계에서 매칭되므로 특정 웹사이트에 고정 출구를 사용하려면 명확한 도메인 규칙을 우선 고려하세요.

규칙 제공자

rule-providers / RULE-SET

규칙 제공자는 rule-providers로 규칙 모음을 정의하고, 규칙 목록에서 RULE-SET으로 불러옵니다. 규칙을 별도로 관리하고 업데이트하기 편리하지만, 참조 위치와 규칙 순서의 영향을 받습니다. 규칙 모음의 데이터 형식은 선언한 동작 유형과 일치해야 합니다. 다운로드에 성공했더라도 예상대로 해석되고 매칭된다는 뜻은 아닙니다.

DNS와 네트워크

DNS 조회, 트래픽 가로채기, 연결 테스트는 서로 다른 단계이므로 각각 확인해야 합니다.

DNS

Domain Name System

DNS는 도메인을 IP 주소 등의 레코드로 변환하며, 네트워크 연결을 시작하기 전에 거치는 중요한 단계입니다. 코어 DNS를 켜더라도 시스템과 앱의 DNS 요청이 실제로 해당 경로를 통과하는지 확인해야 합니다. 브라우저에 내장된 암호화 DNS는 다른 경로를 사용할 수 있으므로, 조회 문제를 해결할 때는 클라이언트와 시스템, 앱 설정을 모두 확인하세요.

Fake-IP

dns.enhanced-mode: fake-ip

Fake-IP는 코어가 앱에 매핑용 가상 IP를 반환하고, 해당 IP와 도메인의 연결 관계를 유지하는 방식입니다. 이 주소로 연결이 들어오면 코어가 도메인을 복원해 라우팅 규칙을 적용하고 연결을 처리할 수 있습니다. 이 주소는 웹사이트의 실제 서버 IP가 아닙니다. DNS 모드를 바꾼 뒤 앱이 이전 캐시를 계속 사용한다면 연결을 새로 만들거나 DNS 캐시를 갱신해야 할 수 있습니다.

DNS 누수

DNS leak

DNS 누수는 도메인 조회가 의도한 경로를 우회해 다른 DNS 서비스로 전달되는 현상을 말합니다. 프록시로 웹페이지를 열 수 있다는 사실만으로 DNS도 예상한 경로를 사용한다고 단정할 수는 없습니다. 테스트 결과는 브라우저의 암호화 DNS, 시스템 리졸버, 클라이언트 DNS 정책을 함께 고려해 해석해야 합니다. 여러 DNS 서비스가 표시된다고 해서 반드시 설정 오류인 것은 아닙니다.

지연 시간

Latency / URL test

클라이언트에 표시되는 지연 시간은 보통 지정된 테스트 주소에 요청을 보내고 응답을 받기까지 걸린 시간이며, 측정 기준은 구현에 따라 다릅니다. 다운로드 속도와는 다르고 모든 웹사이트의 접속 품질을 나타내지도 않습니다. 노드를 비교할 때는 같은 테스트 주소와 조건을 사용하세요. 테스트 시간 초과는 대상 서비스의 제한 때문에 발생할 수도 있으므로 한 번의 결과만으로 노드를 사용할 수 없다고 판단하지 마세요.

구성 구조

파일 형식, 원격 구성, 로컬 변경 사항의 관계를 파악한 다음 편집하세요.

YAML

Configuration data format

YAML은 Clash 구성에 널리 쓰이는 데이터 형식으로, 키와 값, 목록, 들여쓰기로 설정을 구성합니다. 들여쓰기에는 공백을 사용하고 같은 단계는 맞춰야 하며, 목록 항목은 보통 하이픈으로 시작합니다. 편집할 때 중복 키를 피하고, 특수 문자로 파싱에 문제가 생길 수 있다면 따옴표를 사용하세요. 형식이 올바른지 확인한 뒤에는 필드의 의미와 정책 참조도 점검해야 합니다.

구독

Subscription

구독은 클라이언트가 원격 구성이나 노드 목록을 정기적으로 또는 수동으로 가져오는 방식입니다. 링크가 전체 구성을 제공할 수도 있고 노드 데이터만 제공할 수도 있으며, 가져올 수 있는지는 형식과 클라이언트 지원 여부에 따라 달라집니다. 링크에는 개인 접근 토큰이 포함되는 경우가 많으므로 민감 정보로 관리하세요. 구독 업데이트는 이용권 갱신과 다르며, 계정 만료일과 데이터 갱신은 별개입니다.

노드

Proxy node / proxies

노드는 원격 프록시 서비스에 연결하는 데 필요한 매개변수 모음으로, 보통 이름, 프로토콜, 주소, 포트, 인증 정보가 포함됩니다. 노드 이름은 화면에 표시되는 라벨일 뿐 실제 위치나 품질, 사용 가능 여부를 보장하지 않습니다. 노드를 가져온 뒤에는 프록시 그룹이 해당 노드를 참조하고 대상 연결이 그 정책을 사용하도록 설정해야 합니다. 목록에 노드가 표시된다고 해서 이미 사용 중인 것은 아닙니다.

덮어쓰기와 병합

Override / merge

덮어쓰기와 병합은 구독 구성과 별도로 로컬 변경 사항을 저장하고, 실행 구성을 생성할 때 적용하는 방식입니다. 필드 교체, 목록 추가, 적용 순서는 클라이언트마다 다를 수 있습니다. 구독 캐시를 직접 편집하면 다음 업데이트 때 변경 사항이 사라질 수 있습니다. 규칙을 계속 유지하려면 클라이언트의 덮어쓰기 기능을 사용하고 최종 적용된 구성을 확인하세요.