설정 파일 가이드

Clash config.yaml 전체 가이드

Clash 설정 파일의 각 필드 의미를 깊이 있게 이해하고 프록시 노드, 그룹, 규칙 분로, DNS의 완벽한 작성법을 익혀 나에게 꼭 맞는 설정을 직접 만들어보세요.

읽는 시간 약 15분 난이도: 심화 전체 코드 예제 포함
사용법 튜토리얼 config.yaml 설정 가이드

config.yaml이란 무엇인가요?

config.yaml은 Clash의 핵심 설정 파일로 YAML 형식으로 작성됩니다. 이 파일은 Clash 코어에 다음과 같은 정보를 전달합니다.

수신 포트 정보

HTTP 프록시, SOCKS5 프록시, 투명 프록시 각각의 전용 포트

프록시 노드 목록

모든 노드의 서버 주소, 프로토콜 유형, 인증 정보

그룹화 및 전환 방식

전략별 노드 그룹화: 수동 선택, 자동 테스트, 장애 조치

트래픽 분로 규칙

직접 연결, 프록시 경유 또는 거부할 도메인 결정

에어포트 구독을 사용하는 경우 config.yaml은 자동으로 생성되므로 수동 작성이 필요한 경우는 드뭅니다. 이 가이드는 심층적인 커스터마이징을 원하거나 자체 서버를 사용하는 숙련자를 위해 마련되었습니다.

설정 파일 기본 위치

운영 체제기본 경로
Windows %APPDATA%\clash-verge\profiles\
macOS ~/.config/clash-verge/profiles/
Linux ~/.config/clash-verge/profiles/
Mihomo (CLI) ~/.config/mihomo/config.yaml
Clash Verge Rev에서는 「구독」 페이지의 「편집」 버튼을 통해 내장 편집기로 설정을 직접 수정할 수 있어 파일 경로를 수동으로 찾을 필요가 없습니다.

YAML 문법 속성

설정 파일을 작성하기 전, 형식이 틀려 Clash가 시작되지 않는 일을 방지하기 위해 YAML의 핵심 규칙을 숙지하십시오.

들여쓰기에는 탭(Tab) 대신 공백(Space)을 사용하십시오.
# 올바름: 스페이스 2칸으로 들여쓰기
proxies:
  - name: "Node-A"
    type: ss

# 잘못됨: Tab 키 사용 금지
proxies:
	- name: "Node-A"   # ← Tab 문자, 오류 발생
목록은 대시 -로 시작합니다.
# 문자열 목록
nameserver:
  - 223.5.5.5
  - 119.29.29.29

# 객체 목록 (각 항목에 여러 필드)
proxies:
  - name: "Node-A"
    type: ss
  - name: "Node-B"
    type: vmess
문자열에 따옴표가 필요한 경우
# 특수문자 포함 시 따옴표 필요
password: "p@ss:word#123"

# 영문자/숫자만인 경우 불필요
log-level: info

# 불리언 값은 따옴표 불필요
allow-lan: true
udp: false
주석은 #을 사용합니다.
# 전체 줄 주석
port: 7890  # 줄 끝 주석

# 주석으로 각 설정의 목적을 기록할 수 있습니다
mode: rule  # rule/global/direct

기본 구성 매개변수

포트 설정

Clash는 로컬 포트를 통해 프록시 서비스를 제공하며 응용 프로그램은 이 포트를 프록시 주소로 가리켜야 합니다.

config.yaml — 포트 설정
# 옵션 1: 포트 분리 (호환성 최고)
port: 7890        # HTTP 프록시 포트
socks-port: 7891  # SOCKS5 프록시 포트
redir-port: 7892  # 투명 프록시 포트 (Linux/macOS, TUN 모드)

# 옵션 2: 혼합 포트 (권장, HTTP+SOCKS5 통합)
mixed-port: 7890

