커널 및 클라이언트
커널은 네트워크 연결을 실제로 처리하고, GUI 클라이언트는 커널 기능을 조작 가능한 화면으로 정리합니다. 두 구성 요소의 역할을 이해하면 문제가 설정, 커널 또는 클라이언트 기능 중 어디에서 발생했는지 판단하기 쉽습니다.
- mihomo
-
mihomo는 Clash Meta에서 이어져 발전한 프록시 커널로, 프로토콜 연결 수립, DNS 처리, 규칙 매칭과 트래픽 전달을 담당합니다. 대부분의 GUI 클라이언트는 커널 기능을 호출하고 설정 관리, 시스템 프록시와 로그 화면을 제공합니다.
문제를 점검할 때는 먼저 클라이언트 화면의 설정과 커널 설정을 구분해야 합니다. 로그에 나타나는 규칙 적중, DNS 질의와 연결 오류는 대개 커널에서 직접 발생합니다.
- Clash Meta
-
Clash Meta는 Clash 커널 생태계의 확장 구현으로, 더 많은 프록시 프로토콜, 규칙 기능과 네트워크 처리 옵션을 추가했습니다. 관련 문서의 Meta 필드는 보통 이 확장 문법이나 호환 기능을 가리킵니다.
현재 자료에서는 Clash Meta와 mihomo라는 두 이름이 함께 보일 수 있습니다. 이전 설정을 읽을 때는 이름만으로 기능 지원 여부를 판단하지 말고 필드와 커널 버전을 함께 확인해야 합니다.
- GUI 클라이언트
-
GUI 클라이언트는 그래픽 인터페이스를 제공하는 데스크톱 또는 모바일 앱입니다. 일반적인 기능으로 구독 업데이트, 정책 전환, 시스템 프록시, TUN 전환과 로그 확인이 있습니다. 클라이언트와 프록시 커널은 별도로 업데이트할 수 있어 버전이 반드시 일치하지는 않습니다.
화면에 특정 설정이 보이지 않는다고 해서 커널이 지원하지 않는 것은 아닙니다. 일부 고급 필드는 덮어쓰기나 YAML 설정을 직접 편집해야 활성화할 수 있습니다.
- YAML
-
YAML은 Clash 설정에 자주 사용하는 데이터 형식으로, 들여쓰기로 필드 계층을 표현합니다. 공백, 콜론 위치와 목록 기호에 민감하며 Tab 문자, 잘못된 계층 또는 누락된 공백으로 파싱에 실패할 수 있습니다.
설정을 수정할 때는 같은 계층의 들여쓰기를 일관되게 유지해야 합니다. 특수 기호가 포함된 문자열은 따옴표로 감싸 불리언, 숫자 또는 주석으로 잘못 해석되지 않게 할 수 있습니다.
- 설정 파일
-
설정 파일에는 포트, 실행 모드, DNS, 노드, 정책 그룹과 규칙 목록 등의 설정이 저장되며, 커널 시작 시 읽는 주요 입력입니다. 구독으로 생성된 내용도 설정 파일 형태로 클라이언트에 불러옵니다.
설정 파일을 다운로드할 수 있다고 해서 커널이 정상적으로 파싱할 수 있는 것은 아닙니다. 불러오기에 실패하면 먼저 YAML 문법을 확인한 뒤 현재 커널이 해당 필드를 지원하는지 확인해야 합니다.
프록시 프로토콜
프로토콜은 클라이언트가 프록시 서버와 연결을 수립하는 방식을 결정합니다. 시스템 프록시에서 사용하는 HTTP, SOCKS5와 노드에서 사용하는 Shadowsocks, Trojan은 서로 다른 계층의 개념입니다.
- HTTP 프록시
-
HTTP 프록시 인터페이스는 프록시 설정을 지원하는 앱의 요청을 받아 전달하며, 브라우저, 다운로드 도구와 개발 도구에서 주로 사용합니다. HTTPS 사이트는 일반적으로 CONNECT 방식으로 터널을 만들며, 프록시를 사용한다고 대상 사이트가 일반 HTTP로 바뀌는 것은 아닙니다.
Clash 설정의 HTTP 포트는 로컬에서 연결을 수신하는 진입점입니다. 원격 노드가 사용하는 프로토콜과 직접 대응하지 않습니다.
- SOCKS5
-
SOCKS5는 범용성이 높은 프록시 프로토콜로, 다양한 상위 계층 연결을 전달하고 도메인 해석을 로컬이나 프록시 서버에서 수행하도록 앱이 선택할 수 있습니다. 많은 명령줄 도구와 개발 소프트웨어에서 SOCKS5 주소를 직접 입력할 수 있습니다.
socks5h와 같은 표기에서는 일반적으로 도메인 해석을 프록시 서버에 맡깁니다. 일반socks5의 해석 방식은 앱 구현에 따라 달라집니다. - Shadowsocks
-
Shadowsocks는 암호화된 전송을 기반으로 하는 프록시 프로토콜입니다. 노드 정의에는 일반적으로 서버 주소, 포트, 비밀번호와 암호화 방식이 포함되며, 어느 하나라도 일치하지 않으면 연결에 실패합니다.
설정의 암호화 방식은 서버 측과 일치해야 합니다. 이름이 비슷한 알고리즘도 서로 바꿔 쓸 수 없으므로 노드 매개변수를 복사할 때 원래 표기를 유지해야 합니다.
- Trojan
-
Trojan은 TLS로 암호화 연결을 수립하며, 노드 설정에는 보통 서버, 포트, 비밀번호와 인증서 도메인이 포함됩니다. 인증서 검증을 활성화한 경우 도메인과 인증서가 일치하지 않으면 핸드셰이크가 즉시 실패합니다.
sni는 TLS 핸드셰이크에서 사용할 서버 이름을 지정합니다. 연결 주소와 다를 수 있지만 서버 배포 및 인증서 설정과 일치해야 합니다.
규칙 및 라우팅
규칙은 위에서 아래로 연결을 매칭하고, 일치하면 트래픽을 정책 그룹, 노드 또는 내장 동작으로 전달합니다. 순서, 대상 이름과 규칙 데이터의 업데이트 여부가 최종 출구에 영향을 줍니다.
- 규칙 기반 라우팅
-
규칙 기반 라우팅은 도메인, IP, 포트, 프로세스 또는 규칙 집합에 따라 연결의 방향을 결정하는 과정입니다. 규칙은 일반적으로 위에서 아래로 검사하며, 처음 일치한 결과가 해당 연결에 사용할 정책을 결정합니다.
범위가 넓은 규칙을 앞에 두면 뒤의 정밀한 규칙이 영원히 적용되지 않을 수 있습니다. 규칙 목록을 수정할 때는 순서와 대상 정책 이름을 함께 확인해야 합니다.
- Rule Provider
-
Rule Provider는 독립 파일이나 원격 주소에서 규칙 집합을 불러오는 기능입니다. 기본 설정에서는 집합 이름만 참조하고, 규칙 내용은 지정한 주기에 따라 별도로 업데이트할 수 있습니다.
규칙 집합에는 올바른 동작 유형과 데이터 형식을 지정해야 합니다. 다운로드 실패, 경로 오류 또는 형식 불일치가 발생하면 해당 규칙 참조가 정상적으로 작동하지 않을 수 있습니다.
- 정책 그룹
-
정책 그룹은 여러 노드나 다른 정책을 하나의 논리적 진입점으로 묶습니다. 규칙은 보통 정책 그룹을 가리키며, 사용자의 선택, 자동 속도 측정, 장애 전환 또는 부하 분산으로 실제 출구가 결정됩니다.
정책 그룹은 다른 정책 그룹을 다시 참조할 수 있지만 이름이 완전히 일치해야 합니다. 순환 참조나 존재하지 않는 이름을 참조하면 설정 오류가 발생합니다.
- DIRECT
-
DIRECT는 내장된 직접 연결 정책으로, 프록시 노드를 거치지 않고 현재 기기가 대상 주소에 직접 접속한다는 뜻입니다. 로컬 네트워크 주소, 기기 서비스와 로컬 회선에 적합한 연결에서 자주 사용합니다.
직접 연결도 로컬 라우팅, 방화벽과 DNS 결과의 영향을 받습니다. DIRECT에 매칭되었다는 것은 프록시 커널이 직접 연결을 선택했다는 뜻일 뿐, 대상에 반드시 도달할 수 있다는 의미는 아닙니다.
- REJECT
-
REJECT는 연결을 거부하는 내장 동작으로, 특정 도메인, 주소 또는 요청 유형을 차단할 때 주로 사용합니다. 특정 프록시 노드를 선택하는 것이 아니라 규칙 단계에서 매칭된 트래픽을 종료합니다.
너무 넓은 거부 규칙은 웹 리소스, 앱 API 또는 시스템 서비스에 영향을 줄 수 있습니다. 페이지가 완전히 로드되지 않을 때는 로그에서 관련 요청이 REJECT에 매칭되었는지 확인할 수 있습니다.
- GeoIP
-
GeoIP는 대상 IP의 지역을 기준으로 매칭하며 로컬 지리 데이터베이스에 의존합니다. 이미 대상 IP가 확인된 연결에 적합하지만 데이터베이스의 지원 범위와 업데이트 시점에 따라 결과가 달라질 수 있습니다.
도메인에 대응하는 서버 주소는 지역, 네트워크와 CDN 라우팅에 따라 바뀔 수 있습니다. GeoIP는 라우팅 조건 중 하나로 활용해야 하며, 영구적으로 고정된 주소 소속으로 이해해서는 안 됩니다.
- GeoSite
-
GeoSite는 용도, 서비스 또는 지역별로 정리한 도메인 집합입니다. 규칙에서 특정 분류를 참조해 관련 도메인을 일괄 매칭하면 도메인 접미사를 하나씩 관리하는 수고를 줄일 수 있습니다.
GeoSite와 GeoIP는 매칭 대상이 다릅니다. 전자는 도메인을, 후자는 IP를 대상으로 합니다. 데이터베이스가 오래되면 새 도메인이나 분류 변경이 제때 반영되지 않을 수 있습니다.
DNS 및 이름 해석
DNS는 도메인을 주소로 변환하는 방식을 결정하며, 규칙에서 도메인 정보를 계속 사용할 수 있는지에도 영향을 줍니다. 해석 문제를 점검할 때는 향상 모드, 해석 서버와 실제 질의 출구를 함께 확인해야 합니다.
- DNS 누수
-
DNS 누수는 도메인 조회가 예상한 프록시 또는 암호화된 해석 경로를 우회해 시스템 기본 DNS, 라우터 또는 다른 해석 서버에서 처리되는 현상입니다. 웹 연결의 출구가 아니라 질의가 실제로 어디로 전송되는지를 확인합니다.
판단할 때는 시스템 DNS, 브라우저 보안 DNS, 클라이언트 DNS 설정과 TUN이 가로채는 범위를 함께 확인해야 합니다. nameserver 하나만 변경해도 모든 질의 출처를 제어할 수 있는 것은 아닙니다.
- Fake-IP
-
Fake-IP 모드에서는 커널이 먼저 예약 주소를 반환하고 해당 주소와 원래 도메인의 매핑을 유지합니다. 앱이 이후 이 주소에 연결하면 커널이 도메인 정보를 복원해 도메인 규칙을 계속 적용할 수 있습니다.
일부 로컬 네트워크 기기, 연결 확인 기능과 실제 주소에 의존하는 서비스에는
fake-ip-filter를 추가해야 할 수 있습니다. 예외 범위를 지나치게 넓히면 도메인 매핑 효과가 약해질 수 있습니다. - Redir-Host
-
Redir-Host 모드는 앱에 실제 해석 주소를 반환하면서 도메인과 연결의 연관성을 유지하려고 합니다. Fake-IP와 주소 반환 방식이 다르므로 호환성과 규칙 매칭 경로도 다릅니다.
실제 IP가 필요한 앱에서는 두 향상 모드를 비교해 볼 수 있지만, 전환한 뒤에는 DNS 출구, 도메인 규칙과 로컬 서비스 검색을 다시 테스트해야 합니다.
- Nameserver
-
Nameserver는 일반적인 도메인 해석을 담당하는 서버 목록으로, 기존 DNS, DoH 또는 지원되는 다른 주소를 입력할 수 있습니다. 여러 서버 중 선택하는 방식은 커널 설정과 질의 결과에 따라 달라집니다.
암호화 DNS 주소 자체가 도메인을 사용하는 경우 커널은 먼저 해당 서버의 도메인을 해석해야 합니다. 이 부트스트랩 해석 설정이 잘못되면 완료할 수 없는 의존 관계가 생길 수 있습니다.
- DoH
-
DoH는 DNS over HTTPS의 약자로, HTTPS를 통해 DNS 질의를 전송합니다. 기기와 해석 서버 사이의 질의 내용을 암호화할 수 있지만 이후 웹사이트 연결이 직접 연결인지 프록시인지까지 자동으로 결정하지는 않습니다.
브라우저에서 독립적인 DoH 설정을 사용할 수 있어 시스템이나 클라이언트 DNS를 우회할 수 있습니다. 해석 경로를 점검할 때는 브라우저와 운영체제에 추가 진입점이 있는지 확인해야 합니다.
구독 및 설정 파일
구독은 업데이트 가능한 설정 콘텐츠를 전달하고, 노드는 그 안의 연결 정의이며, 덮어쓰기는 로컬 변경 사항을 유지하는 데 사용됩니다. 속도 측정과 TUN은 클라이언트 사용 단계에서 자주 쓰이는 보조 기능입니다.
- 구독
-
구독은 서버에서 제공하며 정기적으로 업데이트할 수 있는 설정 또는 노드 모음입니다. 클라이언트가 구독 주소에서 내용을 가져온 뒤 노드, 정책 그룹과 규칙 등 조작 가능한 항목으로 파싱합니다.
구독을 업데이트하면 이전에 직접 수정한 내용이 덮어써질 수 있습니다. 장기간 유지할 로컬 규칙이나 DNS 설정은 클라이언트가 지원하는 덮어쓰기 또는 병합 설정에 넣는 편이 적합합니다.
- 노드
-
노드는 개별 프록시 서버의 연결 정의로, 일반적으로 프로토콜, 서버 주소, 포트와 인증 매개변수를 포함합니다. 노드 이름은 표시용 레이블일 뿐 회선 품질이나 실제 위치를 보장하지 않습니다.
하나의 노드를 여러 정책 그룹에서 참조할 수 있습니다. 노드 이름을 수정하거나 삭제한 뒤에는 해당 이름을 참조하는 모든 정책 그룹도 함께 변경해야 합니다.
- 지연 시간
-
지연 시간은 일반적으로 클라이언트가 지정된 테스트 주소에 연결을 탐색한 뒤 측정되는 응답 시간입니다. 노드의 접속 가능 여부와 응답 속도를 대략 판단하는 데 도움이 되지만 다운로드 속도나 지속적인 안정성과 같지는 않습니다.
클라이언트마다 테스트 주소, 제한 시간과 연결 재사용 방식이 다를 수 있으므로 수치를 서로 다른 클라이언트 간에 직접 비교하기는 어렵습니다. 일시적인 결과도 여러 번 테스트해 함께 판단해야 합니다.
- TUN 모드
-
TUN 모드는 시스템 가상 네트워크 인터페이스로 트래픽을 가로채 수동 프록시 설정을 지원하지 않는 앱도 커널의 규칙 처리 과정에 포함시킵니다. 일반적으로 시스템 프록시만 켰을 때보다 더 넓은 트래픽을 처리합니다.
TUN을 활성화하려면 시스템 권한이 필요할 수 있으며 다른 VPN, 가상 네트워크 어댑터 또는 보안 소프트웨어와 라우팅 충돌이 발생할 수 있습니다. 인터넷 연결이 끊기면 기본 라우팅, DNS 하이재킹과 다른 네트워크 도구의 실행 상태를 확인해야 합니다.
- 덮어쓰기
-
덮어쓰기는 구독 원문을 직접 수정하지 않고 설정 필드를 추가, 교체 또는 삭제하는 기능입니다. 포트 고정, DNS 조정, 규칙 추가와 정책 그룹 수정 등에 주로 사용합니다.
클라이언트마다 덮어쓰기, 병합과 스크립트 처리의 명칭 및 실행 순서가 다를 수 있습니다. 수정한 뒤에는 덮어쓰기 조각만 보지 말고 최종 생성된 설정을 확인해야 합니다.