top
本文目录
一、Clash 简介与优势
二、Linux 环境准备
三、Clash 安装
1. 手动安装(推荐)
2. 使用脚本安装
3. 通过包管理器安装 (不推荐)
四、Clash 配置
1. 配置文件结构
2. 订阅链接
3. 规则配置
4. DNS 配置 (可选)
五、Clash 启动与管理
1. 启动 Clash
2. 设置开机自启
3. 停止 Clash
4. 更新 Clash
5. 日志查看
六、Clash 进阶技巧
1. 使用外部 UI
2. 使用自定义规则
3. 使用脚本控制 Clash
4. 使用 TPROXY 模式 (透明代理)
5.策略组进阶
七、常见问题解答
八、总结

Clash (Linux):从入门到精通的代理配置指南

Clash (Linux):从入门到精通的代理配置指南

Clash 是一款流行的跨平台代理客户端,支持多种代理协议(如 Shadowsocks、Vmess、Trojan、Snell 等),并具有强大的规则分流功能。本文将深入探讨 Clash 在 Linux 系统上的安装、配置、使用和进阶技巧,帮助你从新手成长为 Clash 专家。

一、Clash 简介与优势

Clash 的核心优势在于其灵活的配置和强大的规则引擎。它允许用户根据不同的网络需求,将流量导向不同的代理服务器,甚至实现自动切换、负载均衡等高级功能。

主要特点:

  • 多协议支持: 兼容 Shadowsocks、Vmess、Trojan、Snell、Socks5、HTTP(S) 等多种代理协议。
  • 规则分流: 基于域名、IP、GEOIP、进程名等多种条件,将流量导向不同的代理服务器或直连。
  • YAML 配置: 使用 YAML 格式的配置文件,易于阅读和编辑。
  • 负载均衡: 支持多种负载均衡策略,如 URL 测试、延迟测试、自动选择等。
  • 故障转移: 当某个代理服务器不可用时,自动切换到备用服务器。
  • 规则提供者: 支持从远程 URL 或本地文件加载规则,方便规则更新和共享。
  • RESTful API: 提供 RESTful API,方便与其他程序集成,实现自动化控制。
  • 跨平台: 支持 Windows、macOS、Linux、Android 等多个平台。

二、Linux 环境准备

在开始安装 Clash 之前,请确保你的 Linux 系统满足以下条件:

  • 已安装 curlwget 用于下载 Clash 软件包。
  • 具备 sudo 权限: 安装和配置 Clash 需要管理员权限。
  • 网络连接正常: 用于下载 Clash 和订阅链接。

三、Clash 安装

Clash 提供多种安装方式,你可以根据自己的喜好选择:

1. 手动安装(推荐)

这是最灵活的安装方式,可以让你更好地控制 Clash 的版本和安装位置。

  1. 下载 Clash:

    访问 Clash 的 GitHub Releases 页面:https://github.com/Dreamacro/clash/releases

    找到适合你系统架构的最新版本(通常是 clash-linux-amd64-vX.X.X.gzclash-linux-arm64-vX.X.X.gz),复制下载链接。

    在终端中,使用 curlwget 下载:

    ```bash

    使用 curl

    curl -L -O <下载链接>

    或者使用 wget

    wget <下载链接>
    ```

  2. 解压并移动:

    ```bash

    解压

    gunzip clash-linux-*.gz

    移动到 /usr/local/bin/ (或其他你喜欢的目录)

    sudo mv clash-linux-* /usr/local/bin/clash

    赋予执行权限

    sudo chmod +x /usr/local/bin/clash
    ```

  3. 验证安装:

    bash
    clash -v

    如果看到 Clash 的版本信息,则表示安装成功。

2. 使用脚本安装

Clash 社区提供了方便的安装脚本:

bash
curl -sL https://git.io/getClash | bash

或者
wget -O - -q https://git.io/getClash | bash
此脚本会自动下载、解压、移动 Clash 并设置执行权限。

3. 通过包管理器安装 (不推荐)

某些 Linux 发行版的软件仓库中可能包含 Clash,但不建议通过包管理器安装,因为版本可能滞后,或者配置不灵活.

四、Clash 配置

