Linux Clash 安装与配置:基于 mihomo 内核的命令行教程

梯子查编辑部更新于 阅读约 11 分钟mihomo入门

快速结论

通过本文,你可以快速掌握基于 mihomo 内核的 Linux Clash 下载、系统守护进程配置方法,并了解如何在终端中正确声明代理环境变量。

在许多服务器或无图形界面的开发环境中,配置有效的网络代理以加速拉取代码、更新系统以及访问特定资源是必需的操作。Linux Clash 及其衍生内核已经成为了这类场景下的热门解决方案。传统的内核虽已停止更新,但开源社区基于其代码分支推出了许多优秀的替代品,其中最为出色的便是 mihomo。

本篇教程将带你从零开始,基于 mihomo 内核在终端环境下完成 Linux Clash 的安装、配置与使用。从二进制文件的下载,到利用 systemd 守护进程实现开机自启,以及在命令行中如何正确声明代理环境变量,我们都将一一详述。

如果您对内核的具体发展背景和功能特性感兴趣,可以参阅mihomo-clash-meta介绍,以获取更多深入的技术细节以及历史渊源。

认识 mihomo 与 Linux 平台的兼容性

在 Linux 环境下,一切软件的运行都要考虑到系统的架构与包管理。我们今天的主角是 mihomo。它不仅仅是一个简单的转发工具,更是一个包含着规则分流、各种复杂协议解析的强大核心程序。因为其用 Go 语言编写,它天然具备了极佳的跨平台特性,几乎能够运行在从 x86 架构的主流服务器到 ARM 架构的树莓派等各类设备之上。

在 Linux 平台上使用它,最大的优势在于轻量与无界面。通过命令行,我们可以精细控制所有的参数,这对于习惯了在终端下操作的开发者来说,是极度舒适的。

第一步:下载与解压 mihomo 内核

在进行 Linux Clash 部署的第一步是获取适合您机器架构的内核文件。mihomo 内核是目前各大平台的首选,不仅支持原版的所有功能,还提供了更强大的协议和规则支持。

首先,检查你当前的 Linux 系统架构。可以在终端输入以下命令:

uname -m

常见的输出有 x86_64(或 amd64)、aarch64 等。接下来,前往官方 GitHub 的 Release 页面下载对应的二进制压缩包。打开 MetaCubeX/mihomo Releases 查看最新版本号,把下面命令里的 VERSION 换成实际版本(例如 v1.19.x),amd64 按上一步的架构替换:

VERSION=v1.19.0   # 替换为 Releases 页面上的最新版本
wget https://github.com/MetaCubeX/mihomo/releases/download/${VERSION}/mihomo-linux-amd64-${VERSION}.gz

下载完成后,使用 gunzip 命令将其解压:

gunzip mihomo-linux-amd64-${VERSION}.gz

解压后的文件是一个可执行文件,建议重命名并移动到系统的环境变量目录下(例如 /usr/local/bin):

sudo mv mihomo-linux-amd64-${VERSION} /usr/local/bin/mihomo
sudo chmod +x /usr/local/bin/mihomo

赋予执行权限后,这样我们就可以在任何路径下直接调用 mihomo 命令了。你可以输入 mihomo -v 来验证是否安装成功。

第二步:放置配置文件与订阅

有了内核之后,接下来需要准备 Linux Clash 运行所必需的配置文件。一般情况下,程序的默认读取路径是在用户目录下的 .config/mihomo/ 或全局的 /etc/mihomo/ 中。

为了便于统一管理和权限控制,我们强烈推荐将其放在 /etc/mihomo/ 目录下。

sudo mkdir -p /etc/mihomo

大部分代理服务提供商会提供一份完整的 config.yaml 订阅文件。你可以使用 wget 或 curl 命令直接将订阅链接的文件下载到刚才创建的目录中。

在选择服务商时,网络的稳定性尤为关键。对于经常需要访问外网接口或拉取依赖的服务器环境来说,优质的网络能够大幅节省等待时间。例如 SOGO云提供月付IEPL专线,可以有效提升命令行操作时的网络体验。你可以使用优惠码sogo10000获取相关服务。

运行如下命令下载配置文件:

