如何在 Linux 上安装和使用 Clash – wiki基地


在 Linux 上安装和使用 Clash:一份详尽的指南

引言:Clash 是什么?为何在 Linux 上使用它?

在数字化的浪潮中,网络连接已成为我们工作、学习和娱乐不可或缺的一部分。然而,地理限制、审查制度或仅仅是为了保护个人隐私,我们有时需要更灵活、更智能的网络访问方式。传统的代理软件往往功能单一,无法满足日益复杂的网络环境需求。这时,一个基于规则的多协议代理客户端——Clash,应运而生。

Clash 是一个使用 Go 语言开发的网络代理客户端,它以其强大的规则引擎、对多种协议的支持(包括 Shadowsocks、VMess、Trojan、Snell、HTTP(S) 和 SOCKS5 等)、灵活的路由配置以及跨平台特性(Windows, macOS, Linux, Android, iOS)而受到广泛欢迎。与传统的代理工具不同,Clash 允许用户根据自定义规则(例如,域名、IP 段、地理位置等)智能地分流流量,实现国内流量直连、国外流量走代理的精细控制,极大地提高了上网效率和体验。

对于 Linux 用户而言,虽然命令行是其核心魅力所在,但这并不意味着便捷性就必须打折扣。Clash 在 Linux 上提供了一个强大的命令行界面(CLI)守护进程,可以轻松集成到系统中,通过 systemd 服务进行管理,实现开机自启动、后台运行。同时,Clash 还内置了一个 Web API,可以配合各种图形化用户界面(GUI)或 Web 面板进行可视化管理和监控,兼顾了命令行的高效与图形界面的直观。

本文将为您提供一份详尽的指南,从零开始教您如何在 Linux 系统上安装 Clash 核心守护进程,配置您的订阅或自定义服务器,并通过多种方式(命令行、系统代理、Web UI)使用和管理 Clash,助您在 Linux 世界里畅游无阻。

前提条件

在开始安装 Clash 之前,请确保您具备以下条件:

  1. 一台运行 Linux 的计算机: 本文的教程适用于大多数主流的 Linux 发行版,如 Ubuntu、Debian、Fedora、Arch Linux 等。
  2. 基础的 Linux 命令行操作知识: 您需要熟悉如何打开终端、执行命令、使用 sudo 获取管理员权限、创建和编辑文件等基本操作。
  3. 稳定的网络连接: 用于下载 Clash 程序和您的配置/订阅文件。
  4. 一个 Clash 兼容的配置文件或订阅链接: 这通常由您的代理服务提供商提供,以 YAML 格式呈现。这是 Clash 正常工作的核心。
  5. 常用的命令行工具:curlwget 用于下载文件,tarunzip 用于解压文件。大多数 Linux 系统默认已安装这些工具。

安装 Clash 核心守护进程(CLI)

Clash 官方 releases 页面通常提供预编译好的二进制文件,这是在 Linux 上安装 Clash 最直接和推荐的方式。

步骤 1:确定您的系统架构

Linux 系统有多种架构,最常见的是 amd64 (x86_64) 和 arm64 (aarch64)。您需要下载与您的系统架构相匹配的 Clash 版本。在终端中执行以下命令可以查看您的系统架构:

bash
uname -m

输出通常会是 x86_64aarch64

步骤 2:下载 Clash 二进制文件

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

在该页面,找到最新的 Release 版本。通常会有一个 Assets 列表,里面包含了各种平台和架构的二进制文件。找到适用于 Linux 的文件,其命名规则通常是 clash-linux-[架构]-[版本号].gzclash-linux-[架构]-[版本号].tar.gz。例如,对于 amd64 架构,文件可能叫做 clash-linux-amd64-vX.Y.Z.gzclash-linux-amd64-vX.Y.Z.tar.gz (其中 X.Y.Z 是版本号)。

使用 curlwget 命令下载该文件。请将以下命令中的 URL 和文件名替换为您找到的最新版本对应的实际链接。

使用 curl 下载:

“`bash

替换为你找到的实际下载链接

CLASH_URL=”https://github.com/Dreamacro/clash/releases/download/vX.Y.Z/clash-linux-amd64-vX.Y.Z.gz”
wget “$CLASH_URL” -O clash.gz
“`