# 옵션 1과 상호 배타적, 하나만 선택
필드유형설명
port정수브라우저 프록시 시 사용하는 HTTP 포트
socks-port정수게임 및 CLI 도구용 SOCKS5 포트
mixed-port정수HTTP+SOCKS5 혼합 포트 (권장)
redir-port정수TUN/iptables 시나리오용 투명 프록시 포트
allow-lan불리언로컬 네트워크의 다른 기기가 이 프록시를 사용할 수 있게 할지 여부 (기본: false)

프록시 모드 및 로그

config.yaml — 모드 및 로그
mode: rule        # rule | global | direct
log-level: info  # silent | error | warning | info | debug
ipv6: false        # IPv6 트래픽 수락 여부
mode 값의미사용 시나리오
rule규칙 모드 (Rule)가장 일반적이며 규칙에 따라 자동 분로함
global전역 프록시모든 트래픽을 프록시로 전달 (디버깅용)
direct전역 직접 연결프록시를 사용하지 않음 (끄기와 동일)

외부 제어 인터페이스 (RESTful API)

Clash는 외부 제어를 위한 RESTful API를 제공합니다. Metacubexd와 같은 웹 패널은 이 인터페이스를 통해 트래픽 정보를 조회하고 노드를 전환합니다.

config.yaml — 외부 제어
external-controller: 127.0.0.1:9090  # API 수신 주소
secret: ""                              # API 액세스 토큰 (권장)
external-ui: ui                         # Web 패널 파일 디렉토리 (선택)
external-ui-url: "https://github.com/MetaCubeX/metacubexd/archive/gh-pages.zip"
external-controller0.0.0.0:9090으로 설정하면 로컬 네트워크의 다른 기기에서도 웹 패널에 접속할 수 있지만, 무단 접속 방지를 위해 반드시 secret(비밀번호)을 설정하십시오.

DNS 설정 상세 정보

Clash의 내장 DNS 모듈은 시스템 DNS 해석을 가로채어 정밀한 분로를 구현하고 DNS 유출을 방지합니다. 규칙 모드 및 TUN 모드에서는 활성화를 강력히 권장합니다.

enhanced-mode: 핵심 DNS 작동 모드

config.yaml — DNS 기초
dns:
  enable: true                   # 내장 DNS 모듈 활성화
  listen: 0.0.0.0:53            # DNS 수신 주소
  ipv6: false                    # IPv6 DNS 해석 활성화
  enhanced-mode: fake-ip        # fake-ip (권장) 또는 redir-host
  fake-ip-range: 198.18.0.1/16 # Fake-IP 주소 풀 범위
enhanced-mode작동 방식권장 정도
fake-ip가짜 IP를 반환하여 즉시 연결을 시작하고 Clash는 도메인별로 규칙 매칭권장
redir-host정상적인 DNS 해석 후 실제 IP로 IP-CIDR 규칙 매칭호환성 우수

업스트림 DNS 서버 설정

config.yaml — DNS 서버
dns:
  # 기본 DNS (로컬 도메인 해석용)
  nameserver:
    - 1.1.1.1             # Cloudflare DNS
    - 8.8.8.8             # Google DNS
    - system              # 시스템 DNS 따르기

  # 폴백 DNS (국제 도메인용, DNS 오염 방지)
  # 암호화 DNS(DoT/DoH)로 ISP 하이재킹 방지
  fallback:
    - tls://8.8.8.8:853   # Google DNS over TLS
    - tls://1.1.1.1:853   # Cloudflare DNS over TLS
    - https://dns.google/dns-query  # Google DoH

  # 폴백 조건: 비로컬 IP로 판단될 때 폴백 DNS 사용
  fallback-filter:
    geoip: true
    geoip-code: CN       # 비CN IP에서 폴백 DNS 사용
    ipcidr:
      - 240.0.0.0/4       # 예약 주소 범위도 폴백 대상
왜 두 종류의 DNS가 필요한가요? 국내 통신사는 해외 DNS 쿼리를 오염시켜 잘못된 결과를 반환하곤 합니다. 따라서 해외 도메인은 암호화된 DNS(DoT/DoH)를 통해 조회해야 정확한 IP 주소를 얻을 수 있습니다.