sudo curl -o /etc/mihomo/config.yaml "YOUR_SUBSCRIPTION_URL"

如果你希望自己手动配置,也可以在这个目录下创建一个基于通用模板的 config.yaml。文件内通常包含端口定义、代理节点组(Proxy Groups)、代理服务器(Proxies)以及路由规则(Rules)。

除此之外,如果你使用了特定的 GeoIP 和 GeoSite 数据库来实现更为精细的国内外分流策略,也需要将相关的 .dat 或 .mmdb 数据库文件放置在 /etc/mihomo/ 目录下。mihomo 在初次启动时,如果缺少这些数据库文件,通常会自动尝试从互联网下载。如果因为网络原因下载失败,可以手动去对应的 GitHub 仓库下载并放入该文件夹。

启动测试:

mihomo -d /etc/mihomo/

如果看到命令行输出 INF Start initial configuration in progress 及端口监听的信息,且没有报出严重错误,说明 Linux Clash 的核心已经能够正常工作。可以通过 Ctrl + C 终止运行,接下来我们配置其开机自动后台运行。

第三步:systemd 开机自启守护进程

在生产环境或个人开发机上,让 Linux Clash 保持后台长久运行并在系统重启后自动恢复是非常重要的。使用 systemd 是现代 Linux 系统中最标准、最可靠的做法。

创建一个新的 systemd 服务配置文件:

sudo vim /etc/systemd/system/mihomo.service

在文件中写入以下内容,明确指派启动命令及工作目录:

[Unit]
Description=mihomo Daemon, Another Clash Kernel
After=network.target network-online.target nss-lookup.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo/
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

这里的 ExecStart 指定了程序的绝对路径以及配置文件所在的目录。Restart=on-failure 能够确保在程序异常崩溃时自动拉起。

保存并退出后,重载 systemd 的服务配置使之生效:

sudo systemctl daemon-reload

然后,你可以将该服务设置为开机自启并立刻启动它:

sudo systemctl enable --now mihomo.service

通过如下命令查看程序的当前运行状态,确保它处于 active (running) 的正常状态:

sudo systemctl status mihomo.service

有了守护进程的加持,你可以放心地随时使用它,而不必担心控制台终端被长期挂起占用。

第四步:终端与系统代理设置

即便内核正在后台顺利运行,终端本身默认并不会让命令自动走代理。要使诸如 curl、git、wget 或包管理器(如 apt、yum)通过 Linux Clash 访问网络,你必须在会话中声明环境变量。

大部分配置的默认混合端口(mixed-port)或 HTTP 端口为 7890,SOCKS5 端口为 7891。在终端中直接输入以下命令:

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"

这会在当前的 shell 会话中临时激活代理。你可以使用 curl -I https://google.com 命令验证连通性。如果返回状态码为 200,则意味着终端代理已经生效。

如果你希望在每次登录时代理都默认生效,可以将上述 export 语句追加到用户的 ~/.bashrc 或 ~/.zshrc 文件末尾。由于长期保持全局代理状态有时会影响本地请求或内网穿透,一种更推荐的做法是设置快捷别名。在配置文件中添加:

alias proxy="export http_proxy=http://127.0.0.1:7890; export https_proxy=http://127.0.0.1:7890;"
alias unproxy="unset http_proxy https_proxy"

重新加载配置文件后(如执行 source ~/.bashrc),你只需在终端输入 proxy 即可开启代理,输入 unproxy 即可关闭代理,非常灵活可控。如果您平时也在使用苹果电脑,不妨参考Mac终端走代理教程了解类似在 macOS 上的终端环境变量配置方法,两者在命令层面基本一致。

当然,稳定的代理体验不仅取决于本地的配置,所使用的节点质量同样重要。如果你的旧节点频繁断流,可以通过查阅机场推荐对比各大服务商。合适的专线节点能帮助大幅减少命令行下网络超时的烦恼。付费应用,价格以 App Store / 官网为准。

进阶:配置文件的本地路由与策略组

在掌握了基本操作后,你可能会对 Linux Clash 的路由分流产生兴趣。mihomo 内核的核心能力在于通过 yaml 语法定义的 rules 列表,将不同的流量引导至不同的代理策略组(Proxy Groups)。

