핵심 개념
설정이 어디에서 오는지, 노드가 어떻게 선택되는지, 세 가지 프록시 모드가 트래픽 출구를 어떻게 바꾸는지부터 이해해 보세요. 이 개념들은 구독 가져오기, 정책 전환 및 일상적인 문제 해결 전반에 걸쳐 사용됩니다.
- 구독
- 서비스 제공자가 게시하는 원격 설정 주소로, 일반적으로 노드, 정책 그룹 및 규칙 정보가 포함됩니다. 클라이언트가 구독을 업데이트하면 원격 내용을 다시 읽어 사용 가능한 설정을 생성합니다. 구독은 단일 노드가 아니라 지속적으로 업데이트되는 설정의 원본에 가깝습니다. 업데이트 전에 원격 설정에서 생성된 내용을 직접 수정하면 다음 새로 고침 때 덮어써질 수 있습니다.
- 노드
- 설정에서 정책 그룹이 선택할 수 있는 프록시 서버 항목입니다. 노드에는 일반적으로 서버 주소, 포트, 프로토콜, 인증 매개변수 및 전송 옵션이 포함됩니다. 노드가 연결된다고 해서 모든 네트워크 환경에 적합한 것은 아니며, 실제 선택에는 지연 시간, 패킷 손실, 대역폭, 지역 및 대상 서비스의 이용 가능성을 함께 고려해야 합니다.
- 지연 시간
- 클라이언트가 노드의 테스트 주소에 연결을 시작한 뒤 응답을 받기까지 걸리는 시간으로, 보통 밀리초 단위로 표시됩니다. 연결할 수 없거나 응답이 느린 노드를 빠르게 제외하는 데 유용하지만 다운로드 속도와 같지는 않으며 장시간 연결의 안정성을 단독으로 보여주지도 않습니다. 테스트 주소, 현재 네트워크 및 노드 부하의 변화가 결과에 영향을 줍니다.
- 프록시 모드
- 트래픽이 어떤 출구로 나갈지 결정하는 작동 방식입니다. 규칙 모드는 규칙을 차례로 판단하고, 글로벌 모드는 연결을 하나의 정책으로 전달하며, 직접 연결 모드는 프록시 출구를 건너뜁니다. 일상적인 사용에는 보통 규칙 모드가 적합합니다. 글로벌과 직접 연결은 노드를 임시로 확인하거나 라우팅 문제를 찾을 때 유용하며, 모드 이름만으로 연결이 실제로 성립했는지 판단해서는 안 됩니다.
- 설정 파일
- 포트, DNS, 노드, 정책 그룹 및 규칙을 구조화해 설명하는 파일입니다. Clash 설정은 일반적으로 YAML 형식이며 클라이언트가 불러온 뒤 코어가 실행합니다. 설정이 정상적으로 작동하는지는 문법뿐 아니라 정책 그룹 참조, 규칙 대상 및 DNS 매개변수가 서로 맞는지에도 달려 있습니다.
프로토콜과 전송
로컬 프록시 진입점은 애플리케이션이 연결을 Clash에 전달하는 방식을 결정합니다. 시스템 프록시, HTTP, SOCKS5 및 혼합 포트는 로컬 접속 방식을 설명하며 원격 노드가 사용하는 전송 프로토콜과는 다릅니다.
- HTTP 프록시
- HTTP 및 HTTPS 애플리케이션 트래픽을 위한 프록시 진입점입니다. 애플리케이션에서 프록시를 수동으로 설정할 수 있다면 클라이언트가 연 HTTP 수신 주소와 포트를 입력하면 됩니다. HTTPS 콘텐츠는 일반적으로 CONNECT 방식으로 터널을 만들며, 이는 로컬 프록시가 웹의 암호화된 내용을 직접 읽는다는 뜻이 아닙니다. 애플리케이션이 시스템 프록시 설정을 따르는지는 자체 구현에 달려 있습니다.
- SOCKS5
- 세션 계층에서 작동하는 범용 프록시 프로토콜로, 다양한 애플리케이션 연결을 전달할 수 있습니다. 웹 요청만 처리하는 프록시 방식과 달리 SOCKS5는 브라우저, 개발 도구 및 사용자 지정 프록시를 지원하는 소프트웨어에서 자주 사용됩니다. 설정할 때 DNS를 애플리케이션이 로컬에서 해석하는지, 아니면 SOCKS5를 통해 프록시 측에서 처리하는지도 확인해야 합니다.
- 혼합 포트
- HTTP와 SOCKS5 연결을 동시에 받을 수 있는 로컬 수신 포트입니다. 활성화하면 서로 다른 프록시 유형이 하나의 포트를 공유해 여러 포트 설정으로 인한 혼란을 줄일 수 있습니다. 혼합 포트는 로컬 진입점만 통합할 뿐 규칙 모드, 노드 프로토콜 또는 DNS 가로채기 방식을 자동으로 바꾸지는 않습니다.
- 시스템 프록시
- 운영 체제가 제공하는 프록시 설정 진입점입니다. 클라이언트에서 시스템 프록시를 활성화하면 시스템 설정을 따르는 브라우저와 데스크톱 앱이 지원되는 네트워크 요청을 Clash로 보냅니다. 일부 게임, 명령줄 도구 또는 자체 네트워크 스택을 구현한 소프트웨어는 이 설정을 무시할 수 있습니다. 이 경우 프록시를 별도로 설정하거나 TUN 모드 사용을 검토해야 합니다.
규칙과 정책 그룹
규칙은 연결을 식별하고 정책 그룹은 출구를 결정합니다. 매칭 순서와 참조 관계를 이해해야 문제가 규칙 누락, 정책 선택 오류 또는 노드 자체의 사용 불가에서 비롯된 것인지 구분할 수 있습니다.
- 정책 그룹
- 여러 노드, 직접 연결 옵션 또는 다른 정책 그룹을 규칙에서 참조할 수 있는 하나의 출구로 묶습니다. 수동 선택 그룹은 사용자가 출구를 고정할 수 있고, 자동 속도 측정 그룹은 측정 결과에 따라 후보를 선택하며, 장애 전환 그룹은 현재 출구가 작동하지 않을 때 다음 출구를 시도합니다. 정책 그룹은 중첩할 수 있지만 계층이 너무 깊으면 문제 해결이 어려워집니다.
- 규칙 기반 라우팅
- 도메인, IP, 포트, 프로세스 또는 규칙 세트에 따라 연결의 출구를 결정하는 처리 방식입니다. Clash는 일반적으로 위에서 아래로 규칙을 확인하며, 처음 일치한 규칙이 해당 연결을 전달할 정책을 결정합니다. 따라서 더 구체적인 규칙을 범위가 넓은 규칙보다 앞에 배치해야 하며, 그렇지 않으면 뒤의 세부 규칙이 적용될 기회를 잃을 수 있습니다.
- 규칙 세트
- 재사용할 도메인 또는 IP 항목을 기본 설정에서 분리해 관리하며, Rule Provider라고도 합니다. 규칙 세트는 로컬에 저장하거나 원격 주소에서 주기적으로 업데이트할 수 있어 많은 분류 항목을 관리하는 데 적합합니다. 기본 규칙에는 규칙 세트를 참조하는 방법과 일치 후 전달할 정책 그룹도 선언해야 합니다.
- MATCH
- 도메인, IP 또는 규칙 세트가 앞에서 모두 일치하지 않았을 때 사용하는 규칙 목록의 최종 대체 유형입니다. 트래픽은 MATCH가 지정한 정책에 따라 처리되므로 일반적으로 규칙의 마지막에 배치합니다. 너무 앞에 배치하면 뒤의 규칙이 매칭에 참여할 수 없고, 대체 규칙이 없으면 설정이 예상과 다르게 작동할 수 있습니다.
- GeoIP
- 대상 IP가 속한 지역을 기준으로 매칭하는 지리 데이터베이스 기능입니다. 규칙에서 GeoIP를 사용해 특정 지역의 IP 트래픽을 직접 연결하거나 지정된 정책으로 보낼 수 있습니다. GeoIP는 로컬 데이터베이스에 의존하므로 데이터베이스가 오래되면 새로 할당된 주소 대역의 분류가 부정확할 수 있습니다. 도메인이 GeoIP 판단에 사용되기 전에는 일반적으로 DNS 해석도 거칩니다.
DNS와 네트워크 스택
도메인 해석과 트래픽 가로채기는 서로 관련 있지만 별개의 경로입니다. 프록시 진입점만 활성화한다고 DNS의 목적지가 바뀌는 것은 아니며, 사용자 지정 DNS만 활성화한다고 모든 애플리케이션 트래픽이 프록시를 통과하는 것도 아닙니다.
- DNS
- 도메인 이름을 IP 주소로 변환하는 기본 네트워크 서비스입니다. Clash는 DNS 조회를 가로채고 설정에 따라 상위 서버, 해석 모드, 캐시 정책 및 라우팅 방식을 선택할 수 있습니다. DNS 설정은 규칙 모드와 함께 구성해야 합니다. 도메인이 시스템 측에서 너무 일찍 IP로 해석되면 도메인만 매칭하는 일부 규칙이 판단 근거를 잃을 수 있습니다.
- DNS 누수
- 도메인 조회가 예정된 프록시 또는 암호화된 해석 경로를 우회해 다른 DNS 서버로 직접 전송되는 현상입니다. 문제를 확인할 때는 시스템 DNS, 클라이언트의 nameserver 및 fallback 설정, 브라우저의 보안 DNS, TUN의 조회 가로채기 여부를 함께 점검해야 합니다. 검사 결과 여러 해석 서비스가 표시된다고 해서 곧바로 누수인 것은 아니며, 요청이 사전에 정한 경로를 벗어났는지가 중요합니다.
- Fake-IP
- DNS 모듈이 먼저 애플리케이션에 예약 주소 풀의 매핑 주소를 반환하고, 이후 코어가 실제 도메인을 복원해 규칙을 매칭하는 모드입니다. 연결 단계에서 도메인 정보를 유지하고 해석 요청을 일관되게 가로채는 데 도움이 됩니다. 일부 로컬 네트워크 장치, 게임 또는 실제 주소 반환 결과에 의존하는 애플리케이션은 Fake-IP 필터 목록에 추가해야 할 수 있습니다.
- TUN 모드
- 가상 네트워크 인터페이스를 통해 더 많은 시스템 트래픽을 가로채는 작동 방식입니다. 프록시를 개별적으로 설정할 수 없는 애플리케이션에도 적합하며 시스템 프록시를 따르지 않는 일부 연결까지 처리할 수 있습니다. 활성화할 때는 관리자 권한, 라우팅, DNS 하이재킹 및 네트워크 어댑터 충돌을 올바르게 처리해야 합니다. 인터넷이 끊기면 먼저 TUN을 끄고 기본 네트워크가 복구되는지 확인하세요.
- IPv6
- IPv4와 함께 사용할 수 있는 인터넷 주소 지정용 차세대 네트워크 프로토콜입니다. Clash에서 IPv6를 활성화할지는 로컬 네트워크, DNS 상위 서버, 노드 및 대상 사이트의 지원 여부를 함께 고려해야 합니다. 프록시 체인이 IPv4만 처리하는데 애플리케이션이 IPv6 연결을 우선하면 트래픽 경로가 예상과 달라질 수 있습니다.
클라이언트와 코어
그래픽 클라이언트는 설정 표시, 구성 관리 및 시스템 기능 호출을 담당하고, 코어는 실제 DNS 처리, 규칙 실행 및 연결 전달을 담당합니다. 둘을 구분하면 업데이트 범위와 설정 호환성을 판단하는 데 도움이 됩니다.
- mihomo
- Clash Meta 생태계에서 지속적으로 발전해 온 프록시 코어로, 설정 해석, 규칙 실행, DNS 처리 및 연결 전달을 담당합니다. 많은 최신 그래픽 클라이언트가 mihomo를 네트워크 처리 코어로 사용하며, 인터페이스는 구독, 정책 및 시스템 설정 진입점을 제공합니다. 클라이언트마다 포함된 코어 버전과 활성화된 기능이 다를 수 있으므로 설정을 이전할 때 필드 호환성을 확인해야 합니다.
- Clash for Windows
- 데스크톱 시스템용 클래식 Clash 그래픽 클라이언트로, 설정 관리, 시스템 프록시, 정책 전환 및 연결 확인 기능을 제공합니다. 이 프로젝트는 유지 관리가 중단되었으며, 현재 설치 패키지는 주로 기존 환경 확인과 호환성을 위해 사용됩니다. 최신 시스템을 사용하거나 새로운 코어 기능이 필요하다면 다운로드 페이지에서 현재 유지 관리되는 그래픽 클라이언트를 비교해 보세요.
- YAML
- Clash 설정 파일에서 자주 사용하는 데이터 직렬화 형식으로, 들여쓰기로 계층을 표현합니다. 편집할 때는 공백 수를 일관되게 유지하고 콜론 뒤의 공백, 목록 하이픈 및 문자열 형식에 주의해야 합니다. 탭 문자, 잘못된 들여쓰기 또는 특수 문자를 올바르게 처리하지 않은 경우 설정을 불러오지 못하거나 필드가 잘못된 계층으로 해석될 수 있습니다.
- 외부 컨트롤러
- 코어가 그래픽 인터페이스 또는 웹 제어판에 제공하는 관리 인터페이스입니다. 클라이언트는 이를 통해 실행 상태를 읽고, 정책을 전환하며, 설정을 업데이트하고 연결을 관리합니다. 이 인터페이스에는 관리 기능이 포함될 수 있으므로 사용 환경에 맞게 수신 주소와 접근 자격 증명을 설정하고 관리 포트를 신뢰할 수 없는 네트워크에 노출하지 않도록 해야 합니다.
- 설정 오버라이드
- 원본 구독에 설정 일부를 추가, 교체 또는 조정하는 처리 방식입니다. 오버라이드는 로컬 DNS, TUN, 포트 또는 사용자 지정 규칙을 유지해 구독 업데이트 때 반복 편집을 줄이는 데 자주 사용됩니다. 클라이언트마다 오버라이드 순서와 문법이 완전히 같지 않으므로 사용 전에 필드를 병합하는지, 목록을 추가하는지, 기존 값을 직접 교체하는지 확인해야 합니다.
- UWP 루프백
- UWP 네트워크 격리 기능을 사용하는 Windows 앱이 로컬 프록시 포트에 접근하도록 허용하는 시스템 설정입니다. Microsoft Store 앱 또는 일부 시스템 구성 요소가 로컬 프록시를 통해 연결되지 않으면 루프백 접근 권한을 확인할 수 있습니다. 이 기능은 앱의 로컬 프록시 접근 문제만 해결하며 노드 장애, 규칙 오류 또는 DNS 설정 이상을 수정하지는 않습니다.