使用 wget 下载:

“`bash

替换为你找到的实际下载链接

CLASH_URL=”https://github.com/Dreamacro/clash/releases/download/vX.Y.Z/clash-linux-amd64-vX.Y.Z.tar.gz”
curl -L “$CLASH_URL” -o clash.tar.gz
“`

注意: GitHub 的 Releases 页面可能会有不同的压缩格式 (.gz.tar.gz),请根据您下载的文件名选择正确的解压命令。

步骤 3:解压文件

如果您下载的是 .gz 文件:

“`bash
gunzip clash.gz

解压后会得到一个名为 ‘clash’ 的可执行文件

“`

如果您下载的是 .tar.gz 文件:

“`bash
tar -xzf clash.tar.gz

解压后通常会得到一个目录,进入该目录找到 ‘clash’ 可执行文件

目录名可能类似于 clash-linux-amd64-vX.Y.Z

cd clash-linux-amd64-vX.Y.Z

ls

您会看到 clash 可执行文件

“`

解压后,您会得到一个名为 clash 的可执行文件。

步骤 4:赋予执行权限并移动到 PATH 目录

为了能够在任何位置直接运行 clash 命令,我们需要赋予该文件执行权限,并将其移动到一个系统 PATH 包含的目录中,例如 /usr/local/bin

“`bash

如果您是在下载目录直接解压得到的clash文件

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

如果您是从tar.gz解压到子目录并进入了子目录

假设您在解压后的目录中,clash文件就在当前目录

chmod +x clash

sudo mv clash /usr/local/bin/

如果您需要将文件从其他位置移动(例如下载目录)

假设解压后的 clash 文件在 ~/Downloads/clash

chmod +x ~/Downloads/clash

sudo mv ~/Downloads/clash /usr/local/bin/

“`

/usr/local/bin 是一个存放用户自行安装的可执行程序的标准位置,并且通常已经被添加到系统的 PATH 环境变量中。

步骤 5:验证安装

打开一个新的终端窗口,或者在当前终端中执行 bash 命令加载新的 PATH 环境变量(虽然大多数情况下 sudo mv 后应该立即生效)。然后运行以下命令验证 Clash 是否安装成功:

bash
clash -v

如果安装成功,该命令会输出 Clash 的版本信息。

安装 Clash Meta (可选但推荐)

Clash Meta 是 Clash 的一个流行分支,它增加了对更多新协议(如 VLESS, Hysteria, TUIC 等)的支持,这些协议在当前的代理服务中越来越常见。如果您的订阅使用了这些协议,您需要安装 Clash Meta 而不是官方 Clash。

安装 Clash Meta 的过程与安装官方 Clash 类似:

  1. 访问 Clash Meta 的 Releases 页面:https://github.com/MetaCubeX/Clash.Meta/releases
  2. 找到适用于您系统架构的最新 Release,下载对应的二进制文件(命名可能包含 clash-meta-linux)。
  3. 解压文件,您会得到一个名为 clash-meta 的可执行文件。
  4. 赋予执行权限并移动到 /usr/local/bin/
    bash
    chmod +x clash-meta
    sudo mv clash-meta /usr/local/bin/
  5. 验证安装:
    bash
    clash-meta -v

后续的配置和使用步骤,无论是官方 Clash 还是 Clash Meta,大部分是相同的,只需将命令 clash 替换为 clash-meta 即可。本文后续内容将以 clash 为例,但请记住,如果您安装的是 Clash Meta,请使用相应的命令。

配置 Clash

Clash 的核心是其配置文件 config.yaml。这个文件包含了所有的代理服务器信息、代理组策略、路由规则、端口设置等。

步骤 1:获取配置文件

您的代理服务提供商通常会提供一个 Clash 订阅链接或直接的 config.yaml 文件。

  • 订阅链接: 通常是一个 URL,访问该 URL 可以获取 YAML 格式的配置内容。许多订阅链接是 Base64 编码的,Clash 客户端(包括 CLI 模式)可以直接处理这些链接,下载并解析配置。
  • 直接 YAML 文件: 提供商可能直接给您一个 .yaml 文件让您下载。