策略组的类型分为很多种,比如:

  • select:允许用户手动选择使用的节点。
  • url-test:定时对策略组内的所有节点进行 HTTP 请求测速,并自动切换到延迟最低的节点。
  • fallback:按照列表顺序,当靠前的节点不可用时,自动回退到后置节点。
  • load-balance:将流量通过特定算法负载均衡到多个节点上。

对于 Linux 服务器而言,我们通常希望网络是尽可能的自动化与稳定。因此,在配置你的 config.yaml 时,可以重点利用 url-test 策略组。让 mihomo 自己去判断哪个节点最快,并在节点失效时无缝切换。

在路由规则上,则可以使用 DOMAIN-SUFFIX、IP-CIDR 甚至 GEOIP 来精细定义。例如:

rules:
  - DOMAIN-SUFFIX,google.com,Proxy
  - GEOIP,CN,DIRECT
  - MATCH,Proxy

这样的配置能确保国内流量直连,而访问 Google 等站点时走代理通道,既节省了流量,又兼顾了速度。

Web 面板配置(可选步骤)

虽然在纯命令行下操作已经完全可以满足服务器绝大部分的使用需求,但有时我们需要一个可视化的界面来切换代理组或者查看实时的网络连接详情。得益于内核提供的强大 RESTful API 控制接口,我们可以很方便地使用第三方的 Web 仪表盘。

在 /etc/mihomo/config.yaml 配置文件中,确保 external-controller(外部控制端口)和 secret(访问密钥)已被正确设置:

external-controller: 0.0.0.0:9090
secret: "your_strong_password"

这允许你的机器在 9090 端口提供控制 API 服务。若要启用 UI,最简单的方法是使用在线版本的控制台,如 Yacd 面板。在浏览器中访问它们的公网地址,然后在设置中填入你 Linux 服务器的 IP 地址、端口(9090)以及刚才配置的 secret 密钥,就可以建立连接了。

如果你希望将 Web 面板的静态文件直接托管在本地服务器上,也可以在配置文件中指定 external-ui 目录。下载预编译的面板前端静态文件到该目录后,内核就会自动启动一个简单的 HTTP 服务器,供你在本地浏览器中直接输入服务器 IP 及对应端口进行访问并实时查看数据。

常见问题排查与维护

在长期的使用过程中,你可能会遇到一些各种各样的小问题,这里列举几条常见的排查思路:

  1. 日志查看:当代理失效或进程崩溃时,第一时间通过 systemd 查看日志是最有效的。使用 journalctl -u mihomo.service -f 命令可以实时滚动查看内核吐出的日志信息,根据 ERROR 级别的提示去修正配置文件。
  2. 配置文件格式检查:YAML 格式对缩进非常严格。如果你在编辑订阅文件时误删了空格,会导致内核无法正常解析启动。此时手动使用 mihomo -d /etc/mihomo/ -t 命令,能够以测试模式运行以检验配置文件的正确性,而不会真正启动服务。
  3. 端口冲突:如果 7890 端口已经被服务器上的其他程序占用,mihomo 将无法监听。可以在配置文件中将 mixed-port 修改为诸如 17890 等未被占用的端口。同时记得在终端配置中做同步的修改。

结语

通过以上的操作,你已经完整且深入地掌握了如何在无头服务器或桌面系统上部署 Linux Clash 环境。从基础的内核下载到守护进程配置,再到日常使用的环境变量调整及路由策略分析,mihomo 的轻量和强大展露无遗。希望这份指南能够帮助你在日常工作中提升效率,让网络开发体验更加顺畅。

常见问题

如何在没有图形界面的 Linux 服务器上运行 Linux Clash?

可以通过下载 mihomo 二进制文件并配合 config.yaml 配置文件在命令行运行。建议配置 systemd 服务实现开机自启和后台运行。

Linux Clash 终端代理不生效怎么办?

这通常是因为没有正确设置环境变量。需要在执行命令前添加 http_proxy 等环境变量,或将其写入 shell 配置文件中设置快捷别名。

梯子查编辑部

梯子查综合官网资料与公开信息评测机场,教程步骤以各软件官方说明为准。发现过时内容请邮件kelvinchong6880@gmail.com 告诉我们。