fake-ip-filter: 가짜 IP에서 제외할 도메인

로컬 서비스 발견(NAS 등)이나 mDNS, 결제 인증처럼 실제 IP가 필요한 도메인은 Fake-IP 적용 대상에서 제외해야 합니다.

config.yaml — fake-ip-filter
dns:
  fake-ip-filter:
    - '*.lan'                        # LAN 도메인 (Fake-IP 우회)
    - '*.local'                      # 로컬 mDNS
    - +.msftncsi.com      # MS NCSI (네트워크 연결 확인)
    - +.stun.*.*                     # STUN 서비스 (WebRTC)
    - +.stun.*.*.*
    - time.*.com                     # NTP 시간 동기화
    - time.*.gov
    - ntp.*.com

proxies — 프록시 노드 설정

proxies 필드는 목록 형태이며 각 항목은 개별 노드를 나타냅니다. 다음은 주요 프로토콜의 작성 방식입니다.

Shadowsocks

Shadowsocks 노드 예시
proxies:
  - name: "🇭🇰 HK-SS"          # 노드 이름 (커스텀 가능)
    type: ss
    server: hk.example.com   # 서버 도메인 또는 IP
    port: 443
    cipher: aes-256-gcm       # 암호화 방식 (일반: aes-256-gcm / chacha20-ietf-poly1305)
    password: "your-password"
    udp: true                 # UDP 전달 활성화 (게임에 필수)

  # obfs 플러그인 포함 SS (난독화 강화)
  - name: "🇯🇵 JP-SS-obfs"
    type: ss
    server: jp.example.com
    port: 80
    cipher: chacha20-ietf-poly1305
    password: "your-password"
    plugin: obfs
    plugin-opts:
      mode: http             # http 또는 tls
      host: bing.com         # 위장용 대상 도메인

VMess

VMess 노드 예시
  # VMess + WebSocket + TLS (가장 일반적인 조합)
  - name: "🇺🇸 US-VMess-WS"
    type: vmess
    server: us.example.com
    port: 443
    uuid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    alterId: 0                  # 최신 프로토콜 버전은 항상 0
    cipher: auto
    network: ws                # 전송 프로토콜: ws / grpc / tcp / h2
    tls: true
    servername: us.example.com # SNI: server와 동일하거나 CDN 도메인
    ws-opts:
      path: /vmess            # 서버 측 경로와 일치시켜야 함
      headers:
        Host: us.example.com

  # VMess + gRPC (저지연, 높은 침투성)
  - name: "🇸🇬 SG-VMess-gRPC"
    type: vmess
    server: sg.example.com
    port: 443
    uuid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    alterId: 0
    cipher: auto
    network: grpc
    tls: true
    grpc-opts:
      grpc-service-name: "vmess-grpc"

Trojan

Trojan 노드 예시
  - name: "🇯🇵 JP-Trojan"
    type: trojan
    server: jp.example.com
    port: 443
    password: "your-password"
    sni: jp.example.com     # TLS SNI (보통 server와 동일)
    udp: true
    skip-cert-verify: false # 운영 환경에서 false 유지, 인증서 검증 건너뛰기 금지

  # Trojan + WebSocket (CDN 중계용)
  - name: "🇰🇷 KR-Trojan-WS"
    type: trojan
    server: kr.example.com
    port: 443
    password: "your-password"
    network: ws
    ws-opts:
      path: /trojan
      headers:
        Host: kr.example.com

Hysteria 2

QUIC 기반의 차세대 프로토콜로 열악한 네트워크 환경에 최적화되어 국제 회선 가속에 유리합니다.

Hysteria 2 노드 예시
  - name: "⚡ US-Hysteria2"
    type: hysteria2
    server: us.example.com
    port: 443
    password: "your-password"
    sni: us.example.com
    skip-cert-verify: false
    # 실제 로컬 대역폭을 Mbps로 설정 (업/다운로드)
    up: "50 Mbps"
    down: "200 Mbps"