方法 A:通过订阅链接获取 (推荐)

Clash 运行时可以直接指定订阅链接,Clash 会自动下载并生成配置。更常见的方式是使用 Web UI 或其他工具(如 Subconverter)先将订阅转换为 Clash CLI 兼容的 YAML 文件。不过,许多服务商提供的订阅链接可以直接被 clash 命令的 -d 参数处理,或者复制其 Base64 内容后在 Web UI 中导入。

方法 B:手动下载 config.yaml 文件

如果您的提供商直接提供 config.yaml 文件下载链接,可以使用 curlwget 下载:

“`bash

替换为您的 config.yaml 下载链接

CONFIG_URL=”https://your.proxy.provider.com/path/to/your/config.yaml”
wget “$CONFIG_URL” -O config.yaml
“`

或者,如果提供商只提供订阅链接但不是 Base64,并且您想先下载到本地:

“`bash

替换为您的订阅链接 (如果它是直接返回YAML的链接)

SUB_URL=”https://your.proxy.provider.com/path/to/your/subscription”
wget “$SUB_URL” -O config.yaml
“`

如果订阅链接是 Base64 编码的,您可能需要先用在线工具或脚本解码,或者依赖于支持订阅转换的工具/UI。最简单的方式通常是依赖 Web UI 或 Clash 客户端的订阅功能。但是对于 CLI 用户,更常见的工作流是将订阅转换为一个静态的 YAML 文件。许多服务商后台可以直接生成 Clash YAML 配置文件。

步骤 2:创建 Clash 配置目录并放置配置文件

Clash 默认会在用户的主目录下的 .config/clash/ 目录中查找配置文件 config.yaml。如果该目录不存在,您需要手动创建它。

bash
mkdir -p ~/.config/clash/

然后,将您获取到的 config.yaml 文件复制到这个目录中:

“`bash

假设您下载的 config.yaml 在当前目录

cp config.yaml ~/.config/clash/
“`

如果您使用的是 Clash Meta,默认配置目录也是 ~/.config/clash/

步骤 3:理解配置文件 (config.yaml) 的基本结构

config.yaml 是一个 YAML 格式的文件,它定义了 Clash 的所有行为。虽然完整的配置项非常多,但核心部分通常包括:

  • port / socks-port: Clash 监听的 HTTP/SOCKS 代理端口,应用程序将流量发送到这些端口。
  • redir-port / tproxy-port: Linux 透明代理端口 (需要 root 权限和特定的网络配置)。
  • mixed-port: 同时监听 HTTP 和 SOCKS5 协议的端口。
  • allow-lan: 是否允许局域网内的设备连接到您的代理端口。
  • mode: 代理模式,如 Global (所有流量走代理), Rule (按规则分流), Direct (所有流量直连)。通常设置为 Rule
  • log-level: 日志级别 (debug, info, warning, error, silent)。
  • external-controller: 用于 Web UI 或其他客户端连接的 API 地址和端口,通常是 127.0.0.1:9090
  • secret: 连接 external-controller 的密码,用于保护 Web UI。
  • dns: DNS 设置,可以配置多个 DNS 服务器,实现基于规则的 DNS 解析,防止 DNS 泄露。
  • proxies: 定义所有可用的代理服务器列表。
    “`yaml
    proxies:

    • name: “节点A”
      type: ss
      server: server_a.com
      port: 443
      password: “password_a”
      cipher: aes-256-gcm
      # … 其他协议配置类似
    • name: “节点B”
      type: vmess
      server: server_b.com
      port: 80
      uuid: your-uuid
      alterId: 0
      cipher: auto
      network: ws
      tls: true
      # … 等等
      “`
  • proxy-groups: 定义代理组。代理组是将多个 proxies 组合起来,并定义流量如何在这些代理之间进行选择或切换的策略。常见的策略有:
    • select: 手动选择组内的某个代理。
    • url-test: 自动选择延迟最低的代理。
    • fallback: 按顺序尝试代理,直到找到第一个可用的代理。
    • load-balance: 负载均衡。
    • Relay: 链式代理。
      “`yaml
      proxy-groups:
    • name: “手动切换”
      type: select
      proxies:

      • “节点A”
      • “节点B”
      • “DIRECT” # DIRECT 是 Clash 内置的直连策略
    • name: “自动选择”
      type: url-test
      proxies:

      • “节点A”
      • “节点B”
        url: http://www.gstatic.com/generate_204
        interval: 300 # 300秒测试一次延迟
        # … 其他组
        ``
        *注意:*
        DIRECTREJECT` 是 Clash 内置的特殊策略,分别代表直连和拒绝连接。
  • rules: 定义流量的路由规则。规则按照顺序匹配,一旦匹配到,就会应用对应的策略(通常是一个 proxy-groupDIRECT/REJECT)。
    “`yaml
    rules:

    • DOMAIN-SUFFIX,google.com,自动选择 # 访问 google.com 及其子域名走“自动选择”组
    • IP-CIDR,192.168.1.0/24,DIRECT # 访问内网 IP 直连
    • GEOIP,CN,DIRECT # 访问中国大陆 IP 直连 (需要 GeoLite2-Country.mmdb)
    • MATCH,手动切换 # 所有未匹配的流量走“手动切换”组 (MATCH 规则必须在最后)
      ``
      常见的规则类型有
      DOMAIN-SUFFIX,DOMAIN,DOMAIN-KEYWORD,IP-CIDR,GEOIP,GEOSITE,FINAL(等同于 MATCH),MATCH`。

