在 Linux 服务器上安装 Clash,以及开机自动启动

无论是更新下载缓慢,还是从 Github clone 项目时失败,抑或是配置开发环境时久久不能成功,在 Linux 服务器上安装使用代理软件都是常见的需求。

在 Windows 中用户常使用 Clash for Windows,在 MacOS 上使用 ClashX,在 OpenWRT 上常见的是 OpenClash,借助其完善的规则分流机制,用户设置完成后无需花费太多心思去维护,可以节省大量时间和精力。

以上平台使用 UI 界面,但其实 Linux 终端也可以使用 Clash。为读者提供一条龙服务,本文将分几部分介绍 Clash for Linux 的安装、配置、自启动以及设置系统代理。

本文所需软件和文件已上传百度网盘备用,链接在文末。

一、安装 Clash

首先访问 Github 发布地址:Releases · Dreamacro/clash (github.com),下载对应 Linux 版本:

Github Clash for Linux

大多数时候下载 clash-linux-amd64-vxxxx.gz 即可。

# 创建一个用于存放 Clash 文件的目录
mkdir ~/Clash

# 下载文件到此处
wget https://github.com/Dreamacro/clash/releases/download/v1.10.0/clash-linux-amd64-v1.10.0.gz

如果服务器上直接下载很慢,可以在本地下载好文件,再通过 WinSCP 之类的工具传到服务器上。

# 解压文件到这个目录
gunzip clash-linux-amd64-v1.10.0.gz

# 为了方便,将解压出来的文件改名为 clash
mv clash-linux-amd64-v1.10.0 clash

# 添加执行权限
chmod +x clash

# 运行以初始化 Clash
./clash

二、配置 Clash

首次运行之后会在用户配置目录生成配置文件,例如耕读君测试时产生的目录为 /home/louis/.config/clash ,里面有 config.yamlCountry.mmdb 两个文件。

不过也有可能运行过程中会报错,因为 Country.mmdb 下载不下来:

Clash for Linux 报错

值得庆幸的是,已有网友共享 Country.mmdb 文件,耕读君也已上传百度网盘备用,可访问文末链接获取。

Country.mmdb 放入配置文件所在目录,接下来就要修改 config.yaml 文件。有些机场本身提供了 Clash 专用配置文件,可直接使用;有些则没有提供,需要自行转换后获取。将配置文件放到此目录,删除自动生成的 config.yaml,再把自己的配置文件重命名为 config.yaml

Clash for Linux 配置文件

接下来复制该目录下的 Country.mmdbconfig.yaml 两个文件到之前创建好的 ~/Clash 目录下,再次运行 Clash 程序:

./clash

正常情况下就会看到它已经成功启动了。但是,还需要设置系统代理才能让流量通过 Clash。大多情况下 config.yaml 中已经写好了规则,包括 HTTP/HTTPS 代理的端口,如果不确定的话可以打开 config.yaml 查看。

执行以下命令即可临时设置系统代理:

export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890

此时 尝试 PING 国外的网址应该就可以 PING 通了,还 可以通过 wget https://www.youtube.com 这样的命令来测试实际访问情况。

三、Clash 自启动及后台运行

手动运行 Clash 会发现它是在“前台”运行的,当我们退出命令,程序也就退出了。另外如果开机后总需要手动运行的话也让人觉得繁琐,最好的办法就是将 Clash 注册为服务,并设置为开机自启动。

将以下脚本保存为 /etc/systemd/system/clash.service

[Unit]
Description=Clash service
After=network.target

[Service]
Type=simple
User=louis(你的用户名)
ExecStart=/home/louis/Clash/clash(Clash 程序路径)
Restart=on-failure
RestartPreventExitStatus=23

[Install]
WantedBy=multi-user.target

使用以下命令启动服务,设置开机启动,以及检查服务状态(使用方法参考:用 systemctl 管理服务:查看状态、启动/停止服务、开启/取消开机自启动):

# 重载服务
sudo systemctl daemon-reload
# 开机启动
sudo systemctl enable clash
# 启动服务
sudo systemctl start clash
# 查看服务状态
sudo systemctl status clash

四、代理设置

Clash 已经开机自启动了,如果每次都要手动设置系统代理的话也很费时,因此建议将命令写入 Bash 配置文件中。

运行 vim ~/.bashrc ,在文件末尾添加:

export http_proxy=127.0.0.1:7890
export https_proxy=127.0.0.1:7890

保存后运行 source ~/.bashrc 使配置生效。之后可以重启服务器,然后运行 sudo systemctl status clash 检查 Clash 的服务状态,再访问需要代理的网站验证是否可用。

本文所需文件已整理上传百度网盘:

https://pan.baidu.com/s/1crZ8nKH2XWOJgji4i6vS6g?pwd=c3gm

5 评论

  1. 感谢!成功使用! 原来注册服务后,重启就可以了。 我还纠结为什么不行… 重启后自启动,一切正常 linux mint 21.1 版本。 2023年03月18日19:42:56

  2. 问一下 slackware (unraid)里面没有这个工具

    是在 rc.d 里面玩的。
    ——-
    做 自启动的话,可能还要写到 /boot/config/go 文件里面

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注