Clash 的配置文件使用 YAML 格式,通常命名为 config.yaml

1. 配置文件结构

一个典型的 config.yaml 文件包含以下几个主要部分:

```yaml

监听端口

port: 7890 # HTTP 代理端口
socks-port: 7891 # SOCKS5 代理端口
mixed-port: 7890

redir-port: 7892 # Linux 和 macOS 的 TPROXY 端口 (可选)

允许局域网连接 (可选)

allow-lan: true

规则模式:Rule, Global, Direct

mode: Rule

日志级别:silent, error, warning, info, debug

log-level: info

IPv6 支持 (可选)

ipv6: false

外部控制器 (RESTful API)

external-controller: 127.0.0.1:9090

外部 UI (可选,用于图形化管理 Clash)

external-ui: /path/to/clash-dashboard

DNS 设置 (可选,用于增强 DNS 解析,防止 DNS 污染)

dns:
enable: true
listen: 0.0.0.0:53
ipv6: false
enhanced-mode: fake-ip # 或 redir-host
fake-ip-range: 198.18.0.1/16
nameserver:
- 1.1.1.1
- 8.8.8.8
fallback:
- https://dns.google/dns-query
fallback-filter:
geoip: true
ipcidr:
- 240.0.0.0/4

代理服务器

proxies:
- name: "Proxy A"
type: ss
server: server_a_address
port: 443
cipher: chacha20-ietf-poly1305
password: "password_a"
# udp: true # 是否支持 UDP 转发 (可选)

  • name: "Proxy B"
    type: vmess
    server: server_b_address
    port: 443
    uuid: "uuid_b"
    alterId: 64
    cipher: auto
    # tls: true # 是否启用 TLS (可选)
    # network: ws # 网络传输协议,如 ws (WebSocket) (可选)
    # ws-path: /path # WebSocket 路径 (可选)

代理组 (可选,用于负载均衡、故障转移等)

proxy-groups:
- name: "Proxy Group"
type: select # 或 url-test, fallback, load-balance
proxies:
- "Proxy A"
- "Proxy B"
# url: "http://www.gstatic.com/generate_204" # 用于 url-test (可选)
# interval: 300 # 测试间隔 (可选)

规则

rules:
- DOMAIN-SUFFIX,google.com,Proxy Group
- DOMAIN-KEYWORD,github,Proxy Group
- GEOIP,CN,DIRECT
- MATCH,Proxy Group
```

关键配置项说明:

  • portsocks-port:HTTP 和 SOCKS5 代理的监听端口。
  • mixed-port: 混合代理端口,同时支持http与socks5.
  • allow-lan: 是否允许来自局域网的连接。
  • mode:运行模式。
    • Global:所有流量都走代理。
    • Rule:根据规则分流。
    • Direct:所有流量直连。
  • log-level:日志级别。
  • external-controller:Clash 的 RESTful API 地址。
  • dns:DNS 设置,用于防止 DNS 污染。
  • proxies:定义代理服务器,支持多种协议。
  • proxy-groups:定义代理组,用于负载均衡、故障转移等。
  • rules:定义规则,决定流量走向。

2. 订阅链接

如果你使用机场提供的订阅链接,可以简化配置。只需将订阅链接中的内容(通常是 Base64 编码的)解码,然后将解码后的 YAML 内容复制到 config.yamlproxies 部分即可。

你也可以直接在配置文件中这样填写:
```yaml
proxy-providers:
My-Provider: #provider名称, 自定义
type: http
url: "订阅链接" # 机场订阅链接
path: ./proxy.yaml # 下载的配置保存位置
interval: 3600 #自动更新间隔(秒)
health-check: #健康检查配置, 可省略
enable: true
interval: 600
url: http://www.gstatic.com/generate_204

proxies: #这里不用再手动写了
- name: "Fallback"
type: fallback
proxies:
- url: 'http://www.gstatic.com/generate_204'
interval: 300

rules:
- DOMAIN-SUFFIX,google.com,Fallback
- DOMAIN-KEYWORD,github,Fallback
- GEOIP,CN,DIRECT
- MATCH,Fallback
```

Clash 会自动下载并解析订阅链接, 并存入proxy.yaml,然后加载.

