ClashX: продвинутые техники — раскройте весь потенциал прокси-инструмента

Обложка: продвинутые техники ClashX

Введение: обзор техник

Освоив базовый ClashX, следующий этап — раскрыть его потенциал. Продвинутые техники улучшат производительность и дадут гибкость маршрутизации.

В этом руководстве — системный разбор: умное разделение трафика, автоматизация, оптимизация производительности и правил. Подходит пользователям со знанием основ ClashX.

💡
Обязательно к изучению продвинутым

После изучения вы сможете проектировать полностью кастомные схемы проксирования, повышать стабильность и адаптироваться к сложным сетевым условиям.

Умное разделение трафика

Суть — распределять трафик по признакам (домен, IP, география) в нужные узлы или напрямую. Вы выигрываете в задержке, стабильности и контроле.

Разделение по доменам

article14.smart-routing.auto.h3_1

rules:
  # 第一级:白名单直连(最高优先级)
  - DOMAIN,localhost,DIRECT
  - DOMAIN-SUFFIX,local,DIRECT
  - DOMAIN-SUFFIX,lan,DIRECT

  # 第二级:国内服务直连
  - DOMAIN-SUFFIX,alipay.com,DIRECT
  - DOMAIN-SUFFIX,baidu.com,DIRECT
  - DOMAIN-SUFFIX,taobao.com,DIRECT
  - DOMAIN-SUFFIX,qq.com,DIRECT

  # 第三级:国外流媒体
  - DOMAIN-SUFFIX,netflix.com,🎬 流媒体
  - DOMAIN-SUFFIX,youtube.com,🎬 流媒体
  - DOMAIN-SUFFIX,twitch.tv,🎬 流媒体
  - DOMAIN-KEYWORD,spotify,🎬 流媒体

  # 第四级:游戏加速
  - DOMAIN-SUFFIX,epicgames.com,🎮 游戏加速
  - DOMAIN-SUFFIX,steampowered.com,🎮 游戏加速

  # 第五级:特殊应用
  - DOMAIN-SUFFIX,telegram.org,💬 即时通讯
  - DOMAIN-SUFFIX,whatsapp.com,💬 即时通讯

  # 最终规则
  - GEOIP,CN,DIRECT
  - MATCH,🚀 智能选择

Разделение по IP

article14.smart-routing.auto.h3_2

rules:
  # 优先级最高:局域网 IP 直连
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
  - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve

  # 中国 IP 直连
  - IP-CIDR,1.0.1.0/24,DIRECT,no-resolve
  - IP-CIDR,1.1.1.0/24,DIRECT,no-resolve

  # 特定 IP 段代理
  - IP-CIDR,8.8.8.0/24,🚀 智能选择,no-resolve
  - IP-CIDR,1.1.1.0/24,🚀 智能选择,no-resolve

  # 最终规则
  - MATCH,🚀 智能选择

GeoIP‑разделение

article14.smart-routing.auto.h3_3

rules:
  # 中国 IP 直连
  - GEOIP,CN,DIRECT

  # 美国流量用美国节点
  - GEOIP,US,🇺🇸 美国节点

  # 日本流量用日本节点
  - GEOIP,JP,🇯🇵 日本节点

  # 欧洲流量用欧洲节点
  - GEOIP,DE,🇩🇪 欧洲节点
  - GEOIP,FR,🇫🇷 欧洲节点
  - GEOIP,GB,🇬🇧 欧洲节点

  # 默认代理
  - MATCH,🚀 智能选择
⚠️
article14.smart-routing.auto.strong1

article14.smart-routing.auto.p1

Продвинутые группы стратегий

Группы управляют трафиком, соединяя автоматический выбор, отказоустойчивость и балансировку. Это основа стабильности и скорости.

Fallback — отказоустойчивость

article14.advanced-groups.auto.h3_1

