在 Linux 中使用 Clash
Clash 下载
在 Clash release 页面下载相应的版本,对于 Ubuntu 一般使用 clash-linux-amd64-vX.X.X.gz 版本:
1 | wget https://github.com/Dreamacro/clash/releases/download/v1.10.0/clash-linux-amd64-v1.10.0.gz |
下载配置文件:
1 | wget -O ~/.config/clash/config.yaml https/clash/29440/KgDjZFxxx |
如果直接 wget 速度较慢的话,可以本地下载完成后,使用 SFTP 上传到 Linux 服务器。
然后使用 gunzip
命令解压,并重命名为 clash
:
1 | gunzip clash-linux-amd64-v1.10.0.gz mv clash-linux-amd64-v1.10.0 clash |
为 clash 添加可执行权限:
1 | chmod u+x clash |
Clash 运行时需要 Country.mmdb
文件,当第一次启动 Clash 时(使用 ./clash
命令) 会自动下载(会下载至 /home/XXX/.config/clash
文件夹下)。自动下载可能会因网络原因较慢,可以访问该链接手动下载。
Country.mmdb
文件利用 GeoIP2 服务能识别互联网用户的地点位置,以供规则分流时使用。
配置文件
一般的网络服务提供了 Clash 订阅链接,可以直接下载链接指向的文件内容,保存到 config.yaml
中。或者使用订阅转换服务(如该链接。也可以自行搭建,可参考该文章),将其它订阅转换为 Clash 订阅。
这里推荐使用订阅转换服务,转换后的配置文件已添加更为强大的分流规则。就可以将 Clash 一直保持后台运行,自动分流,且会自动选择最优节点。
Clash 配置文件的完整参数介绍见官方文档。
如果使用订阅转换服务,对于转换后的订阅链接,可以使用以下命令来下载配置文件:
1 1 curl -o config.yaml 'longURL'对于
suo.yt
短链接,需要重定向,因此使用以下命令来下载配置文件:
1 1 curl -L -o config.yaml 'shortURL'
Clash as a daemon
将 Clash 转变为系统服务,从而使得 Clash 实现常驻后台运行、开机自启动等。
普通用户需要
sudo
权限。
配置 systemd 服务
Linux 系统使用 systemd 作为启动服务器管理机制,首先把 Clash 可执行文件拷贝到 /usr/local/bin
目录,相关配置拷贝到 /etc/clash
目录。
1 | sudo mkdir /etc/clash |
创建 systemd 服务配置文件 sudo vim /etc/systemd/system/clash.service
:
1 | [Unit] |
使用 systemctl
使用以下命令,让 Clash 开机自启动:
1 | 1 sudo systemctl enable clash |
然后开启 Clash:
1 | sudo systemctl start clash |
查看 Clash 日志:
1 | sudo systemctl status clash |
使用代理
利用 Export
命令使用代理
Clash 运行后,其在后台监听某一端口。Ubuntu 下使用代理,需要 export
命令。根据 config 配置文可以查看到件Clash 代理端口(订阅转换后,端口为7890),设置系统代理命令为:
执行以下命令即可临时设置系统代理:
1 | export https_proxy=http://127.0.0.1:7890 |
1 | 或者走socket5协议(ss,ssr)的话,代理端口是7891 |
方法二:
把代理服务器地址写入shell配置文件.bashrc或者.zshrc 直接在.bashrc或者.zshrc添加下面内容。
1 | export http_proxy="http://localhost:port" |
或者走socket5协议(ss,ssr)的话,代理端口是1080
1 | export http_proxy="socks5://127.0.0.1:1080" |
或者干脆直接设置ALL_PROXY
1 | export ALL_PROXY=socks5://127.0.0.1:1080 |
最后在执行如下命令应用设置
1 | source ~/.bashrc |
或者通过设置alias简写来简化操作,每次要用的时候输入setproxy,不用了就unsetproxy。
1 | alias proxy="export ALL_PROXY=socks5://127.0.0.1:7890" |
取消系统代理:
1 | 1 unset http_proxy https_proxy all_proxy |
一般下载数据集时,记得取消代理。
方法三:
改相应工具的配置,比如apt的配置
1 | sudo vim /etc/apt/apt.conf |
在文件末尾加入下面这行
1 | Acquire::http::Proxy "http://proxyAddress:port" |
重点来了!!如果说经常使用git对于其他方面都不是经常使用,可以直接配置git的命令。
使用ss/ssr来加快git的速度
直接输入这个命令就好了
1 | git config --global http.proxy 'socks5://127.0.0.1:1080' |
DashBoard 外部控制
外部控制端口为 9090,因此也可以访问该链接,输入 IP 地址(需本机可以访问的 IP)以及端口号,来进入 Clash Dashboard 进行节点的选择。也可以在服务器自行搭建 Clash Dashboard,请参见该项目。不过 Clash Dashboard 用处不大,使用订阅转换后的配置文件包含了自动选择的功能,Clash 会自动选择延迟最低的节点。
设置密码
export
命令其他用户执行后也可以使用该代理,可以更换端口、添加密码加以限制。修改 /etc/clash/config.yaml
文件部分配置:
1 | mixed-port: 12345 |
然后需要重启 Clash,命令为:
1 | 1 sudo systemctl restart clash |
根据上述配置文件,export
命令变为
1 | export https_proxy=http://用户名1:密码1@127.0.0.1:12050 http_proxy=http://用户名1:密码1@127.0.0.1:12050 all_proxy=socks5://用户名1:密码1@127.0.0.1:12050 |
TUN 模式
新版的 Clash Premium 内核支持 TUN 模式,且目前已支持 Linux 系统下的 auto-route
和 auto-detect-interface
,无需手动设置转发表,可以方便快捷的实现 透明网关(旁路由) 的功能。
首先需要下载 Clash Premium 版本,替换上面的 clash
文件。接着需要设置 Linux 系统,开启转发功能。编辑文件 /etc/sysctl.conf
,添加以下内容:
1 | 1 net.ipv4.ip_forward=1 |
保存退出后,执行以下命令使修改生效:
1 | 1 sudo sysctl -p |
然后接着需要关闭系统的 DNS 服务,使用以下命令:
1 | 1 2 sudo systemctl stop systemd-resolved sudo systemctl disable systemd-resolved |
关于代理环境下 DNS 解析行为的深入探讨,可以参见浅谈在代理环境中的 DNS 解析行为以及我有特别的 DNS 配置和使用技巧。
接着需要设置 Clash 的配置文件,添加以下内容:
1 | dns: |
最后重启 Clash 服务即可,这样流量就会通过 TUN 接口转发,同时利用强大的分流规则,实现按需代理。也可以设置局域网内的网关地址和 DNS 服务器地址,实现透明网关。