您的订阅链接转换为的 YAML 文件通常会包含一个完整的 proxies, proxy-groupsrules 部分。您可能需要根据自己的需求修改端口、allow-lan 设置,以及调整代理组和规则。

步骤 4:下载 GeoIP/GeoSite 数据库 (可选,但推荐用于 GEOIP/GEOSITE 规则)

如果您的配置文件中使用了 GEOIPGEOSITE 规则,Clash 需要对应的数据库文件才能正常工作。这些文件通常是 Country.mmdb (GeoIP) 和 GeoSite.dat (GeoSite)。

您可以从以下地址下载这些文件:

  • Country.mmdb: https://github.com/P3TERX/GeoLite.mmdb/raw/main/Country.mmdb
  • GeoSite.dat: https://github.com/MetaCubeX/meta-rules-dat/raw/main/geosite.dat (如果您使用 Clash Meta,推荐使用 meta-rules-dat 提供的 GeoSite)
    • 或者:https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geosite.dat (v2ray-rules-dat)

下载并将它们放到 Clash 的配置目录 ~/.config/clash/ 中:

“`bash
cd ~/.config/clash/

下载 Country.mmdb

wget https://github.com/P3TERX/GeoLite.mmdb/raw/main/Country.mmdb

下载 GeoSite.dat (MetaCubeX 版本)

wget https://github.com/MetaCubeX/meta-rules-dat/raw/main/geosite.dat

或者下载 v2ray-rules-dat 版本

wget https://github.com/Loyalsoldier/v2ray-rules-dat/raw/release/geosite.dat

“`

确保这些文件与 config.yaml 位于同一个目录 ~/.config/clash/ 下。

运行 Clash

Clash 可以通过多种方式运行:直接在终端中运行、使用 nohup 在后台运行、或创建 systemd 服务实现开机自启动和持久运行。

方法 1:直接在终端中运行 (用于测试)

这是最简单的方式,方便查看日志输出和调试。

bash
clash -d ~/.config/clash/

-d 参数指定 Clash 读取配置文件的目录。Clash 会查找该目录下的 config.yaml 文件。

如果配置文件正确且代理可用,Clash 会启动并显示日志输出。要停止 Clash,只需在终端中按下 Ctrl + C

方法 2:使用 nohup 在后台运行 (不推荐用于长期服务)

nohup 命令可以让程序在用户退出终端后继续运行,& 符号使其在后台运行。

bash
nohup clash -d ~/.config/clash/ &

这种方法简单但不利于管理,例如查看运行状态、重启、停止等。推荐使用 systemd

方法 3:创建 systemd 服务 (推荐用于持久运行)

systemd 是现代 Linux 发行版中广泛使用的服务管理工具,它可以让您轻松地将 Clash 设置为系统服务,实现开机自启、后台稳定运行、方便管理和监控。

