在 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 之前,请确保您具备以下条件:
- 一台运行 Linux 的计算机: 本文的教程适用于大多数主流的 Linux 发行版,如 Ubuntu、Debian、Fedora、Arch Linux 等。
- 基础的 Linux 命令行操作知识: 您需要熟悉如何打开终端、执行命令、使用
sudo
获取管理员权限、创建和编辑文件等基本操作。 - 稳定的网络连接: 用于下载 Clash 程序和您的配置/订阅文件。
- 一个 Clash 兼容的配置文件或订阅链接: 这通常由您的代理服务提供商提供,以 YAML 格式呈现。这是 Clash 正常工作的核心。
- 常用的命令行工具: 如
curl
或wget
用于下载文件,tar
或unzip
用于解压文件。大多数 Linux 系统默认已安装这些工具。
安装 Clash 核心守护进程(CLI)
Clash 官方 releases 页面通常提供预编译好的二进制文件,这是在 Linux 上安装 Clash 最直接和推荐的方式。
步骤 1:确定您的系统架构
Linux 系统有多种架构,最常见的是 amd64
(x86_64) 和 arm64
(aarch64)。您需要下载与您的系统架构相匹配的 Clash 版本。在终端中执行以下命令可以查看您的系统架构:
bash
uname -m
输出通常会是 x86_64
或 aarch64
。
步骤 2:下载 Clash 二进制文件
访问 Clash 在 GitHub 上的 Releases 页面:https://github.com/Dreamacro/clash/releases
在该页面,找到最新的 Release 版本。通常会有一个 Assets 列表,里面包含了各种平台和架构的二进制文件。找到适用于 Linux 的文件,其命名规则通常是 clash-linux-[架构]-[版本号].gz
或 clash-linux-[架构]-[版本号].tar.gz
。例如,对于 amd64
架构,文件可能叫做 clash-linux-amd64-vX.Y.Z.gz
或 clash-linux-amd64-vX.Y.Z.tar.gz
(其中 X.Y.Z 是版本号)。
使用 curl
或 wget
命令下载该文件。请将以下命令中的 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 类似:
- 访问 Clash Meta 的 Releases 页面:
https://github.com/MetaCubeX/Clash.Meta/releases
- 找到适用于您系统架构的最新 Release,下载对应的二进制文件(命名可能包含
clash-meta-linux
)。 - 解压文件,您会得到一个名为
clash-meta
的可执行文件。 - 赋予执行权限并移动到
/usr/local/bin/
:
bash
chmod +x clash-meta
sudo mv clash-meta /usr/local/bin/ - 验证安装:
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
文件下载链接,可以使用 curl
或 wget
下载:
“`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
# … 等等
“`
- name: “节点A”
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秒测试一次延迟
# … 其他组
``
DIRECT
*注意:*和
REJECT` 是 Clash 内置的特殊策略,分别代表直连和拒绝连接。
rules
: 定义流量的路由规则。规则按照顺序匹配,一旦匹配到,就会应用对应的策略(通常是一个proxy-group
或DIRECT
/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-groups
和 rules
部分。您可能需要根据自己的需求修改端口、allow-lan 设置,以及调整代理组和规则。
步骤 4:下载 GeoIP/GeoSite 数据库 (可选,但推荐用于 GEOIP/GEOSITE 规则)
如果您的配置文件中使用了 GEOIP
或 GEOSITE
规则,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 更通用)。
请注意端口号 (7890
和 7891
) 需要与您的 config.yaml
中的 port
, socks-port
或 mixed-port
设置相匹配。如果您的 mixed-port
设置为 7890,那么 HTTP/SOCKS5 都可以使用 http://127.0.0.1:7890
或 socks5://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-controller
和 secret
项。确保 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。
最简单的方式是使用像 Yacht 或 clash-dashboard (Clash 官方提供的基础 UI) 这样的项目。这些项目通常提供一个静态网页,您只需在浏览器中打开该网页文件(如果允许本地文件访问 API),或将其部署到 Web 服务器。
更方便的方式是直接访问一些开发者提供的在线 Web UI 托管地址,例如:
- Yacht
- clash-dashboard (托管在 Vercel)
- minimal-ui (一个简约的 UI)
在浏览器中访问其中一个在线 Web UI 地址。当页面加载后,它会提示您输入 Clash 的 API 地址和密钥 (external-controller
和 secret
)。
- 主机/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
),选择延迟最低的节点作为当前使用的节点。配置项url
和interval
控制测试地址和频率。fallback
: 按顺序尝试组内节点,使用第一个测试成功的节点。如果当前节点失效,会自动切换到下一个可用的节点。用于构建高可用的节点列表。配置项url
和interval
同样重要。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.yaml
的 proxies
部分,您可以配置 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 的过程中,您可能会遇到一些问题。以下是一些常见的故障排除步骤:
- 检查 Clash 进程是否在运行:
bash
sudo systemctl status clash # 如果使用 systemd
# 或者 ps aux | grep clash # 如果是其他方式运行 - 查看 Clash 日志: 这是诊断问题的最重要步骤。
bash
sudo journalctl -u clash -f # 如果使用 systemd
# 如果是直接运行,查看终端输出;如果是 nohup,查看 nohup.out 文件
日志会显示启动错误(如配置文件解析失败)、连接错误(如代理服务器无法连接)、规则匹配情况等信息。 - 检查配置文件 (
config.yaml
):- 使用
clash -t -d ~/.config/clash/
命令测试配置文件的语法是否正确。 - 检查代理服务器地址、端口、密码/UUID 等信息是否准确无误。
- 检查端口设置 (
port
,socks-port
,mixed-port
) 是否与其他程序冲突,并且与您在应用程序/系统代理设置中使用的端口一致。可以使用sudo netstat -tulnp | grep clash
(或ss -tulnp | grep clash
) 查看 Clash 正在监听的端口。 - 检查
external-controller
和secret
设置,确保 Web UI 连接时使用了正确的地址、端口和密码。
- 使用
- 检查网络连接:
- 确保您的服务器(运行 Clash 的 Linux 机器)能够正常访问互联网。
- 尝试 ping 或 telnet 到您的代理服务器地址和端口,检查服务器是否可达。
- 检查应用程序/系统代理设置: 确保您要使用代理的应用程序或系统网络设置正确地指向了 Clash 监听的本地地址 (
127.0.0.1
) 和端口。 - 检查防火墙: 如果您的 Linux 系统或网络中有防火墙 (如
ufw
,firewalld
, iptables),确保允许外部设备访问您的 Clash 端口(如果您设置了allow-lan: true
),并允许 Clash 进程的网络连接。 - 检查订阅/节点状态: 您的代理服务提供商的节点可能出现问题。尝试在 Web UI 中测试节点的延迟,或联系您的服务商确认节点状态。
- DNS 问题: 如果出现特定网站无法访问或访问缓慢,可能是 DNS 问题。检查 Clash 配置中的
dns
部分,确保使用了可靠的 DNS 服务器,并查看日志中是否有 DNS 解析相关的错误。开启 Clash 的 Fake IP 功能有时能解决复杂的 DNS 问题,但这需要在config.yaml
的dns
部分进行配置。
结论
通过本文的详细步骤,您应该已经成功在 Linux 系统上安装了 Clash 或 Clash Meta 核心守护进程,配置了 config.yaml
文件,并学会了如何通过 systemd
将其设置为后台服务运行。同时,您也了解了如何通过环境变量、系统代理、浏览器扩展以及 Web UI 来使用和管理 Clash。
Clash 凭借其强大的规则引擎和灵活的配置,为 Linux 用户提供了前所未有的网络访问控制能力。无论是实现智能分流,还是访问特定服务,Clash 都能助您一臂之力。
记住,Clash 的强大之处在于其高度可定制的 config.yaml
文件。深入研究配置文件中的 proxy-groups
和 rules
部分,结合 GeoIP/GeoSite 数据库,您可以构建出满足几乎所有复杂需求的网络代理方案。
如果您选择使用 Clash Meta,您还将获得对最新代理协议的支持,以适应不断变化的网络环境。
尽情探索 Clash 的世界吧!祝您在 Linux 上拥有流畅、智能的网络体验。