Arch折腾记 | clash安装
本篇不涉及机场/节点,也并不是科学上网教程。只是因为Arch官网上的clash教程实在太简洁,所以记录一下我捣鼓这玩意的过程。
Clash主程序安装
安装主程序非常简单,如官网所说,我们只需要安装官方源里的包就好了:
1 | $ sudo pacman -S clash |
然后手动下载一个叫Country.mmdb
的玩意,咱也不用了解这是什么个原理,但如果想出去得用到这玩意就是了。下好之后放到~/.config/clash
里(可能要新建文件夹)。
1 | $ mkdir -p ~/.config/clash |
然后可以把clash的配置文件xxx.yaml
放到上面的文件夹里面,名字建议使用config.yaml
,毕竟这样就可以少写一个参数了,启动:
1 | # 参数:-d,运行环境所在的文件夹,包括Country.mmdb、配置文件等 |
一切顺利的话可能会看到一些:
1 | INFO[0000] Start initial compatible provider XXXX |
它们是clash配置文件内的分组,没啥用,完事。
开始使用
上面说到咱成功启动了clash,但要让各种流量自动从clash的端口进出,我们需要打开LAN许可并设置端口。
在配置文件config.yaml
的开头(可能)有这些参数:
1 | port: 7890 # HTTP/HTTPS 端口 |
如上,假如我们允许局域网连接,那么其他软件就可以设置proxy为http://127.0.0.1:7890
,从而(其他协议如SOCK5同理,只需要写上对应参数就行)。
此外,我用了网页YACD可视化界面,登陆端口使用127.0.0.1:9090
(就是上面提到的外置管理器端口)。它支持LAN端口更改、节点选择、流量记录等功能,这里不详细说了。
自启动管理
到目前为止,我们的clash还是需要手动启动,但如果有高强度冲浪选手需要开机自启动咋办呢。这里介绍基于systemd
的自启动设置。
要使用systemd
来控制软件服务,需要写一个*.service
配置文件。正巧,如果是通过pacman
来安装clash的话,他其实已经在/usr/lib/systemd/user
写了一个简单的clash.service
文件,可以在PKGBUILD里面看到。
下面介绍的是基于当前用户的自启动,我把配置文件直接放在
~/.config/systemd/user
里面。但如果要控制其他用户,则应当放在/usr/lib/systemd/user
或者/usr/lib/systemd/system
内,步骤类似,这里不详细介绍。
咱们把他复制过来:
1 | $ mkdir -p ~/.config/systemd/user |
内容如下:
1 | [Unit] |
这里我们只需要关注ExecStart
参数,他相当于是systemd
启动clash的命令。对比上面我们自己写的命令后发现,他少了点东西:
-d
,运行环境所在的文件夹-f
,启动配置文件(但我用的是默认名所以可以不写这个)
据此,修改上述参数为:(注意这里不能用“~”代指用户目录,要写全路径)
1 | ExecStart=/usr/bin/clash -d /home/{username}/.config/clash |
把systemd
给重载一下,并尝试启动:
1 | $ systemctl daemon-reload --user |
使用systemctl status clash --user
查看一下服务启动情况,如果输出无异常那就成了。
现在可以打开自启服务:
1 | $ systemctl enable clash --user |
然后在当前用户目录~/.config/systemd/
内就会生成一个指向clash.service
的链接,从而为这个用户创建了自启动。(如果是系统层面的自启动,会创建在/etc/systemd/system
内)
完事。
订阅设置
此外,像我这种懒人,是通过机场订阅节点的,所以也需要一个工具来更新订阅(不然每次都得手动下载配置文件也挺麻烦的)。这里用了官网推荐的clashup,一个AUR包。
根据作者提供的Github介绍,我们需要创建~/.config/clash/clashup.json
并写入:
1 | { |
实际上很多参数和clash的配置文件config.yaml
是一样的,他的目的是覆盖下载后的文件内的对应配置,所以也算是一个端口管理工具。
现在利用clashup --update
命令即可更新配置文件,别忘了还要restart一下clash服务。
需要注意的是,clashup更新的文件只能是
config.yaml
(如果没有则会创建)。所以使用这玩意的时候,clash配置文件名并不能随便取。当然,更新后把文件重命名也不是不行。