Linux 上跑 Clash,先搞懂这三个问题再动手
Linux 上的 Clash 配置和 Windows、Mac 有一个根本性的差异:没有图形界面可以点。你打开的是一台服务器或者一个终端窗口,所有操作都要通过命令行完成。这意味着两件事——安装可以很快,但排查问题需要你对系统的网络层有更清晰的认知。
这篇文章不按“下载、解压、运行”的格式走。我们把 Linux 上跑 Clash 最容易卡住的三个问题拆开来讲:命令行工具不走代理、进程关终端就死、TUN 模式权限不够。解决了这三个,剩下的就是常规操作。
问题一:浏览器通了,但终端里的 curl、git、pip 还是 timeout
很多人装好 Clash、选好节点之后,发现浏览器能正常打开海外网站,但一回到终端执行 git clone 或者 curl,进度条纹丝不动,最后还是 timeout。这不是 Clash 没工作,而是命令行工具不读取系统代理设置。
Windows 和 macOS 上,系统代理是一个全局设置,大部分应用会遵循。但 Linux 的终端环境不同,每个进程的代理行为取决于它自己的环境变量。Clash 默认在本地开启了一个混合端口(通常是 7890),但不会自动告诉终端里的程序去走这个端口。
解决方法是在当前 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
这三条命令只需要执行一次,当前终端窗口里的所有命令就会走代理。但要注意,这只是临时生效的——关闭终端窗口或者新开一个窗口,设置就没了。
如果你希望每次打开终端都自动生效,可以把上面的命令写入 ~/.bashrc(Bash)或 ~/.zshrc(Zsh)。但这样会带来一个新问题:所有终端流量都会走代理,包括访问国内服务器的时候,速度反而变慢。更聪明的做法是设置一个别名,需要的时候手动开启:
alias proxyon='export http_proxy=http://127.0.0.1:7890 https_proxy=http://127.0.0.1:7890'
alias proxyoff='unset http_proxy https_proxy'
这样平时终端保持直连状态,需要下载 GitHub 资源或拉取 Docker 镜像时,执行 proxyon 开启代理,用完 proxyoff 关闭即可。
如果你对代理端口的配置不熟悉,可以在 Clash 的 Web 控制台里查看当前混合端口的具体数值。大多数配置下是 7890,但如果你同时运行了多个代理客户端,端口可能被自动分配到了其他数字。隐速VPN 在常见问题页面里整理了常见客户端的默认端口对照表,可以参考。
问题二:终端一关,Clash 就停了
在 Linux 上手动启动 Clash 的方式通常是 ./mihomo -d ./config,程序会占用当前终端窗口。你一旦关闭这个窗口或者断开 SSH 连接,Clash 进程就会被系统回收,代理随即失效。对于需要 7×24 小时运行代理的服务器场景,这是不可接受的。
正确的做法是把 Clash 注册成 systemd 服务。systemd 是大多数主流 Linux 发行版(Ubuntu、Debian、CentOS、Fedora、Arch)的初始化系统,它负责管理所有后台进程的生命周期。把 Clash 交给 systemd 之后,进程会在后台稳定运行,崩溃后自动拉起,开机时自动启动,日志统一由 journalctl 管理[reference:0]。
创建一个 service 文件,路径通常在 /etc/systemd/system/mihomo.service:
[Unit]
Description=Mihomo Proxy Daemon
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=clash
Group=clash
WorkingDirectory=/etc/mihomo
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
RestartSec=5s
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
几个关键参数需要说明。User 和 Group 建议使用一个专用的系统用户(比如 clash),而不是直接跑在 root 下。代理内核本身不需要 root 权限,专用的低权限账户能减少潜在的安全风险。你需要先把配置目录的所有权交给这个用户:chown -R clash:clash /etc/mihomo[reference:1]。
Restart=on-failure 表示进程异常退出时自动重启。如果你希望无论什么原因退出都重启,可以改成 Restart=always,但配置错误时可能导致无限快速重启,此时应该先看日志修复配置再启用[reference:2]。
After=network-online.target 确保 Clash 在系统网络就绪之后才启动,避免因为 DNS 尚未可用导致的启动失败[reference:3]。
保存后执行以下命令启用服务:
sudo systemctl daemon-reload
sudo systemctl enable --now mihomo.service
enable 负责开机自启,--now 表示立即启动。之后可以用 systemctl status mihomo 查看运行状态,用 journalctl -u mihomo -f 实时跟踪日志。
如果你不想手动写 service 文件,社区有一些一键安装脚本(如 clash-for-linux)会自动完成内核下载、端口检测和 systemd 注册。安装后通过 clash on 和 clash off 开关代理,用 clash select 交互式切换节点,适合不熟悉 systemd 的新手[reference:4]。但理解了上面的 service 配置逻辑之后,手动管理会给你更多的控制权。
问题三:TUN 模式打不开,或者开了就断网
TUN 模式在 Linux 上比 Windows 和 macOS 更值得关注,因为 Linux 的 TUN 功能更完整,支持 auto-redir(自动管理 nftable 重定向),这在其他平台上是不具备的[reference:5]。但这也意味着 TUN 模式在 Linux 上涉及的操作层级更深,权限要求更高。
Clash 的 TUN 模式需要在系统网络层创建虚拟网卡并修改路由表,因此必须以 root 权限运行[reference:6]。这和你之前用普通用户跑 systemd 服务的方案是冲突的。解决方法是单独为 TUN 模式创建一个以 root 运行的 service,或者在已有的 service 中把 User=clash 去掉,让 Clash 以 root 身份启动。
配置文件中需要显式开启 TUN 相关选项:
tun:
enable: true
stack: system
auto-route: true
auto-redir: true
auto-detect-interface: true
stack: system 表示使用系统协议栈,性能优于 gVisor,是 Linux 上的推荐选项[reference:7]。auto-route: true 让 Clash 自动管理 ip route 和 ip rules,auto-redir: true 让它自动管理 nftable 的 REDIRECT 规则——这个选项仅 Linux 可用,是 Linux 版 TUN 模式独有的优势[reference:8]。
如果你开启了 TUN 但系统直接断网,按以下顺序排查:确认 Clash 进程是否以 root 身份运行(ps aux | grep mihomo);检查是否有其他 TUN 设备存在(ip link show type tun),多个 TUN 设备可能导致路由冲突;如果之前开启过系统代理环境变量,执行 unset http_proxy https_proxy 清除,环境变量和 TUN 同时生效时可能产生路由回环。
对于大多数服务器场景,TUN 模式并不是必需的。如果你只是需要让终端工具和浏览器走代理,环境变量加上系统代理已经足够。TUN 模式更适合那些有大量应用不遵循代理设置的复杂桌面环境,或者需要透明代理整个局域网流量的网关场景。
把这三个问题解决后,日常使用就这几件事
订阅更新方面,如果你用的是带 Web 控制台的一键脚本方案,直接在浏览器里访问 http://127.0.0.1:9090/ui 就可以管理订阅、切换节点、查看连接状态。如果喜欢纯命令行操作,clash update 更新订阅,clash use 切换订阅源,clash select 选择节点[reference:9]。自动更新可以通过 crontab 设置定时任务,每天凌晨拉取一次最新配置[reference:10]。
路由模式方面,日常使用rule模式(规则分流),国内直连海外走代理。需要测试某个节点连通性时临时切到 global,确认后切回。clash mode rule 和 clash mode global 即可切换[reference:11]。
如果你还没有隐速VPN账户,可以先去套餐页面看看,从轻量套餐或基础套餐起步,Clash 订阅链接我们会在用户中心提供。如果你同时对桌面端的配置逻辑感兴趣,可以参考 Clash Verge Rev 配置手记,虽然界面不同,但订阅格式和规则逻辑是同一套体系。