proxy-groups:
  # 主节点层:自动测速
  - name: "🇭🇰 香港主节点"
    type: url-test
    proxies:
      - "HK-001"
      - "HK-002"
      - "HK-003"
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    tolerance: 50

  # 故障转移层:监测主节点的健康状态
  - name: "🚀 智能选择"
    type: fallback
    proxies:
      - "🇭🇰 香港主节点"
      - "🇯🇵 日本备用节点"
      - "🇸🇬 新加坡备用节点"
      - "DIRECT"
    url: "http://www.gstatic.com/generate_204"
    interval: 300

Load Balance — балансировка

article14.advanced-groups.auto.h3_2

proxy-groups:
  # 一致性哈希负载均衡:同一连接使用同一节点
  - name: "⚖️ 一致性哈希"
    type: load-balance
    proxies:
      - "HK-001"
      - "HK-002"
      - "HK-003"
      - "JP-001"
      - "JP-002"
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    strategy: consistent-hashing

  # 轮询负载均衡:依次切换节点
  - name: "⚖️ 轮询"
    type: load-balance
    proxies:
      - "HK-001"
      - "HK-002"
      - "HK-003"
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    strategy: round-robin

URL‑Test — параметры

article14.advanced-groups.auto.h3_3

proxy-groups:
  # 链式代理:流量经过两个代理节点
  - name: "🔗 双层加密"
    type: relay
    proxies:
      - "HK-001"
      - "JP-001"

  # 应用场景:高风险网络环境下使用链式代理
  - name: "🔐 超级安全"
    type: relay
    proxies:
      - "HK-001"
      - "SG-001"
      - "JP-001"

rules:
  - DOMAIN-SUFFIX,sensitive.com,🔗 双层加密

Relay — цепной прокси

article14.advanced-groups.auto.h3_4

proxy-groups:
  # 区域节点组
  - name: "🇭🇰 香港"
    type: url-test
    proxies:
      - "HK-001"
      - "HK-002"
      - "HK-003"
    url: "http://www.gstatic.com/generate_204"
    interval: 300

  - name: "🇯🇵 日本"
    type: url-test
    proxies:
      - "JP-001"
      - "JP-002"
    url: "http://www.gstatic.com/generate_204"
    interval: 300

  # 目的组(流媒体、游戏等)
  - name: "🎬 流媒体"
    type: select
    proxies:
      - "🇭🇰 香港"
      - "🇯🇵 日本"
      - "🇺🇸 美国"

  # 总选择组
  - name: "🚀 总选择"
    type: select
    proxies:
      - "🎬 流媒体"
      - "🇭🇰 香港"
      - "🇯🇵 日本"
      - "DIRECT"

Автоматизация и скрипты

Скрипты помогут автоматизировать переключение конфигураций, обновление подписок/правил и плановые задачи.

Автопереключение конфигураций

article14.automation.auto.h3_1

#!/bin/bash
                                

Плановые задачи

article14.automation.auto.h3_2

#!/bin/bash
                                
💡
article14.automation.auto.strong1

article14.automation.auto.p1

Автообновление подписок

article14.automation.auto.h3_3

#!/usr/bin/env python3
                                

Оптимизация производительности

Помимо базовой настройки есть приёмы, позволяющие снизить задержки, нагрузку на CPU/память и стабилизировать работу.

Оптимизация DNS

article14.performance.auto.h3_1

dns:
  enable: true
  listen: 0.0.0.0:53
  enhanced-mode: fake-ip  # 性能更优,但兼容性略低

  # Fake-IP 地址池配置
  fake-ip-range: 198.18.0.1/16

  # 使用 Fake-IP 时应该排除的域名
  fake-ip-filter:
    - "*.lan"
    - "*.local"
    - "*.internal"
    - localhost.ptlogin2.qq.com
    - "*.qq.com"
    - "*.tencent.com"

  # 主 DNS 服务器(国内解析快速)
  nameserver:
    - 119.29.29.29  # DNSPod 国内
    - 223.5.5.5     # 阿里 DNS 国内
    - https://doh.pub/dns-query  # DoH 协议更安全

  # 回落 DNS(当主 DNS 失败时使用)
  fallback:
    - https://1.1.1.1/dns-query    # Cloudflare DoH
    - https://dns.google/dns-query  # Google DoH
    - https://9.9.9.9/dns-query     # Quad9 DoH

  # 域名策略性 DNS 选择(关键优化点)
  nameserver-policy:
    # 国内域名使用国内 DNS
    "geosite:cn":
      - 119.29.29.29
      - 223.5.5.5

    # 国外域名使用国外 DNS
    "geosite:geolocation-!cn":
      - https://1.1.1.1/dns-query
      - https://dns.google/dns-query

    # 特定域名的 DNS
    "domain:example.com":
      - 119.29.29.29

    "domain:google.com":
      - https://8.8.8.8/dns-query