up / down 필드에는 노드 대역폭이 아닌 사용자 시스템의 실제 업로드/다운로드 대역폭을 입력하십시오. 정확한 값을 입력해야 QUIC의 최적 성능을 끌어낼 수 있으며 너무 크게 설정하면 오히려 혼잡이 발생할 수 있습니다.

proxy-groups — 프록시 그룹 상세 가이드

프록시 그룹은 여러 노드를 전략에 따라 묶어 트래픽 규칙이 특정 노드가 아닌 '그룹'을 가리키도록 하는 Clash의 가장 강력한 기능 중 하나입니다.

select — 수동 선택

가장 기본적인 그룹 유형으로 사용자가 클라이언트 UI에서 직접 활성 노드를 선택합니다.

select 프록시 그룹
proxy-groups:
  - name: "🚀 프록시 선택"
    type: select
    proxies:
      - "⚡ 자동 선택"      # 다른 프록시 그룹 참조
      - "🛡️ 폴백"
      - "🇭🇰 HK-SS"        # 단일 노드 참조 (이름은 proxies 목록과 일치해야 함)
      - "🇺🇸 US-VMess-WS"
      - "🇯🇵 JP-Trojan"
      - DIRECT            # 특수값: 직접 연결, 프록시 없음
      - REJECT            # 특수값: 연결 거부 (광고 차단)

url-test — 자동 선택

모든 노드의 지연 시간을 주기적으로 테스트하여 자동으로 가장 빠른 노드로 전환합니다.

url-test 프록시 그룹
  - name: "⚡ 자동 선택"
    type: url-test
    proxies:
      - "🇭🇰 HK-SS"
      - "🇺🇸 US-VMess-WS"
      - "🇯🇵 JP-Trojan"
      - "⚡ US-Hysteria2"
    url: 'http://www.gstatic.com/generate_204'  # 속도 테스트 대상 URL
    interval: 300                               # 테스트 간격 (초)
    tolerance: 50                               # 전환 허용치 (ms): 이 차이를 초과해야 전환
    lazy: true                                  # 지연 테스트: 트래픽 발생 시에만 테스트

fallback — 장애 조치

proxies 목록 순서대로 첫 번째 노드를 우선 사용하며, 첫 번째 노드를 사용할 수 없을 때 자동으로 다음 노드로 전환하여 연결성을 보장합니다.

fallback 프록시 그룹
  - name: "🛡️ 폴백"
    type: fallback
    proxies:
      - "🇭🇰 HK-SS"         # 기본 노드
      - "🇯🇵 JP-Trojan"     # 백업 1
      - "🇺🇸 US-VMess-WS"   # 백업 2
    url: 'http://www.gstatic.com/generate_204'
    interval: 60   # 확인 간격 (초): 장애 빠른 감지를 위해 url-test보다 짧게

load-balance — 부하 분산

서로 다른 연결을 여러 노드로 분산시킵니다. 여러 연결이 동시에 발생하는 다운로드 시나리오 등에 적합하며 전체 대역폭 처리량을 높일 수 있습니다.

load-balance 프록시 그룹
  - name: "⚖️ 부하 분산"
    type: load-balance
    strategy: consistent-hashing  # round-robin | consistent-hashing (같은 도메인 → 같은 노드)
    proxies:
      - "🇭🇰 HK-SS"
      - "🇯🇵 JP-Trojan"
      - "🇺🇸 US-VMess-WS"
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

rules — 규칙 설정 상세 가이드

규칙은 각 네트워크 요청이 직접 연결될지, 어떤 프록시 그룹을 거칠지, 혹은 거부될지를 결정합니다. 규칙은 위에서 아래로 순차적으로 매칭되며, 첫 번째로 일치하는 규칙이 즉시 실행되고 나머지 규칙은 무시됩니다.

규칙 유형 개요

