Clash配置解析:从配置文件结构到代理协议

一、Clash 配置文件结构

Clash 配置文件是 YAML 格式,分为三个部分:

  1. 代理(Proxy):指定代理服务器的配置,包括类型、地址、端口、加密方式、密码等参数。
  2. 规则(Rule):指定数据包的转发策略,包括基于域名、IP、协议、端口等的规则匹配。
  3. 本地(General):指定本地代理客户端的配置,包括监听端口、日志级别、DNS 解析、代理网卡等。

具体示例如下:

port: 7890
socks-port: 7891
redir-port: 7892
allow-lan: false
mode: Rule
log-level: info
external-controller: 127.0.0.1:9090

proxies:
  - name: "proxy_name"
    type: ss
    server: "server_ip"
    port: 8888
    cipher: "aes-256-gcm"
    password: "password"
    udp: true
  ...

rules:
  - DOMAIN-SUFFIX,google.com,proxy_name
  - IP-CIDR,192.168.0.0/16,direct
  ...

二、代理协议

Clash 支持多种代理协议,包括 Shadowsocks、V2Ray、Socks5、HTTP 等,每种协议都有其特定的配置格式,下面以 Shadowsocks 为例进行介绍:

1. Shadowsocks

Shadowsocks 是一种加密传输协议,可以实现代理服务器和客户端之间的数据传输加密,使网络数据更安全。在 Clash 中使用 Shadowsocks,需要配置以下参数:

  • type:代理协议类型,应设置为 ss;
  • server:代理服务器地址;
  • port:代理服务器端口;
  • cipher:加密方式,可以选择 chacha20-ietf、aes-128-gcm、aes-192-gcm、aes-256-gcm 等;
  • password:加密密码;
  • udp:是否开启 UDP 代理,应设置为 true 或 false。

具体示例如下:

proxies:
  - name: "proxy_name"
    type: ss
    server: "server_ip"
    port: 8888
    cipher: "aes-256-gcm"
    password: "password"
    udp: true
  ...

2. V2Ray

V2Ray 是一个多协议代理软件,支持 VMess、Shadowsocks、VLESS 等多种协议。在 Clash 中使用 V2Ray,需要配置以下参数:

  • type:代理协议类型,应设置为 vmess;
  • server:代理服务器地址;
  • port:代理服务器端口;
  • uuid:用户 ID;
  • alterId:传输协议伪装 ID;
  • cipher:加密方式,可以选择 aes-128-gcm、chacha20-poly1305 等;
  • tls:是否使用 TLS 加密,应设置为 true 或 false。

具体示例如下:

proxies:
  - name: "proxy_name"
    type: vmess
    server: "server_ip"
    port: 8888
    uuid: "user_id"
    alterId: 32
    cipher: "aes-128-gcm"
    tls: true
  ...

三、规则配置

规则配置是 Clash 的核心功能,可以根据不同的匹配规则将数据包转发到指定的代理服务器,实现智能路由的目的。在 Clash 中,规则配置主要分为两类:

  • 基础规则:指定基于域名、IP、协议、端口等的规则匹配。
  • 策略组:根据基础规则定义的匹配条件,将代理服务器划分到不同的策略组中,再根据策略组的匹配规则进行转发。

规则配置的具体语法和格式可以参考 Clash 的官方文档。下面给出一个基本的规则配置示例:

rules:
  - DOMAIN-SUFFIX,google.com,proxy_name
  - IP-CIDR,192.168.0.0/16,direct
  ...

proxy-groups:
  - name: "Proxy"
    type: select
    proxies:
      - proxy_name1
      - proxy_name2
  - name: "Final"
    type: select
    proxies:
      - Proxy
    strategy:
      type: url-test
      url: http://www.gstatic.com/generate_204
      interval: 300

四、常见问题

1. Clash 如何运行在 Docker 容器中?

在 Docker 容器中运行 Clash,需要先在 Docker Hub 上拉取 Clash 镜像,然后通过以下命令启动容器:

$ docker run -d --name=clash -v /path/to/clash:/root/.config/clash -p 7890:7890 dreamacro/clash

其中 /path/to/clash 是本地配置文件目录,可以替换为任意目录。

2. Clash 如何支持 Trojan 协议?

Clash 可以通过插件的方式支持 Trojan 协议,需要安装 trojan-plugin 插件并在配置文件中启用,具体方法请参考 Clash 的官方文档。

3. Clash 如何实现局域网内部代理?

要在局域网内实现代理,可以在 Clash 的配置文件中启用 allow-lan 参数,同时将其他设备的代理设置为局域网内的 Clash 服务器 IP 和监听端口即可。

4. Clash 如何配置 DNS 解析?

Clash 支持自定义 DNS 解析服务器,可以在配置文件中指定 dns 参数和 fake-ip-range 参数,具体方法请参考 Clash 的官方文档。

正文完