Оптимизация соединений

article14.performance.auto.h3_2

general:
  # 出站接口
  interface-name: en0

  # TCP 连接池大小
  tcp-concurrent: true

  # UDP 连接超时(毫秒)
  udp-timeout: 300

  # 连接空闲超时时间
  keep-alive-interval: 15

  # SOCKS5 UDP 支持
  socks-version: 5

# 高级性能调优参数
experimental:
  # 启用接口检测
  interface-name: en0

  # 忽略解析失败的域名(减少重试)
  ignore-resolve-fail: true
                                

Оптимизация потребления ресурсов

article14.performance.auto.h3_3

规则类型性能对比(从快到慢):
1. IP-CIDR/IP6-CIDR(最快,O(1) 查询)
   时间: ~0.1ms

2. DOMAIN-SUFFIX(快速,前缀树查询)
   时间: ~0.2-0.5ms

3. DOMAIN(中等,精确匹配)
   时间: ~0.3-0.8ms

4. DOMAIN-KEYWORD(较慢,包含匹配)
   时间: ~1-2ms

5. GEOIP(较慢,需要 IP 库查询)
   时间: ~2-5ms

6. RULE-SET(取决于规则集大小)
   时间: ~0.5-5ms
💡
article14.performance.auto.strong1

article14.performance.auto.p1

Оптимизация и обслуживание правил

Грамотная организация и обновление rulesets — залог стабильной и предсказуемой работы ClashX.

Rule Providers

article14.rule-optimization.auto.h3_1

rule-providers:
  # 广告拦截规则
  reject:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
    path: ./ruleset/reject.yaml
    interval: 86400  # 24小时更新一次

  # 代理规则
  proxy:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
    path: ./ruleset/proxy.yaml
    interval: 86400

  # 直连规则
  direct:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
    path: ./ruleset/direct.yaml
    interval: 86400

  # 流媒体规则
  streaming:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/streaming.txt"
    path: ./ruleset/streaming.yaml
    interval: 86400

  # Apple 规则
  apple:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/apple.txt"
    path: ./ruleset/apple.yaml
    interval: 86400

  # Google 规则
  google:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/google.txt"
    path: ./ruleset/google.yaml
    interval: 86400

  # 国内 IP 规则
  cncidr:
    type: http
    behavior: ip
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/cncidr.txt"
    path: ./ruleset/cncidr.yaml
    interval: 86400

  # 国外 IP 规则
  lancidr:
    type: http
    behavior: ip
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/lancidr.txt"
    path: ./ruleset/lancidr.yaml
    interval: 86400

# 使用规则提供者
rules:
  # 局域网直连
  - RULE-SET,lancidr,DIRECT

  # 广告拦截
  - RULE-SET,reject,REJECT

  # 直连规则
  - RULE-SET,direct,DIRECT

  # 流媒体
  - RULE-SET,streaming,🎬 流媒体

  # Apple
  - RULE-SET,apple,🍎 Apple 服务

  # Google
  - RULE-SET,google,🔍 Google 服务

  # 国内 IP
  - RULE-SET,cncidr,DIRECT

  # 代理规则
  - RULE-SET,proxy,🚀 智能选择

  # 最终规则
  - MATCH,🚀 智能选择

Лучшие практики обслуживания правил

article14.rule-optimization.auto.h3_2

