先选路线:图形客户端,还是 mihomo 内核
Linux 上的 Clash 生态分两层。底层是内核,负责解析配置、分流流量,目前活跃维护的内核是 mihomo(原 Clash Meta);上层是图形客户端,把内核包进窗口,提供订阅管理、节点切换与系统代理开关。两条路线对应两类环境:
- 桌面发行版(Ubuntu、Debian、Fedora 等,有图形界面):安装图形客户端。Clash Verge Rev 提供 deb 与 rpm 包,FlClash 提供 deb 包,装完即用。
- 服务器、WSL、最小化容器(无图形界面):直接部署 mihomo 内核,用配置文件加 systemd 托管,配合 Web 面板查看状态。
两条路线共用同一份 YAML 配置语法,订阅链接也通用,日后换路线不必重新整理配置。下文分别给出完整步骤。
桌面发行版:安装图形客户端
Debian / Ubuntu 系(deb 包)
从下载页取得对应架构的 deb 包后,在终端执行:
sudo dpkg -i clash-verge_*_amd64.deb
sudo apt-get -f install # 仅当 dpkg 报依赖错误时执行
装完从应用菜单启动,在订阅页粘贴订阅链接,更新后选择节点,打开「系统代理」开关即可。GNOME 与 KDE 的系统代理由客户端自动写入,浏览器与大部分桌面应用随即走代理。
Fedora / RHEL 系(rpm 包)
sudo dnf install ./clash-verge-*.x86_64.rpm
dnf 会自动补齐依赖,装完后的订阅导入与开关流程与 deb 一致。
下载前先确认架构:绝大多数台式机与笔记本是 x86_64(amd64),ARM 设备选 arm64。终端执行 uname -m 即可查看当前机器架构。
个别应用不读系统代理设置(部分命令行工具、自带网络栈的桌面应用),这时可开启客户端的 TUN 模式,由内核在系统层接管全部 TCP/UDP 流量。TUN 需要创建虚拟网卡,客户端会请求管理员授权。
命令行环境:部署 mihomo 内核
服务器与 WSL 没有窗口,直接跑内核。整个过程四步:
-
获取二进制
从下载页的内核区取得 mihomo 的 Linux 构建,按架构选 linux-amd64 或 linux-arm64,解压后是单个可执行文件,无其他依赖。
-
安装到系统路径
执行
sudo install -m 0755 mihomo /usr/local/bin/mihomo,把文件放到标准路径并赋予执行权限。 -
准备配置目录
约定目录
/etc/mihomo,在其中放 config.yaml。订阅链接的原始内容不能直接当配置用,需写成 proxies、proxy-groups、rules 三段;更省事的写法是用 proxy-providers 直接引用订阅地址,内核会自动拉取并定时更新。 -
前台试运行
先执行
mihomo -d /etc/mihomo前台跑一次,确认配置无报错、端口正常监听,再交给 systemd 托管。
一份最小可用配置如下:
mixed-port: 7890
allow-lan: false
external-controller: 127.0.0.1:9090
proxy-providers:
airport:
type: http
url: "https://example.com/subscribe"
interval: 86400
path: ./providers/airport.yaml
mixed-port 同时接受 HTTP 与 SOCKS5 请求;external-controller 是内核的 REST 接口,Web 面板靠它读写运行状态,只监听本机回环地址即可。
systemd 托管与开机自启
新建单元文件 /etc/systemd/system/mihomo.service:
[Unit]
Description=mihomo kernel
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
随后注册并启动:
sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
journalctl -u mihomo -f # 跟踪运行日志
enable --now 一条命令同时完成开机自启注册与立即启动。此后每次修改配置,执行 sudo systemctl restart mihomo 使其生效。
TUN 模式的权限
TUN 需要创建虚拟网卡,普通用户默认无此权限。两种做法:一是按上面的单元文件直接以 root 运行;二是给二进制授予网络管理能力,再以普通用户身份运行:
sudo setcap 'cap_net_admin,cap_net_bind_service=+ep' /usr/local/bin/mihomo
部分容器环境(OpenVZ、未放权的 LXC)没有 /dev/net/tun 设备,TUN 不可用,只能退回 mixed-port 加应用级代理。若 systemd 以非 root 用户运行,单元文件里需补 AmbientCapabilities=CAP_NET_ADMIN。
验证代理是否生效
最直接的办法是带代理参数发一次请求:
curl -x http://127.0.0.1:7890 https://api.ip.sb
返回的出口 IP 与所选节点地区一致,说明链路已通。也可以把代理写进 shell 环境,让后续命令统一走代理:
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:7890
想要图形界面,可挂 Web 面板:把 metacubexd、zashboard 或 yacd 这类静态面板文件放进配置目录的 ui 子目录,浏览器访问 http://127.0.0.1:9090/ui,即可查看活动连接、切换节点、测试延迟。面板只是内核接口的前端,关掉页面不影响代理运行。
若 curl 返回超时,先确认内核进程在跑、端口在监听,再检查配置里的 mixed-port 是否与请求端口一致;出口 IP 不变则多为分流规则把目标域名走了直连,把规则模式临时切到全局再测一次即可定位。
WSL 与服务器的两点差异
WSL2
默认 NAT 网络下,WSL 与 Windows 各有独立的回环地址。代理跑在 WSL 里时,Windows 侧要连它,需在配置里设 allow-lan: true 并用 WSL 的 IP 访问。更顺手的做法是把客户端装在 Windows 端,WSL 里 export 代理指向 Windows 主机 IP——/etc/resolv.conf 中的 nameserver 即主机地址。启用 WSL 的 mirrored 网络模式后,两侧共享 localhost,上述绕路全部消失。
服务器
服务器没有本地浏览器,面板通过 SSH 端口转发访问:
ssh -L 9090:127.0.0.1:9090 user@your-server
保持该会话,本机浏览器再访问 9090 端口的 ui 路径即可。
external-controller 不要监听 0.0.0.0 暴露到公网。确有远程管理需要时,在配置里设 secret 字段加访问口令,并用防火墙限制来源 IP。
常见问题速查
- 端口被占:
ss -ltnp | grep 7890查出占用进程,或在配置里把 mixed-port 换成其他端口。 - 配置报错:YAML 只认空格缩进,不能用 Tab;journalctl 日志会给出出错行号,按行号修正即可。
- 订阅不更新:proxy-providers 的 interval 字段控制自动更新间隔,单位秒;重启服务可强制立即拉取。
- DNS 异常:在 config.yaml 的 dns 段启用内核 DNS 并开 fake-ip,配合 TUN 模式,或把系统 DNS 指向内核监听地址。
- 规则不命中:确认运行模式是 rule 而非 direct 或 global;Web 面板里可查每条连接实际命中的规则链。
配置字段的完整写法可查阅站内 YAML 手册;图形客户端的订阅导入细节与 Windows、macOS 基本一致,使用文档里有对应章节。