3. 规则配置

Clash 的规则引擎非常强大,支持多种匹配方式:

  • DOMAIN-SUFFIX: 域名后缀匹配。
  • DOMAIN-KEYWORD: 域名关键词匹配。
  • DOMAIN: 完整域名匹配。
  • IP-CIDR: IP 地址段匹配。
  • GEOIP: 基于 GeoIP 数据库的国家/地区匹配。
  • SRC-IP-CIDR: 根据来源IP匹配
  • PROCESS-NAME: 根据发起请求的进程名匹配
  • MATCH: 兜底规则,匹配所有未被其他规则匹配的流量。

示例:

yaml
rules:
- DOMAIN-SUFFIX,google.com,Proxy Group # 所有 google.com 的子域名走代理
- DOMAIN-KEYWORD,github,Proxy Group # 包含 github 关键词的域名走代理
- GEOIP,CN,DIRECT # 中国大陆的 IP 直连
- MATCH,Proxy Group # 其他所有流量走代理

4. DNS 配置 (可选)

为了防止 DNS 污染,建议配置 Clash 的 DNS。

  • enable:启用 DNS。
  • listen:DNS 监听地址。
  • enhanced-mode
    • redir-host:传统的 DNS 代理模式。
    • fake-ip:使用虚假 IP,可以避免 DNS 污染,并提高 DNS 解析速度。
  • nameserver:上游 DNS 服务器。
  • fallback: 回退DNS服务器,在nameserver全部无效时启用.
  • fallback-filter: 回退过滤器,防止被污染的DNS生效.

五、Clash 启动与管理

1. 启动 Clash

在终端中,使用以下命令启动 Clash:

bash
clash -d /path/to/config/directory

其中/path/to/config/directory需要换成你的配置文件所在的目录。

如果你把config.yaml放在~/.config/clash/目录下,可以直接运行:
bash
clash

2. 设置开机自启

为了方便使用,你可以将 Clash 设置为开机自启。

使用 systemd(推荐):

  1. 创建一个 systemd 服务文件:

    bash
    sudo nano /etc/systemd/system/clash.service

  2. 将以下内容复制到文件中:

    ```ini
    [Unit]
    Description=Clash Service
    After=network.target

    [Service]
    Type=simple
    User=your_username # 替换为你的用户名
    ExecStart=/usr/local/bin/clash -d /path/to/config/directory # 替换为你的配置目录
    Restart=on-failure

    [Install]
    WantedBy=multi-user.target
    ```

  3. 启用并启动服务:

    bash
    sudo systemctl enable clash
    sudo systemctl start clash

  4. 检查服务状态:
    sudo systemctl status clash

使用 crontab(不推荐):

bash
crontab -e

添加以下行:

@reboot /usr/local/bin/clash -d /path/to/config/directory > /dev/null 2>&1

3. 停止 Clash

```bash

如果使用 systemd

sudo systemctl stop clash

或者直接查找 Clash 进程并杀死

killall clash
```

4. 更新 Clash

  1. 手动更新: 按照手动安装的步骤,下载新版本的 Clash,替换旧版本即可。
  2. 使用脚本更新: 再次运行安装脚本即可。
  3. 更新订阅:
    • 手动更新: 在Clash 命令行中执行curl -X PUT -H "Content-Type: application/json" -d '{"path": "<配置文件路径>", "payload": "<订阅链接>"}' http://127.0.0.1:9090/providers/proxies/<provider名称>
    • 自动更新: 上文配置中的interval参数控制.

5. 日志查看

Clash 的日志默认输出到标准错误输出。你可以通过以下方式查看日志:

  • systemd 管理的:sudo journalctl -u clash
  • 查找clash进程,然后tail -f /proc/<进程ID>/fd/2

六、Clash 进阶技巧

1. 使用外部 UI

Clash 提供 RESTful API,可以使用外部 UI 进行图形化管理。常用的 UI 有:

安装并配置好 UI 后,可以在浏览器中访问 http://127.0.0.1:9090 (或其他配置的地址)来管理 Clash。

2. 使用自定义规则

你可以创建自定义规则文件,并在 config.yaml 中引用:

```yaml
rule-providers:
my-rules:
type: file
path: /path/to/my-rules.yaml
behavior: domain # 或 classic

rules:
- RULE-SET,my-rules,Proxy Group
- MATCH,Proxy Group
```

my-rules.yaml 文件内容示例:

yaml
payload:
- DOMAIN-SUFFIX,example.com
- DOMAIN-KEYWORD,example

3. 使用脚本控制 Clash

你可以使用 curl 或其他工具,通过 RESTful API 来控制 Clash。

示例:

  • 切换代理:

    bash
    curl -X PUT -H "Content-Type: application/json" -d '{"proxy": "Proxy A"}' http://127.0.0.1:9090/proxies/Proxy%20Group

  • 切换模式:

    bash
    curl -X PATCH -H "Content-Type: application/json" -d '{"mode": "Rule"}' http://127.0.0.1:9090/configs

    * 重新加载配置:
    bash
    curl -X POST http://127.0.0.1:9090/configs/reload

    4. 使用 TPROXY 模式 (透明代理)

TPROXY 模式可以将所有流量(包括 TCP 和 UDP)都转发到 Clash,实现透明代理。这需要内核支持 TPROXY,并且需要配置 iptables。

配置步骤(仅供参考,具体配置可能因系统而异):

  1. 启用 TPROXY:

    ```

    在 config.yaml 中设置 redir-port

    redir-port: 7892
    ```

  2. 配置 iptables:
    ```
    # 创建自定义链
    iptables -t mangle -N CLASH

    将来自特定用户组的流量转发到 CLASH 链

    iptables -t mangle -A OUTPUT -m owner --uid-owner your_username -j CLASH # 替换为你的用户名

    将所有流量转发到 Clash 的 redir-port

    iptables -t mangle -A CLASH -j RETURN -m mark --mark 0xff # 避免循环
    iptables -t mangle -A CLASH -p tcp -j TPROXY --on-port 7892 --tproxy-mark 0x01/0x01
    iptables -t mangle -A CLASH -p udp -j TPROXY --on-port 7892 --tproxy-mark 0x01/0x01
    3. 配置路由表
    ip rule add fwmark 1 table 100
    ip route add local 0.0.0.0/0 dev lo table 100
    ```

注意: TPROXY 配置较为复杂,需要一定的网络知识。如果配置不当,可能会导致网络故障。

5.策略组进阶

Clash 支持多种类型的策略组, 善用他们可以灵活地控制你的网络流量.

  • select: 手动选择使用哪个代理.
  • url-test: 自动选择延迟最低的代理服务器.
  • fallback: 按顺序尝试代理, 直到找到可用的.
  • load-balance: 负载均衡, 可以选择consistent-hashing(一致性哈希) 或 round-robin(轮询)

七、常见问题解答

  1. Clash 无法启动?

    • 检查配置文件语法是否正确。
    • 检查端口是否被占用。
    • 检查日志输出,查找错误信息。
  2. Clash 无法连接代理?

    • 检查代理服务器配置是否正确。
    • 检查网络连接是否正常。
    • 尝试更换代理服务器。
  3. Clash 规则不生效?

    • 检查规则语法是否正确。
    • 检查规则顺序是否合理。
    • 尝试使用 clash -t -f config.yaml 命令测试配置文件。
  4. 如何更新订阅?

    • 手动更新:在 Clash 命令行或 UI 中更新。
    • 自动更新:设置 proxy-providersinterval 参数。
  5. Clash 占用 CPU 或内存过高?

    • 检查是否有大量规则或复杂的 DNS 设置。
    • 尝试减少规则数量或简化 DNS 设置。
    • 尝试更换性能更好的代理协议。

八、总结

Clash 是一款功能强大的代理客户端,通过本文的详细介绍,相信你已经掌握了 Clash 的基本使用和配置方法。掌握 Clash,你可以更好地控制你的网络流量,实现更自由、更安全的上网体验。记住,实践是最好的老师,多尝试不同的配置,你会发现 Clash 的更多可能性。

THE END
icon
0
icon
打赏
icon
分享
icon
二维码
icon
海报
发表评论
评论列表

赶快来坐沙发