#!/usr/bin/env python3

import requests
import yaml
from pathlib import Path

class RuleManager:

    def __init__(self, config_path):
        self.config_path = Path(config_path)
        self.config = self._load_config()

    def _load_config(self):
        with open(self.config_path, 'r', encoding='utf-8') as f:
            return yaml.safe_load(f)

    def _save_config(self):
        with open(self.config_path, 'w', encoding='utf-8') as f:
            yaml.dump(self.config, f, allow_unicode=True, default_flow_style=False)

    def add_rule(self, rule_text, position=None):
        if 'rules' not in self.config:
            self.config['rules'] = []
        if position is None:
            position = len(self.config['rules']) - 1
        self.config['rules'].insert(position, rule_text)
        self._save_config()

    def remove_rule(self, keyword):
        if 'rules' not in self.config:
            return
        original_count = len(self.config['rules'])
        self.config['rules'] = [r for r in self.config['rules'] if keyword not in r]
        removed_count = original_count - len(self.config['rules'])
        self._save_config()

    def list_rules(self, limit=20):
        if 'rules' not in self.config:
            return
        rules = self.config['rules'][-limit:]
        for i, rule in enumerate(rules, 1):
            print(f"{i}. {rule}")

manager = RuleManager(Path.home() / '.config/clash/config.yaml')
manager.add_rule("DOMAIN-SUFFIX,example.com,DIRECT")
manager.list_rules(10)

Готовые сценарии

Набор типовых конфигураций для разных задач, которые можно использовать как основу.

Медиа и стриминг

article14.scenarios.auto.h3_1

proxy-groups:
  # 流媒体专用策略组
  - name: "🎬 流媒体"
    type: select
    proxies:
      - "🇭🇰 香港节点"  # 节目丰富
      - "🇯🇵 日本节点"  # 低延迟
      - "🇺🇸 美国节点"  # 最新内容
      - DIRECT

  # Netflix 专用
  - name: "🍿 Netflix"
    type: url-test
    proxies:
      - "HK-Netflix-01"
      - "US-Netflix-01"
    url: "https://www.netflix.com/nrdp/v6/www/user"
    interval: 300
    tolerance: 100

rules:
  # 流媒体平台分流
  - DOMAIN-SUFFIX,netflix.com,🍿 Netflix
  - DOMAIN-SUFFIX,nflxso.net,🍿 Netflix
  - DOMAIN-SUFFIX,youtube.com,🎬 流媒体
  - DOMAIN-SUFFIX,youtu.be,🎬 流媒体
  - DOMAIN-SUFFIX,hulu.com,🎬 流媒体
  - DOMAIN-SUFFIX,disneyplus.com,🎬 流媒体
  - DOMAIN-KEYWORD,spotify,🎬 流媒体
                                

Игры

article14.scenarios.auto.h3_2

proxy-groups:
  # 游戏加速组:低延迟优先
  - name: "🎮 游戏加速"
    type: url-test
    proxies:
      - "HK-Game-01"
      - "SG-Game-01"
      - "JP-Game-01"
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    tolerance: 30  # 游戏对延迟敏感,容差设置小

rules:
  # Steam
  - DOMAIN-SUFFIX,steampowered.com,🎮 游戏加速
  - DOMAIN-SUFFIX,steamcommunity.com,🎮 游戏加速

  # Epic Games
  - DOMAIN-SUFFIX,epicgames.com,🎮 游戏加速
  - DOMAIN-SUFFIX,unrealengine.com,🎮 游戏加速

  # 其他游戏平台
  - DOMAIN-SUFFIX,battlenet.com,🎮 游戏加速
  - DOMAIN-SUFFIX,playstation.com,🎮 游戏加速
                                

Скачивания

article14.scenarios.auto.h3_3

proxy-groups:
  # 下载专用:带宽优先
  - name: "📥 下载加速"
    type: load-balance
    proxies:
      - "HK-Download-01"
      - "HK-Download-02"
      - "US-Download-01"
    url: "http://www.gstatic.com/generate_204"
    interval: 300
    strategy: round-robin  # 轮询实现负载均衡