步骤 1:创建 systemd 服务文件

使用 root 权限创建一个新的服务文件,例如 /etc/systemd/system/clash.service

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

将以下内容复制到文件中。请务必将 User=your_username 替换为您的实际 Linux 用户名,并检查 ExecStart 中的 -d 参数路径是否正确。

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

[Service]
Type=simple

将 your_username 替换为您的实际用户名

User=your_username

确保路径 /home/your_username/.config/clash 是您存放 config.yaml 的目录

ExecStart=/usr/local/bin/clash -d /home/your_username/.config/clash
Restart=on-failure

如果需要,可以设置工作目录,但不强制

WorkingDirectory=/home/your_username/.config/clash

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

  • [Unit] 部分定义了服务的描述和依赖关系(在网络启动后启动)。
  • [Service] 部分定义了服务的行为:
    • Type=simple: 表示 ExecStart 命令是主进程。
    • User=your_username: 非常重要,指定以哪个用户身份运行 Clash。Clash 需要访问该用户的 ~/.config/clash 目录。请将 your_username 替换为您的用户名。
    • ExecStart: 指定要执行的命令。/usr/local/bin/clash 是 Clash 可执行文件的路径,-d 参数指向配置目录。
    • Restart=on-failure: 如果 Clash 进程因错误退出,系统会自动重启它。
  • [Install] 部分定义了服务如何被 systemd 启用。WantedBy=multi-user.target 意味着在多用户模式启动时(正常启动流程)会尝试启动此服务。

保存并关闭文件。

步骤 2:重新加载 systemd 配置

通知 systemd 有新的服务文件。

bash
sudo systemctl daemon-reload

步骤 3:启动 Clash 服务

bash
sudo systemctl start clash

步骤 4:检查服务状态

查看 Clash 服务是否正在运行以及查看日志输出。

bash
sudo systemctl status clash

您应该能看到服务状态是 active (running)。使用 q 键退出状态视图。

要查看更详细的日志,可以使用 journalctl

bash
sudo journalctl -u clash -f

-u clash 指定查看 clash 服务的日志,-f 表示跟随最新的日志输出。按下 Ctrl + C 退出。

步骤 5:设置开机自启动

如果您希望 Clash 在每次系统启动时自动运行,执行以下命令:

bash
sudo systemctl enable clash

如果您以后不想开机自启了,可以使用 sudo systemctl disable clash

常用 systemd 命令:

  • sudo systemctl stop clash: 停止 Clash 服务。
  • sudo systemctl restart clash: 重启 Clash 服务 (例如,更新配置文件后)。
  • sudo systemctl disable clash: 禁用 Clash 服务的开机自启动。
  • sudo systemctl enable clash: 启用 Clash 服务的开机自启动。
  • sudo systemctl status clash: 查看服务状态和最近的日志。

使用 Clash 代理

Clash 守护进程启动并成功加载配置后,它会在本地监听 HTTP、SOCKS5 代理端口(默认是 7890 和 7891,具体取决于你的 config.yaml 文件)。现在,您需要配置您的应用程序或系统来使用这些本地代理端口。

方法 1:设置环境变量 (适用于终端应用)

对于大多数命令行程序(如 curl, wget, git, apt 等),可以通过设置环境变量来使用代理。

bash
export HTTP_PROXY="http://127.0.0.1:7890"
export HTTPS_PROXY="http://127.0.0.1:7890"
export ALL_PROXY="socks5://127.0.0.1:7891" # 或者 http://127.0.0.1:7890

  • HTTP_PROXY: 用于 HTTP 请求。
  • HTTPS_PROXY: 用于 HTTPS 请求。
  • ALL_PROXY: 用于所有其他类型的请求 (通常 SOCKS5 更通用)。

请注意端口号 (78907891) 需要与您的 config.yaml 中的 port, socks-portmixed-port 设置相匹配。如果您的 mixed-port 设置为 7890,那么 HTTP/SOCKS5 都可以使用 http://127.0.0.1:7890socks5://127.0.0.1:7890

设置后,在当前终端会话中执行的命令就会使用代理。例如:

bash
curl https://www.google.com

