配置文件教學

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 語法速查

在寫設定檔之前,先了解 YAML 的幾個核心規則,避免格式錯誤導致 Clash 無法啟動:

縮進使用空格,不用 Tab
# 正確:用 2 個空格縮排
proxies:
  - name: "節點A"
    type: ss

# 錯誤:不能用 Tab 鍵
proxies:
	- name: "節點A"   # ← Tab,會報錯
列表使用 - 開頭
# 字符串列表
nameserver:
  - 223.5.5.5
  - 119.29.29.29

# 对象列表(每项多个字段)
proxies:
  - name: "節點A"
    type: ss
  - name: "节点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 — 連接埠配置
# 方案一:分開設置(相容性最好)
port: 7890        # HTTP 代理連接埠
socks-port: 7891  # SOCKS5 代理連接埠
redir-port: 7892  # 透明代理連接埠(Linux/macOS,TUN 模式相關)

# 方案二:混合連接埠(推薦,HTTP+SOCKS5 合一)
mixed-port: 7890

# 與方案一互斥,選其一即可
欄位類型說明
port整數HTTP 代理連接埠,瀏覽器代理填寫此連接埠
socks-port整數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規則模式日常使用首選,按規則自動分流
global全局代理所有流量走代理,臨時調試使用
direct全域直連所有流量不走代理,等同關閉

外部控制介面(RESTful API)