rules:
  # 常见下载站点
  - DOMAIN-SUFFIX,github.com,📥 下载加速
  - DOMAIN-SUFFIX,githubusercontent.com,📥 下载加速
  - DOMAIN-SUFFIX,releases.ubuntu.com,📥 下载加速
                                

Продвинутые функции

ClashX скрывает ряд полезных возможностей — используйте их для тонкой настройки.

TUN — расширенные настройки

article14.advanced-features.auto.h3_1

tun:
  enable: true
  stack: system  # 或 gvisor(性能更好但兼容性略低)

  # DNS 劫持
  dns-hijack:
    - any:53
    - tcp://any:53

  # 自动路由
  auto-route: true

  # 自动检测接口
  auto-detect-interface: true

  # 指定特定网卡(可选)
  interface-name: en0

  # MTU 大小优化
  mtu: 9000
                                

External Control API

article14.advanced-features.auto.h3_2

#!/usr/bin/env python3
                "upload": data["up"],
                "download": data["down"],
                "timestamp": datetime.now()
            }
        return None

    def change_mode(self, mode):
        """切换模式: rule, global, direct"""
        valid_modes = ["rule", "global", "direct"]
        if mode not in valid_modes:
            return False

        data = json.dumps({"mode": mode})
        response = requests.put(
            f"{self.base_url}/configs",
            data=data,
            headers=self.headers
        )
        return response.status_code == 200

    def get_rules_info(self):
        """获取规则信息"""
        response = requests.get(f"{self.base_url}/rules", headers=self.headers)
        return response.json() if response.status_code == 200 else None

    def test_url_latency(self, url, timeout=5000):
        """测试 URL 延迟"""
        response = requests.get(
            f"{self.base_url}/configs/latency?url={url}&timeout={timeout}",
            headers=self.headers
        )
        return response.json() if response.status_code == 200 else None

    def get_proxy_latency(self, proxy_name, url="http://www.gstatic.com/generate_204"):
        """测试单个代理延迟"""
        response = requests.get(
            f"{self.base_url}/proxies/{proxy_name}/delay?url={url}",
            headers=self.headers
        )
        return response.json() if response.status_code == 200 else None

# 使用示例:实时流量监控
async def monitor_traffic():
    dashboard = ClashXDashboard(secret="your-secret")

    print("开始监控流量...")
    while True:
        stats = dashboard.get_traffic_stats()
        if stats:
            print(f"[{stats['timestamp']}] 上行: {stats['upload']:.2f} B/s, "
                  f"下行: {stats['download']:.2f} B/s")
        await asyncio.sleep(2)

# 运行监控
# asyncio.run(monitor_traffic())
                                

Внешний контроллер и UI

article14.advanced-features.auto.h3_3

general:
  # 启用外部控制器
  external-controller: 0.0.0.0:9090

  # API 访问密钥(强烈建议设置)
  secret: "your-very-secure-secret-key-here"

  # CORS 支持
  external-ui: true

  # 外部 UI 路径
  external-ui-url: "https://clash.razord.top/"
                                
⚠️
article14.advanced-features.auto.strong1

article14.advanced-features.auto.p1

article14.sec.auto.h3_1

DNS до оптимизации
DNS-запрос: 80ms
DNS после оптимизации
DNS-запрос: 15ms
Правила до оптимизации
Средняя задержка: 120ms
Правила после оптимизации
Средняя задержка: 45ms

article14.sec.auto.h3_2

  • article14.sec.auto.li1
  • article14.sec.auto.li2
  • article14.sec.auto.li3
  • article14.sec.auto.li4
  • article14.sec.auto.li5
  • article14.sec.auto.li6
  • article14.sec.auto.li7

Частые вопросы и решения

Q
article14.sec.auto.strong1

article14.sec.auto.p1

Q
article14.sec.auto.strong2

article14.sec.auto.p2

Q
article14.sec.auto.strong3

article14.sec.auto.p3