如果您想让这些环境变量永久生效,可以将它们添加到您的 shell 配置文件中,例如 ~/.bashrc, ~/.zshrc~/.profile

“`bash

在 ~/.bashrc 或 ~/.zshrc 末尾添加

export HTTP_PROXY=”http://127.0.0.1:7890″
export HTTPS_PROXY=”http://127.0.0.1:7890″
export ALL_PROXY=”socks5://127.0.0.1:7891″ # 或其他
“`

添加后,需要重新加载配置文件 (source ~/.bashrc) 或打开新的终端窗口才能生效。

要临时取消代理,可以使用 unset 命令:

bash
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY

方法 2:配置桌面环境系统代理

大多数 Linux 桌面环境(如 GNOME, KDE, XFCE)都有图形界面的网络代理设置。您可以将 Clash 监听的本地地址和端口配置为系统的 HTTP、HTTPS 和 SOCKS 代理。

  • GNOME (Ubuntu, Fedora 等使用 GNOME 的发行版): 打开“设置” -> “网络” -> “网络代理”。选择“手动”,然后在 HTTP 代理、HTTPS 代理和 SOCKS 主机中填写 127.0.0.1,端口填写 Clash 对应的端口(例如 7890 或 7891)。
  • KDE Plasma: 打开“系统设置” -> “网络设置” -> “代理”。选择“手动代理配置”,然后填写 Clash 的本地地址和端口。

设置系统代理后,大多数使用系统网络设置的应用程序(如浏览器、软件商店等)都会通过 Clash 代理连接网络。

方法 3:浏览器扩展

对于浏览器,您可以使用 FoxyProxy 或 SwitchyOmega 等代理管理扩展,这些扩展可以更灵活地控制哪些网站走代理、哪些直连,甚至根据自定义规则切换不同的代理配置。在扩展中添加一个代理配置,类型选择 HTTP 或 SOCKS5,地址填写 127.0.0.1,端口填写 Clash 的监听端口。

方法 4:配置特定应用程序

有些应用程序有自己的代理设置,您可以在其设置中手动配置 Clash 的本地代理地址和端口。

方法 5:透明代理 (TUN/Redir)

Clash 支持 TUN (三层) 或 Redir/TProxy (四层) 透明代理模式。这种模式可以将所有或部分系统流量强制重定向到 Clash,即使应用程序本身不支持代理设置。TUN 模式通常更强大,可以代理 TCP 和 UDP 流量,但配置相对复杂,通常需要 root 权限,并且可能需要配置 iptables 或 nftables 规则。由于这部分内容较为深入且复杂,超出了本文基础指南的范围,但如果您有需求,可以在 Clash 的文档中查找关于 TUN 或 TProxy 模式的详细配置。

使用 Clash Web UI

虽然 Clash 核心是命令行程序,但它内置了一个 Web API (external-controller),可以与各种 Web UI 或桌面客户端配合使用,提供图形化的管理界面。通过 Web UI,您可以方便地查看流量、日志、切换代理节点/策略组、测试节点延迟、查看规则匹配情况等。

步骤 1:确保 external-controller 已配置

在您的 config.yaml 文件中,找到 external-controllersecret 项。确保 external-controller 设置为 127.0.0.1:9090 (或其他您指定的地址和端口),并设置一个 secret 密码(如果不设置则不需要密码,但不安全)。

“`yaml

… 其他配置

external-controller: ‘127.0.0.1:9090’
secret: ‘your_web_ui_secret’ # 设置一个密码,提高安全性

… 其他配置

“`

修改配置后,请重启 Clash 服务使配置生效:

bash
sudo systemctl restart clash

步骤 2:访问 Web UI

Clash 守护进程本身不提供 Web UI 文件,它只提供一个 API 接口。您需要一个与 Clash API 兼容的 Web UI 文件集,并将其部署到 Web 服务器(如 Nginx, Caddy)上,或者直接使用一些开源的 Web UI 项目,它们通常可以直接通过浏览器访问,通过 JavaScript 调用 Clash API。