Clash 提供 RESTful API 用於外部控制,Web 管理面板(如 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-controller 改為 0.0.0.0:9090 可允許區域網路內其他設備訪問 Web 面板,但務必同時設置 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
  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:
    - 168.95.1.1          # HiNet DNS(台灣)
    - 1.1.1.1             # Cloudflare DNS
    - system              # 跟隨系統 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

  # fallback 触发条件:被判定为非国内 IP 时使用 fallback DNS
  fallback-filter:
    geoip: true
    geoip-code: TW       # 非 CN IP 触发 fallback
    ipcidr:
      - 240.0.0.0/4       # 保留地址段也触发 fallback
為什麼需要兩套 DNS? 某些地區對境外 DNS 查詢會進行 DNS 污染(返回錯誤結果),所以境外網域必須使用加密 DNS(DoT/DoH)查詢,才能得到正確的 IP 地址。

fake-ip-filter:排除不走 Fake-IP 的網域

某些本地服務(如 NAS 發現、mDNS、QQ 登入驗證)依賴真實 IP,需要從 Fake-IP 中排除:

config.yaml — fake-ip-filter
dns:
  fake-ip-filter:
    - '*.lan'                        # 區域網路網域直連
    - '*.local'                      # 本機 mDNS
    - localhost.ptlogin2.qq.com      # QQ 登入驗證
    - +.stun.*.*                     # STUN 服務(WebRTC)
    - +.stun.*.*.*
    - time.*.com                     # NTP 時間同步
    - time.*.gov
    - ntp.*.com

proxies — 代理節點配置

proxies 是一個列表,每個條目代表一個代理節點。以下是四種主流協定的完整寫法:

Shadowsocks

Shadowsocks 節點寫法
proxies:
  - name: "🇭🇰 香港-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: "🇯🇵 日本-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: "🇺🇸 美國-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            # 與伺服器端 path 一致
      headers:
        Host: us.example.com

  # VMess + gRPC(低延遲,穿透性強)
  - name: "🇸🇬 新加坡-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: "🇯🇵 日本-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: "🇰🇷 韓國-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: "⚡ 美國-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 — 手動選擇

最基礎的代理群組類型,由用戶在用戶端介面手動選擇目前激活的節點。

select 代理群組
proxy-groups:
  - name: "🚀 節點選擇"
    type: select
    proxies:
      - "⚡ 自動選擇"      # 引用其他代理群組
      - "🛡️ 故障轉移"
      - "🇭🇰 香港-SS"     # 引用單個節點(名稱必須與 proxies 中一致)
      - "🇺🇸 美國-VMess-WS"
      - "🇯🇵 日本-Trojan"
      - DIRECT            # 特殊值:直連,不走任何代理
      - REJECT            # 特殊值:拒絕連線(用於廣告攔截)

url-test — 自動選速

定期對所有節點發起延遲測試,自動切換到延遲最低的節點。

url-test 代理群組
  - name: "⚡ 自動選擇"
    type: url-test
    proxies:
      - "🇭🇰 香港-SS"
      - "🇺🇸 美國-VMess-WS"
      - "🇯🇵 日本-Trojan"
      - "⚡ 美國-Hysteria2"
    url: 'http://www.gstatic.com/generate_204'  # 測速目標 URL
    interval: 300                               # 測速間隔(秒)
    tolerance: 50                               # 切換容忍度(ms),差距超過此值才切換
    lazy: true                                  # 懶測速:有流量時才測,省資源

fallback — 故障轉移

按 proxies 列表順序優先使用第一個節點,當第一個節點不可用時自動切換到下一個,保證連通性。

fallback 代理群組
  - name: "🛡️ 故障轉移"
    type: fallback
    proxies:
      - "🇭🇰 香港-SS"       # 首選節點
      - "🇯🇵 日本-Trojan"   # 備用一
      - "🇺🇸 美國-VMess-WS" # 備用二
    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:
      - "🇭🇰 香港-SS"
      - "🇯🇵 日本-Trojan"
      - "🇺🇸 美國-VMess-WS"
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

rules — 規則配置詳解

規則決定了每一條網路請求的去向:直連、走哪個代理群組,還是直接拒絕。規則按從上到下的順序比對,命中第一條即執行,不再繼續往下比對。

規則類型一覽

規則類型格式說明
DOMAIN DOMAIN,google.com,策略 精確比對完整網域
DOMAIN-SUFFIX DOMAIN-SUFFIX,google.com,策略 比對網域及其所有子網域
DOMAIN-KEYWORD DOMAIN-KEYWORD,google,策略 網域包含關鍵字即比對
IP-CIDR IP-CIDR,192.168.0.0/16,策略 比對目標 IP 地址段
IP-CIDR6 IP-CIDR6,::1/128,策略 比對 IPv6 地址段
GEOIP GEOIP,CN,策略 按目標 IP 的地理位置(國家)比對
GEOSITE GEOSITE,CN,策略 按預設網域資料庫比對(Mihomo 擴展)
PROCESS-NAME PROCESS-NAME,steam.exe,策略 按發起請求的程序名比對(桌面端)
RULE-SET RULE-SET,規則集名稱,策略 引用外部規則集文件(批量規則)
MATCH MATCH,策略 兜底規則,比對所有未命中的請求(必須放最後)

規則比對優先級

從上到下依次比對,命中即停止。 越精確的規則(如 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-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,TW,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'
    - localhost.ptlogin2.qq.com
    - +.stun.*.*
    - time.*.com
    - ntp.*.com
  nameserver:
    - 168.95.1.1
    - 1.1.1.1
  fallback:
    - tls://8.8.8.8:853
    - tls://1.1.1.1:853
  fallback-filter:
    geoip: true
    geoip-code: TW

# --- 代理節點 ---
proxies:
  - name: "🇭🇰 香港-SS"
    type: ss
    server: hk.example.com
    port: 443
    cipher: aes-256-gcm
    password: "your-ss-password"
    udp: true

  - name: "🇺🇸 美国-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: "🇯🇵 日本-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:
      - "⚡ 自動選擇"
      - "🛡️ 故障轉移"
      - "🇭🇰 香港-SS"
      - "🇺🇸 美国-VMess"
      - "🇯🇵 日本-Trojan"
      - DIRECT

  - name: "⚡ 自動選擇"
    type: url-test
    proxies:
      - "🇭🇰 香港-SS"
      - "🇺🇸 美国-VMess"
      - "🇯🇵 日本-Trojan"
    url: 'http://www.gstatic.com/generate_204'
    interval: 300
    tolerance: 50

  - name: "🛡️ 故障轉移"
    type: fallback
    proxies:
      - "🇭🇰 香港-SS"
      - "🇯🇵 日本-Trojan"
      - "🇺🇸 美国-VMess"
    url: 'http://www.gstatic.com/generate_204'
    interval: 60

  - name: "🎬 串流媒體"
    type: select
    proxies:
      - "🇺🇸 美国-VMess"
      - "🇯🇵 日本-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-CIDR,127.0.0.0/8,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT

  # 台灣直連
  - GEOIP,TW,DIRECT

  # 補底:其餘走代理
  - MATCH,🚀 節點選擇

配置完成了?去下載用戶端使用吧

將設定檔匯入 Clash 用戶端,或通過「訂閱」功能直接使用機場提供的代管配置。