Linux 下使用 Clash 作代理并配置开机启动

下载安装

点击下载 Linux 版本的 Clash,下载完成后解压缩。

unzip clash-linux.zip
sudo mv clash-linux /usr/local/bin/clash
sudo chmod +x /usr/local/bin/clash

初步使用

下载配置文件,配置文件一般由订阅商(机场)提供,是一个 yaml 文件,编写了代理服务器的信息,以及访问规则等。这是最关键的一步。

clash-linux-amd64-v1.10.0 -f 从订阅商那获取的配置文件.ymal -d .

可以尝试在 Git clone 时使用代理,如果可以正常下载,说明代理配置成功。

git clone https://github.com/twbs/bootstrap.git --config "http.proxy=127.0.0.1:7890"  
# 即可正常下载

开机启动

cd ~
sudo cp /usr/local/bin/clash /etc/
sudo vim /etc/systemd/system/clash.service

添加如下内容,并保存:

[Unit]
Description=Clash Daemon

[Service]
ExecStart=/usr/local/bin/clash -f /etc/clash/订阅的配置文件.yaml -d /etc/clash/
Restart=on-failure

[Install]
WantedBy=multi-user.target

启用 clash 服务

sudo systemctl enable clash.service

启动 clash 服务

sudo systemctl start clash.service

此外也可以停止或者禁用 clash 服务

sudo systemctl stop clash.service
sudo systemctl disable clash.service

查看运行状态:

sudo systemctl status clash

查看 clash 服务日志

journalctl -e -u clash.service

配置定期更新

crontab -e

添加如下内容:

29 6    * * *   root    pgrep clash | xargs kill -s 9 
30 6    * * *   root    cp /etc/clash/订阅的配置文件.yaml /etc/clash/backup.yaml 
31 6    * * *   root    curl https://订阅链接.yaml > /etc/clash/订阅的配置文件.yaml
32 6    * * *   root    sudo systemctl start clash.service

重启 cron 服务

sudo systemctl restart cron.service

使用 Dashboard

编辑/etc/clash/glados.yaml,修改以下配置,默认配置为127.0.0.1:9090。如果你的9090端口没有被占用,将其修改为0.0.0.0:9090即可,因为我的 NAS9090端口被占用,所以修改成了0.0.0.0:19090

external-controller: 0.0.0.0:19090

这样就可以在浏览器通过Nas IP:19090/ui访问 Dashboard,比如192.168.1.9:19090/ui

更方便的方式:使用 Docker 部署

version: "3.7"

services:
  clash:
    image: dreamacro/clash-premium
    container_name: clash
    hostname: clash
    restart: unless-stopped
    ports:
      - 7890:7890
      - 7891:7891
      - 9090:9090
    volumes:
      - /root/sharefolder/appdata/clash:/root/.config/clash # 修改为你的配置文件目录
    environment:
      - TZ=Asia/Shanghai

  clash-dashboard:
    image: haishanh/yacd:master
    container_name: clash-dashboard
    ports:
      - "7880:80"
    restart: always
    environment:
      - TZ=Asia/Shanghai
    depends_on:
      - clash

这样就可以在浏览器通过Nas IP:7880访问 clash-dashboard,比如192.168.1.9:7880。点击配置,大概率显示无法连接到后端。修改后端地址位http://192.168.1.9:9090

定时更新:

crontab -e 
# 添加以下的内容
# 每隔 8 小时备份配置文件
0 */8 * * * cp /root/sharefolder/appdata/clash/config.yaml /root/sharedfolder/appdata/clash/config.yaml.bak
# 每隔 8 小时延迟 5 分钟支更新配置文件
5 */8 * * * curl https://xxxxxxx > /root/sharedfolder/appdata/clash/config.yaml
# 每隔 8 小时延迟 6 分钟修改配置文件 allow-lan: false 修改为true
6 */8 * * * sed -i 's/allow-lan: false/allow-lan: true/' /root/sharedfolder/appdata/clash/config.yaml
# 每隔 8 小时延迟 7 分钟修改配置文件 external-controller:
7 */8 * * * sed -i 's/external-controller: 127.0.0.1:9090/external-controller: 0.0.0.0:9090/' /root/sharedfolder/appdata/clash/config.yaml 
# 每隔 8 小时延迟 8 分钟修改配置文件 external-ui: dashboard 注释掉,即不使用内置的dashboard,有的机场提供的配置文件没有这个配置,就不需要添加这行
8 */8 * * * sed -i 's/external-ui: dashboard/#external-ui: dashboard/' /root/sharefolder/appdata/clash/config.yaml
# 每隔 8 小时延迟 9 分钟重启 clash
9 */8 * * * docker restart clash
10 */8 * * * docker restart clash-dashboard

参考

ghostxu97/clash-for-linux: Linux 环境安装配置 Clash 工具,以实现代理上网效果。包含下载、安装、配置、运行、测试以及开机自启动、定期自动更新订阅功能的操作文档,希望对你有所帮助