규칙 유형형식설명
DOMAIN DOMAIN,google.com,POLICY 전체 도메인 정확히 일치
DOMAIN-SUFFIX DOMAIN-SUFFIX,google.com,POLICY 도메인 및 모든 서브 도메인 일치
DOMAIN-KEYWORD DOMAIN-KEYWORD,google,POLICY 도메인에 키워드가 포함된 경우 일치
IP-CIDR IP-CIDR,192.168.0.0/16,POLICY 대상 IP 주소 대역 일치
IP-CIDR6 IP-CIDR6,::1/128,POLICY IPv6 주소 대역 일치
GEOIP GEOIP,CN,POLICY 대상 IP의 지리적 위치(국가)별 일치
GEOSITE GEOSITE,CN,POLICY 사전 정의된 도메인 데이터베이스 기반 일치(Mihomo 확장)
PROCESS-NAME PROCESS-NAME,steam.exe,POLICY 요청을 보낸 프로세스 키워드 기반 일치 (데스크톱 전용)
RULE-SET RULE-SET,rule-set-name,POLICY 외부 규칙 세트 파일 참조 (대량 규칙 관리)
MATCH MATCH,POLICY 최종 규칙, 위에서 매칭되지 않은 모든 요청 처리 (반드시 마지막에 위치)

규칙 매칭 우선순위

위에서 아래로 순서대로 매칭되며, 일치하면 중단됩니다. 정교한 규칙(예: DOMAIN)을 앞쪽에, 포괄적인 규칙(예: GEOIP)을 뒤쪽에 배치하고, MATCH는 반드시 마지막 줄에 두어야 합니다.
DOMAIN 정밀 도메인최고
DOMAIN-SUFFIX 도메인 접미사
DOMAIN-KEYWORD 도메인 키워드
IP-CIDR / GEOIP IP 주소 규칙
MATCH 최종 매칭 (마지막)반드시 마지막

자주 사용하는 규칙 작성 예시

config.yaml — 규칙 예시
rules:
  # ===== 광고 및 악성 도메인 차단 =====
  - DOMAIN-KEYWORD,adservice,REJECT
  - DOMAIN-SUFFIX,doubleclick.net,REJECT
  - DOMAIN-SUFFIX,googlesyndication.com,REJECT

  # ===== 개발 도구를 프록시 경유 (정확한 매칭 우선) =====
  - DOMAIN-SUFFIX,github.com,🚀 프록시 선택
  - DOMAIN-SUFFIX,githubusercontent.com,🚀 프록시 선택
  - DOMAIN-SUFFIX,npmjs.com,🚀 프록시 선택
  - DOMAIN-SUFFIX,docker.io,🚀 프록시 선택
  - DOMAIN-SUFFIX,docker.com,🚀 프록시 선택

  # ===== 프로세스 이름 규칙 (데스크탑만 지원) =====
  - PROCESS-NAME,steam.exe,🚀 프록시 선택
  - PROCESS-NAME,git,🚀 프록시 선택

  # ===== 사설 IP 범위: 직접 연결 =====
  - IP-CIDR,127.0.0.0/8,DIRECT
  - IP-CIDR,172.16.0.0/12,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT

  # ===== 중국 본토 IP: 직접 연결 =====
  - GEOIP,CN,DIRECT

  # ===== 캐치올: 나머지 트래픽을 프록시 경유 =====
  - MATCH,🚀 프록시 선택
규칙 목록이 길어질수록 Clash의 요청 처리 시간이 늘어날 수 있습니다. RULE-SET(규칙 세트)을 사용하여 수백, 수천 개의 규칙을 외부 파일로 관리하면 config.yaml을 깔끔하게 유지할 수 있습니다.

전체 config.yaml 예시

구성 방식이 완벽하고 주석이 상세히 달린 Clash 설정 파일 예제입니다. 세 가지 프로토콜 노드, 네 가지 프록시 그룹 유형 및 전체 규칙 분로가 포함되어 있어 필요한 부분만 수정하여 바로 사용할 수 있습니다.