最简单的方式是使用像 Yachtclash-dashboard (Clash 官方提供的基础 UI) 这样的项目。这些项目通常提供一个静态网页,您只需在浏览器中打开该网页文件(如果允许本地文件访问 API),或将其部署到 Web 服务器。

更方便的方式是直接访问一些开发者提供的在线 Web UI 托管地址,例如:

在浏览器中访问其中一个在线 Web UI 地址。当页面加载后,它会提示您输入 Clash 的 API 地址和密钥 (external-controllersecret)。

  • 主机/Host: 127.0.0.1
  • 端口/Port: 9090 (或您在 config.yaml 中设置的端口)
  • 密钥/Secret: 您在 config.yaml 中设置的 secret

填写正确信息后,点击连接。如果连接成功,您就能看到 Clash 的图形化界面了。

Web UI 的主要功能:

  • 总览 (Overview): 查看 Clash 的运行状态、流量统计、版本信息等。
  • 代理 (Proxies): 查看所有代理组和其包含的代理节点。您可以手动切换 select 类型的代理组的当前节点,或查看 url-test 组的延迟测试结果。
  • 日志 (Logs): 实时查看 Clash 的运行日志,帮助排查问题。
  • 连接 (Connections): 查看当前通过 Clash 的连接列表,包括源地址、目标地址、使用了哪个规则和策略组等,可以手动关闭连接。
  • 配置 (Config): 查看当前的 Clash 配置,虽然通常不能直接在线修改 config.yaml 文件,但可以在线管理规则、策略组等(取决于 UI 功能)。一些高级 UI 甚至支持导入订阅、编辑简单配置项。
  • 流量图 (Traffic Graph): 可视化实时流量速度。

通过 Web UI,您可以更方便地管理您的代理连接和策略。

配置文件进阶与 Clash Meta 特性

