Clash Verge 是基于 Tauri 的 Clash 图形客户端。推荐从 GitHub Releases 下载 .deb 包:
# 下载最新版本(替换为实际版本号)
wget https://github.com/clash-verge-rev/clash-verge-rev/releases/download/v1.7.7/clash-verge_1.7.7_amd64.deb
# 安装
sudo dpkg -i clash-verge_1.7.7_amd64.deb
# 修复依赖
sudo apt-get install -f
安装后 clash-verge 会以 systemd 用户服务的形式运行后台守护进程 clash-verge-service,负责实际代理流量的转发。
# 检查二进制文件
which clash-verge
# /usr/bin/clash-verge
# 确认 clash 内核存在
ls -l /home/user/.local/share/io.github.clash-verge-rev.clash-verge-rev/clash
用户级 systemd 服务文件:
/home/user/.config/systemd/user/clash-verge.service
-f 标志导致空配置占用端口7890(HTTP)和 7891(SOCKS5)被占用但转发流量失败。
根因:systemd 服务启动 clash 核心时缺少 -f 参数指定配置文件路径。没有 -f 时,clash 会自动生成一个空配置并在 7890/7891 端口上监听,导致 GUI 后续无法写入真实配置到这些端口,proxy 彻底失效。
修复:编辑 /home/user/.config/systemd/user/clash-verge.service,确保 ExecStart 包含 -f 和 -d 参数:
[Unit]
Description=Clash Verge Service
After=network.target
[Service]
Type=simple
Restart=on-failure
RestartSec=5
# ★ 关键:-f 指定配置文件,-d 指定工作目录
ExecStart=/home/user/.local/share/io.github.clash-verge-rev.clash-verge-rev/clash \
-d /home/user/.local/share/io.github.clash-verge-rev.clash-verge-rev/ \
-f /home/user/.local/share/io.github.clash-verge-rev.clash-verge-rev/config.yaml
[Install]
WantedBy=default.target
修复后重载:
systemctl --user daemon-reload
systemctl --user restart clash-verge.service
systemctl --user status clash-verge.service
# 检查 clash 进程是否带着正确的 -f 参数启动
ps aux | grep clash | grep -- '-f'
# 预期输出包含类似:
# /home/user/.local/.../clash -d /home/user/.../ -f /home/user/.../config.yaml
# 如果输出中没有 -f,说明服务仍未修复
Clash Verge 的配置目录:
~/.local/share/io.github.clash-verge-rev.clash-verge-rev/
├── clash # clash 内核二进制
├── config.yaml # 当前激活的配置文件
├── profiles/ # 订阅 profile 存放位置
└── logs/ # 日志文件
在 GUI 的 "Profiles" 标签页中:
# config.yaml 核心结构示例
port: 7890 # HTTP 代理端口
socks-port: 7891 # SOCKS5 代理端口
mixed-port: 7892 # 混合端口(HTTP + SOCKS5)
allow-lan: true # 允许局域网设备使用代理
mode: rule # rule / global / direct
log-level: info
# DNS 配置
dns:
enable: true
listen: 0.0.0.0:53
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
nameserver:
- 223.5.5.5
- 119.29.29.29
fallback:
- 8.8.8.8
- 1.1.1.1
proxies:
- name: "示例节点"
type: ss
server: example.com
port: 8388
cipher: aes-256-gcm
password: "your-password"
proxy-groups:
- name: "Proxy"
type: select
proxies:
- "示例节点"
- DIRECT
rules:
- DOMAIN-SUFFIX,google.com,Proxy
- DOMAIN-KEYWORD,github,Proxy
- GEOIP,CN,DIRECT
- MATCH,Proxy
设置环境变量 http_proxy / https_proxy,仅对遵守环境变量的程序生效。
# 手动设置(Clash Verge 通常通过 GUI 开关自动设置)
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
# 测试
curl -I https://www.google.com
适用场景:
http_proxy 环境变量TUN 模式会创建一个虚拟网卡,通过路由规则将所有流量(或匹配规则的流量)转发到 clash 核心。
在 Clash Verge 中开启:Settings → TUN Mode → 开启开启后会在系统中看到虚拟网卡:
ip addr show tun0
# 或
ip addr show utun # macOS
路由表变化:
ip route show table all | grep clash
# 预期看到 clash 注入的路由规则
适用场景:
CAP_NET_ADMIN
rules:
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
# 启用用户级自启动(linger 使服务在用户未登录时也运行)
sudo loginctl enable-linger $USER
# 启用 clash-verge 服务自启动
systemctl --user enable clash-verge.service
# 验证
systemctl --user is-enabled clash-verge.service
服务文件中已配置 Restart=on-failure 和 RestartSec=5,clash 核心崩溃后 5 秒自动重启。
[Service]
Restart=on-failure
RestartSec=5
在 Clash Verge Settings → "Start on Boot" 中勾选。这会在 ~/.config/autostart/ 下创建 .desktop 文件:
cat ~/.config/autostart/clash-verge.desktop
# Clash 核心日志
tail -f /home/user/.local/share/io.github.clash-verge-rev.clash-verge-rev/logs/*.log
# systemd 服务日志
journalctl --user -u clash-verge.service -f
# 查看最近 100 行
journalctl --user -u clash-verge.service -n 100 --no-pager
| 错误现象 | 可能原因 | 解决方法 |
|---|---|---|
| 端口被占用 (bind: address already in use) | systemd 服务缺少 -f 参数 |
按第 2.2 节修复 ExecStart |
| 订阅更新失败 | 网络不通 / URL 过期 | 先用 curl -x http://127.0.0.1:7890 <订阅URL> 测试连通性 |
| DNS 解析超时 | DNS 配置错误 / fake-ip 未生效 | 检查 dns 配置段,尝试 enhanced-mode: redir-host |
| 流量未走代理 | 规则匹配为 DIRECT | 检查 rules 顺序,确保 MATCH 走 Proxy |
| TUN 模式无法启动 | 权限不足 | sudo setcap cap_net_admin+ep /path/to/clash |
| Clash Verge GUI 闪退 | clash 内核版本不兼容 | 尝试更换 clash 内核版本(meta / premium) |
# 1. 检查端口是否在监听
ss -tlnp | grep -E '7890|7891|7892'
# 2. 测试 HTTP 代理
curl -x http://127.0.0.1:7890 -I https://www.google.com
# 3. 测试 SOCKS5 代理
curl -x socks5h://127.0.0.1:7891 -I https://www.google.com
# 4. 检查 clash 进程
ps aux | grep clash | grep -v grep
# 5. 检查配置是否有效
/home/user/.local/share/io.github.clash-verge-rev.clash-verge-rev/clash \
-d /home/user/.local/share/io.github.clash-verge-rev.clash-verge-rev/ \
-f /home/user/.local/share/io.github.clash-verge-rev.clash-verge-rev/config.yaml \
-t # -t 表示只测试配置,不运行
对于不使用 GUI 的场景,可以直接手写 config.yaml 并启动 clash:
# 测试配置
clash -d /home/user/.config/clash/ -f /home/user/.config/clash/config.yaml -t
# 前台运行(调试用,终端关闭即停止)
clash -d /home/user/.config/clash/ -f /home/user/.config/clash/config.yaml
# 后台运行
nohup clash -d /home/user/.config/clash/ -f /home/user/.config/clash/config.yaml > /tmp/clash.log 2>&1 &