在服务器、云主机或日常开发机上,大量用户更习惯通过纯命令行管理网络与代理:没有图形界面、也不依赖桌面环境的「系统代理」开关。此时,单纯设置 http_proxy 环境变量往往无法覆盖所有程序;要让容器、编译工具链、任意二进制甚至系统级解析都走统一策略,TUN 透明代理是最稳妥的方案之一。本文以常见的 Ubuntu / Debian 系发行版为例,说明如何安装基于 Mihomo(Clash Meta) 内核的无界面运行方式、打开 TUN 接管流量,并用 systemd 实现开机自启与崩溃自动拉起。若你希望先建立对 Meta 系配置与 DNS 的整体认识,可先阅读站内的 Clash Meta 2026 最全配置指南,再回到本文动手部署。
一、思路概览:为什么选命令行 + TUN + systemd?
Linux 上的「Clash」在 2026 年通常指兼容 Clash 配置格式的内核,其中 Mihomo 维护活跃、协议与规则特性齐全,适合作为无 GUI 场景下的主程序。仅开启 HTTP/SOCKS 入站端口时,很多应用不会自动使用代理;而 TUN 模式会在系统里创建虚拟网卡并由内核按路由表把流量交给 Mihomo,从而实现接近「全局接管」的效果(仍受规则与策略组约束,建议保持规则模式而非盲目全局)。
systemd 则是大多数发行版默认的服务管理器:把 Mihomo 注册为 systemd 服务后,可获得开机启动、失败重试、统一日志(journalctl)与权限控制。与桌面端一键客户端相比,这套组合更适合远程服务器、WSL2、树莓派以及习惯 Infrastructure as Code 的开发者。若你更倾向带界面的跨平台客户端,也可对照 2026 Clash 客户端横评 选型后再在图形环境中导入同一套订阅逻辑。
二、环境与权限:内核模块、用户与能力(Capabilities)
在开始之前,请确认系统已启用 tun 相关能力。绝大多数现代内核自带 TUN 支持,可通过加载模块确认(若已内置则可能无输出):
sudo modprobe tun
lsmod | grep tun || true
建议使用专用低权限用户(如 clash)运行 Mihomo,而不是长期以 root 全权限启动。要让非 root 用户创建 TUN 并改路由,常见做法是在 systemd 单元里授予 CAP_NET_ADMIN 等能力,或使用发行版提供的 setcap(具体以你下载的二进制发布说明为准)。若仅在个人单用户机器上临时测试,也可以先以当前用户前台运行,确认配置无误后再收紧权限。
7890)绑定在 127.0.0.1,避免向公网暴露 SOCKS/HTTP 代理端口;云厂商安全组也应默认拒绝无关入站。
三、命令行安装:获取 Mihomo 二进制与目录布局
以下步骤以「手动部署」为例,路径可按习惯调整。常见布局是将可执行文件放在 /opt/clash/,配置放在 /etc/clash/,日志放在 /var/log/clash/(需相应目录权限)。
- 从上游 Mihomo 发布页获取与你 CPU 架构匹配的压缩包(如
linux-amd64、linux-arm64),解压得到可执行文件(名称可能是mihomo)。 - 将二进制复制到
/opt/clash/mihomo并赋予执行权限:sudo chmod +x /opt/clash/mihomo。 - 创建配置目录:
sudo mkdir -p /etc/clash,将你的config.yaml(或从订阅转换得到的配置)放入其中。订阅地址、策略组等写法与桌面客户端共用同一套 Clash / Meta 语法,细节可参考前述 Meta 指南中的 DNS 与规则章节。
前台试跑可快速验证配置文件是否有效(路径按实际修改):
sudo -u clash /opt/clash/mihomo -d /etc/clash
若看到监听端口已建立、日志无致命报错,再继续配置 TUN 与 systemd。需要图形化安装包或一站式客户端的用户,请优先通过本站 下载页 获取对应平台安装指引;本文聚焦无界面环境下的内核部署。
四、配置 TUN:透明接管与 DNS 协同
在 config.yaml 中开启 TUN 时,请同时关注DNS 与路由,否则容易出现「能 ping 不能浏览」或解析异常。Meta 系内核通常支持如下结构(示例需按版本与实际接口名微调):
tun:
enable: true
stack: system
auto-route: true
auto-detect-interface: true
dns:
enable: true
listen: 0.0.0.0:1053
enhanced-mode: fake-ip
stack 可选 system 与 gvisor 等:在无特殊限制时,system 往往性能更好;若遇到兼容性问题可尝试切换。auto-route 用于自动下发路由,使流量进入 TUN;若与现有 VPN 或容器网络冲突,需要检查是否出现路由环路或重复默认路由。
4.1 与本地服务的共存
部分机器上已有 docker0、公司 VPN 或 systemd-resolved 占用 DNS 监听端口。此时应修改 Mihomo 的 DNS 监听地址与端口,或在 systemd-resolved 中配置转发,避免端口冲突。修改后务必用 journalctl -u clash.service -f(服务名以你下文定义为准)观察是否仍有报错。
auto-route。
五、systemd 自启动:单元文件与开机策略
创建专用用户(若尚未创建):
sudo useradd -r -s /usr/sbin/nologin clash
将配置目录授权给该用户:sudo chown -R clash:clash /etc/clash(日志目录同理)。然后新建单元文件 /etc/systemd/system/clash.service,内容可参考:
[Unit]
Description=Mihomo Clash-compatible proxy
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=clash
Group=clash
ExecStart=/opt/clash/mihomo -d /etc/clash
Restart=on-failure
RestartSec=5
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
若你的发行版或安全策略不支持 AmbientCapabilities,可改用上游文档推荐的 setcap 方案或临时以 root 运行(不推荐长期使用)。加载并启用服务:
sudo systemctl daemon-reload
sudo systemctl enable --now clash.service
sudo systemctl status clash.service
此后每次重启系统,Mihomo 都会随 multi-user 目标启动,实现开机自启。更新二进制后记得重启服务:sudo systemctl restart clash.service。
六、验证流量与常见问题
服务正常后,可在本机用 curl 测试出口(示例端口按你的 mixed-port 或单独 HTTP 端口修改):
curl -x http://127.0.0.1:7890 -I https://www.google.com
在已启用 TUN 且规则正确时,即使不显式加 -x,符合规则的请求也应走代理链路。若国内站点变慢,首先确认运行模式为规则而非全局,并检查 GEOIP / RULE-SET 是否最新;若仅 DNS 异常,重点排查 fake-ip 与本地 systemd-resolved 的交互。
权限被拒绝(Operation not permitted):多为创建 TUN 或改路由所需能力不足,请核对 systemd 的 CapabilityBoundingSet、用户归属与 SELinux/AppArmor 策略。升级内核后失效:偶发需重新加载模块或更新 Mihomo 版本以适配新内核接口。更多规则与 DNS 的深层排错,仍可回到 Meta 配置指南 对照逐项检查。
七、结语
在 Linux 上以命令行部署 Clash 系内核,本质是把可编程的网络策略交给 Mihomo 与系统路由协同完成:TUN 解决「谁没走代理」的问题,systemd 解决「如何长期可靠运行」的问题。相比依赖桌面环境的手动开关,这套栈更适合开发与运维场景,也便于用脚本固化配置、版本与回滚流程。相比其他仅提供端口转发的工具,Clash 生态在规则、订阅与 Meta 扩展上的组合更利于长期维护,体验上往往更省心。
如果你也需要在桌面或移动设备上保持一致的配置体验,不妨从本站获取带图形界面的客户端与最新分流规则资源,减少手工合并配置的重复劳动。