代理组策略详解

  • select: 用户在 Web UI 或客户端手动选择节点。
  • url-test: 自动测试组内节点的延迟(通过访问一个 URL,例如 http://www.gstatic.com/generate_204),选择延迟最低的节点作为当前使用的节点。配置项 urlinterval 控制测试地址和频率。
  • fallback: 按顺序尝试组内节点,使用第一个测试成功的节点。如果当前节点失效,会自动切换到下一个可用的节点。用于构建高可用的节点列表。配置项 urlinterval 同样重要。
  • load-balance: 将流量平均分配到组内所有健康节点上。通常用于自建多节点或特定场景,不常用作普通加速代理。
  • relay: 将流量链式传递。例如 A -> B -> C

理解这些策略对于构建高效且可靠的代理配置至关重要。

规则 (Rules) 详解

规则是 Clash 智能分流的核心。规则按照从上到下的顺序匹配,一旦有规则匹配成功,后续规则将被忽略。

  • DOMAIN-SUFFIX,example.com,ProxyGroup: 匹配 example.com 及其所有子域名 (a.example.com, b.c.example.com 等)。
  • DOMAIN,example.com,ProxyGroup: 仅匹配精确域名 example.com
  • DOMAIN-KEYWORD,example,ProxyGroup: 匹配包含关键词 example 的域名。
  • IP-CIDR,192.168.1.0/24,DIRECT: 匹配指定 IP 地址范围。
  • GEOIP,CN,DIRECT: 匹配 GeoIP 数据库中位于中国的 IP 地址(需要 Country.mmdb)。
  • GEOSITE,google,ProxyGroup: 匹配 GeoSite 数据库中标记为 google 的域名列表(需要 GeoSite.dat)。
  • MATCH,ProxyGroup: 匹配所有未被前面规则匹配的流量。这条规则必须放在所有规则的最后,作为默认策略。

合理的规则配置可以避免不必要的流量通过代理,提高直连速度,节省代理流量。很多订阅提供了预设的规则,但您可以根据自己的需求进行修改和优化。

Clash Meta (clash-meta) 特性

如果您安装的是 Clash Meta,您可以利用它对新协议的支持。在 config.yamlproxies 部分,您可以配置 VLESS, Hysteria, TUIC 等类型的节点。

例如,一个 VLESS 节点的配置可能如下:

yaml
proxies:
- name: "我的VLESS节点"
type: vless
server: vless.server.com
port: 443
uuid: your-vless-uuid
network: ws # 或 tcp, http, grpc 等
tls: true
# 其他 VLESS 特有参数如 flow, client-fingerprint, reality 等

使用 Clash Meta 意味着您需要一个支持这些协议的服务器和对应的配置。除了协议支持,Clash Meta 通常也包含一些额外的功能或优化。如果您从服务商获取的订阅链接使用了这些新协议,务必安装并使用 clash-meta 二进制文件来运行。配置文件本身(config.yaml)的格式在大体上是兼容的,只需要确保 proxies 部分的 type 和相关参数与 Meta 支持的协议匹配。

故障排除

在使用 Clash 的过程中,您可能会遇到一些问题。以下是一些常见的故障排除步骤:

  1. 检查 Clash 进程是否在运行:
    bash
    sudo systemctl status clash # 如果使用 systemd
    # 或者 ps aux | grep clash # 如果是其他方式运行
  2. 查看 Clash 日志: 这是诊断问题的最重要步骤。
    bash
    sudo journalctl -u clash -f # 如果使用 systemd
    # 如果是直接运行,查看终端输出;如果是 nohup,查看 nohup.out 文件

    日志会显示启动错误(如配置文件解析失败)、连接错误(如代理服务器无法连接)、规则匹配情况等信息。
  3. 检查配置文件 (config.yaml):
    • 使用 clash -t -d ~/.config/clash/ 命令测试配置文件的语法是否正确。
    • 检查代理服务器地址、端口、密码/UUID 等信息是否准确无误。
    • 检查端口设置 (port, socks-port, mixed-port) 是否与其他程序冲突,并且与您在应用程序/系统代理设置中使用的端口一致。可以使用 sudo netstat -tulnp | grep clash (或 ss -tulnp | grep clash) 查看 Clash 正在监听的端口。
    • 检查 external-controllersecret 设置,确保 Web UI 连接时使用了正确的地址、端口和密码。
  4. 检查网络连接:
    • 确保您的服务器(运行 Clash 的 Linux 机器)能够正常访问互联网。
    • 尝试 ping 或 telnet 到您的代理服务器地址和端口,检查服务器是否可达。
  5. 检查应用程序/系统代理设置: 确保您要使用代理的应用程序或系统网络设置正确地指向了 Clash 监听的本地地址 (127.0.0.1) 和端口。
  6. 检查防火墙: 如果您的 Linux 系统或网络中有防火墙 (如 ufw, firewalld, iptables),确保允许外部设备访问您的 Clash 端口(如果您设置了 allow-lan: true),并允许 Clash 进程的网络连接。
  7. 检查订阅/节点状态: 您的代理服务提供商的节点可能出现问题。尝试在 Web UI 中测试节点的延迟,或联系您的服务商确认节点状态。
  8. DNS 问题: 如果出现特定网站无法访问或访问缓慢,可能是 DNS 问题。检查 Clash 配置中的 dns 部分,确保使用了可靠的 DNS 服务器,并查看日志中是否有 DNS 解析相关的错误。开启 Clash 的 Fake IP 功能有时能解决复杂的 DNS 问题,但这需要在 config.yamldns 部分进行配置。

结论

通过本文的详细步骤,您应该已经成功在 Linux 系统上安装了 Clash 或 Clash Meta 核心守护进程,配置了 config.yaml 文件,并学会了如何通过 systemd 将其设置为后台服务运行。同时,您也了解了如何通过环境变量、系统代理、浏览器扩展以及 Web UI 来使用和管理 Clash。

Clash 凭借其强大的规则引擎和灵活的配置,为 Linux 用户提供了前所未有的网络访问控制能力。无论是实现智能分流,还是访问特定服务,Clash 都能助您一臂之力。

记住,Clash 的强大之处在于其高度可定制的 config.yaml 文件。深入研究配置文件中的 proxy-groupsrules 部分,结合 GeoIP/GeoSite 数据库,您可以构建出满足几乎所有复杂需求的网络代理方案。

如果您选择使用 Clash Meta,您还将获得对最新代理协议的支持,以适应不断变化的网络环境。

尽情探索 Clash 的世界吧!祝您在 Linux 上拥有流畅、智能的网络体验。


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部