전체 config.yaml (주석 포함)
# ============================================================
#   Clash config.yaml — 전체 설정 예제
# ============================================================

# --- 기본 설정 ---
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
ipv6: false
external-controller: 127.0.0.1:9090
secret: ""

# --- DNS 설정 ---
dns:
  enable: true
  listen: 0.0.0.0:53
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - '*.lan'
    - '*.local'
    - +.msftncsi.com
    - +.stun.*.*
    - time.*.com
    - ntp.*.com
  nameserver:
    - 1.1.1.1
    - 8.8.8.8
  fallback:
    - tls://8.8.8.8:853
    - tls://1.1.1.1:853
  fallback-filter:
    geoip: true
    geoip-code: CN

# --- 프록시 노드 ---
proxies:
  - name: "🇭🇰 HK-SS"
    type: ss
    server: hk.example.com
    port: 443
    cipher: aes-256-gcm
    password: "your-ss-password"
    udp: true

  - name: "🇺🇸 US-VMess"
    type: vmess
    server: us.example.com
    port: 443
    uuid: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    alterId: 0
    cipher: auto
    network: ws
    tls: true
    servername: us.example.com
    ws-opts:
      path: /vmess
      headers:
        Host: us.example.com

  - name: "🇯🇵 JP-Trojan"
    type: trojan
    server: jp.example.com
    port: 443
    password: "your-trojan-password"
    sni: jp.example.com
    udp: true

# --- 프록시 그룹 ---
proxy-groups:
  - name: "🚀 프록시 선택"
    type: select
    proxies:
      - "⚡ 자동 선택"
      - "🛡️ 폴백"
      - "🇭🇰 HK-SS"
      - "🇺🇸 US-VMess"
      - "🇯🇵 JP-Trojan"
      - DIRECT

  - name: "⚡ 자동 선택"
    type: url-test
    proxies:
      - "🇭🇰 HK-SS"
      - "🇺🇸 US-VMess"
      - "🇯🇵 JP-Trojan"
    url: 'http://www.gstatic.com/generate_204'
    interval: 300
    tolerance: 50

  - name: "🛡️ 폴백"
    type: fallback
    proxies:
      - "🇭🇰 HK-SS"
      - "🇯🇵 JP-Trojan"
      - "🇺🇸 US-VMess"
    url: 'http://www.gstatic.com/generate_204'
    interval: 60

  - name: "🎬 스트리밍"
    type: select
    proxies:
      - "🇺🇸 US-VMess"
      - "🇯🇵 JP-Trojan"
      - "🚀 프록시 선택"

# --- 규칙 ---
rules:
  # 광고 차단
  - DOMAIN-KEYWORD,adservice,REJECT
  - DOMAIN-SUFFIX,doubleclick.net,REJECT

  # 스트리밍
  - DOMAIN-SUFFIX,netflix.com,🎬 스트리밍
  - DOMAIN-SUFFIX,nflxso.net,🎬 스트리밍
  - DOMAIN-SUFFIX,disneyplus.com,🎬 스트리밍
  - DOMAIN-SUFFIX,spotify.com,🎬 스트리밍

  # 개발 도구
  - DOMAIN-SUFFIX,github.com,🚀 프록시 선택
  - DOMAIN-SUFFIX,githubusercontent.com,🚀 프록시 선택
  - DOMAIN-SUFFIX,npmjs.com,🚀 프록시 선택
  - DOMAIN-SUFFIX,docker.io,🚀 프록시 선택

  # 사설 IP: 직접 연결
  - IP-CIDR,127.0.0.0/8,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT

  # 중국 본토 IP: 직접 연결
  - GEOIP,CN,DIRECT

  # 캐치올: 나머지를 프록시 경유
  - MATCH,🚀 프록시 선택

설정이 완료되었나요? 클라이언트를 다운로드하여 사용해 보세요.

설정 파일을 Clash 클라이언트에 가져오거나, 「구독」 기능을 통해 제공업체의 관리된 설정을 직접 사용할 수 있습니다.