场景
我有一台广东的Linux学生服务器,有一些东西需要连接到外网。中间磕磕绊绊总算是成功了,特此记录一下。方便自己也为了方便别人。
本人服务器为腾讯云CentOS 7.x,代理软件为Clash(需自己准备订阅地址)
选择Clash版本
https://github.com/Dreamacro/clash/releases
进入上面的地址,会出现很多版本号,选择最新的即可。
接着选择适合你服务器的Clash版本,错误的版本可能会导致无法运行。一般来说选择clash-linux-amd64
即可
接着右键选择复制链接
下载Clash
此处提供两种方式,以下方式任选其一即可
- 命令行下载
- 手动下载
命令行下载
登录进入Linux,在
/usr/local/
创建新的目录clash
用来存放我们的clash文件,命令为:[root@VM-0-14-centos ~]# mkdir /usr/local/clash
移动到此目录
[root@VM-0-14-centos ~]# cd /usr/local/clash [root@VM-0-14-centos clash]#
使用命令
wget
+ 刚才复制的地址[root@VM-0-14-centos clash]# wget https://github.com/Dreamacro/clash/releases/download/v1.13.0/clash-linux-amd64-v1.13.0.gz
等待下载完成
手动下载(适用于使用命令行下载速度慢的用户)
登录进入Linux,在
/usr/local/
创建新的目录clash
用来存放我们的clash文件,命令为:[root@VM-0-14-centos ~]# mkdir /usr/local/clash
移动到此目录
[root@VM-0-14-centos ~]# cd /usr/local/clash [root@VM-0-14-centos clash]#
在自己电脑浏览器进入刚才复制的网站,将文件下载下来后使用FTP程序上传到
/usr/local/clash/
目录运行Clash
下载完成了,接着解压,一定要进入clash目录操作
[root@VM-0-14-centos ~]# cd /usr/local/clash [root@VM-0-14-centos clash]#
小技巧:使用tab键可快速填充文件名
[root@VM-0-14-centos clash]# gunzip clash-linux-amd64-v1.13.0.gz
注意一下,可能你看这篇教程的时候下载的不是1.13.0版本的clash,所以请注意你自己的文件名字,文件名称错误是无法解压的,文件名字在你下载完成后,是会显示的
2023-02-16 19:39:52 (26.7 KB/s) - ‘clash-linux-amd64-v1.13.0.gz’ saved [3772162/3772162]
单引号标注的就是文件名,或者也可以使用命令ls
来查看当前目录下面有哪些文件。
接着给予解压出来的文件可执行的权限(774)
[root@VM-0-14-centos clash]# chmod +x clash-linux-amd64-v1.13.0
小技巧:白色代表其他文件,不可执行;绿色则是可执行的文件;此外还有:
蓝色表示目录;红色表示压缩文件或包文件;浅蓝色表示链接文件。
文件名有点长,改个名字吧,改成程序名字 + 版本号
[root@VM-0-14-centos clash]# mv clash-linux-amd64-v1.13.0 clash-v1.13.0
下面开始运行
[root@VM-0-14-centos clash]# ./clash-v1.13.0
第一行是运行clash,记得要在文件名前面加上./
才行
第二行是clash的提示,说“没有配置文件,已为您创建完成”,但是文件是空的,无法使用
第三行也是,说“没有找到MMDB文件,开始下载”,但是会下载失败
下面我们先开始解决这两个问题
解决config.yaml和MMDB问题
config.yaml问题
config.yaml为clash的代理规则和clash的一些其他设置。代理规则不需要我们自己编写,通过订阅地址直接下载即可
此处将订阅链接粘贴进双引号中间。注意不要删除双引号,不要删除空格
wget -O ~/.config/clash/config.yaml "订阅链接"
小技巧:
~
用来代表当前用户的名称,若是使用root登录的,则代表root。所以这个命令实际上就是
wget -O root/.config/clash/config.yaml "订阅链接"
将这个订阅链接下载到指定的文件
至此config.yaml搞定
MMDB问题
Country.mmdb为全球IP库,可以实现各个国家的IP信息解析和地理定位,没有这个文件clash是无法运行的。
但目前版本的clash有点问题,不会自动生成MMDB文件,所以需要使用命令行下载
直接在终端运行此代码即可
[root@VM-0-14-centos clash]# wget -O ~/.config/clash/Country.mmdb https://github.com/Dreamacro/maxmind-geoip/releases/latest/download/Country.mmdb
至此,MMDB下载完成
正式启动Clash
到此,clash就可以正常运行了
由于我的订阅地址有10条规则,所以会有10条Start initial compatible provider xxxx
Mixed(http+socks) proxy listening at: 127.0.0.1:7890
则代表已经开启了http(含https)和socks代理,只要服务器内有软件流量通过7890这个端口,流量都将进入clash从而被代理。(但有些不支持设置,后面会说如何使用全局代理)
RESTful API listening at: [::]:9090
代表clash已经开启了ui控制面板,是的,Linux的clash有可视化控制面板。
关闭clash:按下键盘上的
clash后台运行
如果按照上面的方法运行clash的话,一旦我们关闭了终端,那么clash也会一并关闭。所以我们需要设置一下后台运行clash
在/etc/systemd/system/
目录新建一个clash.service
文件,并且直接进入vim编辑器
[root@VM-0-14-centos clash]# vim /etc/systemd/system/clash.service
注意,这个就是编辑器,这个编辑器对小白很不友好。请不要乱按按键,请跟着步骤走
先按下键盘上的字母i
键,进入编辑模式
当左下角变为INSERT
则代表当前是编辑模式
键盘上下左右可以控制光标移动
将以下代码输入进编辑器
[Unit]
Description=Clash service
After=network.target
[Service]
Type=simple
User=root
ExecStart=这里写你的clash运行的绝对路径(本文中的路径是/usr/local/clash/clash-v1.13.0)
Restart=on-failure
RestartPreventExitStatus=23
[Install]
WantedBy=multi-user.target
输入完成后按下键盘ESC
键
左下角的INSERT
会消失,现在则进入了编辑器的底线命令模式
接着是直接输入:wq
代表保存并且退出,然后按下回车。
编辑器就会回到原来界面,可以使用cat命令来查看一下内容是否正确
确认内容无误后,就可以开始启动clash服务
[root@VM-0-14-centos clash]# systemctl start clash
然后可以查看一下是否正常
[root@VM-0-14-centos clash]# systemctl status clash
确保下面的 Active 为 active(running) 即正常。
systemctl常用命令
systemctl status clash
查看clash服务
systemctl start clash
启动clash服务
systemctl stop clash
停止clash服务
systemctl restart clash
重启clash服务
systemctl enable clash
设置开机自启clash服务
systemctl daemon-reload
如果修改了clash.service
文件,需要此命令来重载被修改的服务文件
测试代理是否正常
根据我们之前前台运行可得知,默认是监控了自己的7890端口
那么现在,使用curl
来向谷歌发送一个请求看能否正常返回数据
[root@VM-0-14-centos ~]# curl --proxy 127.0.0.1:7890 www.google.com
Google成功返回数据,代表7890端口代理正常,clash运行正常
使用全局代理
设置全局代理需要在/etc/profile
文件最后添加几行代码
进入/etc/profile
文件
[root@VM-0-14-centos ~]# vim /etc/profile
先按下键盘上的字母i
键,进入编辑模式
当左下角变为INSERT
则代表当前是编辑模式
键盘上下左右可以控制光标移动
将以下代码输入进编辑器
export http_proxy=127.0.0.1:7890
export https_proxy=127.0.0.1:7890
除了http和https之外,还可代理其他,可根据下图酌情添加(本人未尝试过)
输入完成后按下键盘ESC
键
左下角的INSERT
会消失,现在则进入了编辑器的底线命令模式
接着是直接输入:wq
代表保存并且退出,然后按下回车。
[root@VM-0-14-centos ~]# vim /etc/profile
[root@VM-0-14-centos ~]#
cat一下看是否保存
[root@VM-0-14-centos ~]# cat /etc/profile
已成功保存。
应用一下profile文件,重启一下clash服务
[root@VM-0-14-centos ~]# source /etc/profile
[root@VM-0-14-centos ~]# systemctl restart clash
直接curl测试google
[root@VM-0-14-centos ~]# curl www.google.com
成功返回,全局代理设置成功~
番外
clash的UI控制界面
使用ui控制界面需要设置控制界面的html等文件;设置好访问的IP和端口、设置好密钥、设置好html文件路径
下载UI控制界面文件
进入我们的config.yaml所在的文件夹,使用wget命令下载UI文件
[root@VM-0-14-centos ~]# cd ~/.config/clash
[root@VM-0-14-centos clash]# wget https://github.com/haishanh/yacd/releases/download/v0.3.7/yacd.tar.xz
使用tar命令解压出文件
[root@VM-0-14-centos clash]# tar xvJf yacd.tar.xz
解压完成可以看一下,根目录下多出了public文件夹,改个名字,改为ui
配置config.yaml文件
依然是使用vim打开clash的config.yaml配置文件
vim编辑器的使用请参见使用全局代理,此处不过多赘述
[root@VM-0-14-centos ~]# vim ~/.config/clash/config.yaml
确保你的配置文件有以下三个
external-controller: 0.0.0.0:9090 secret: "123qwe" external-ui: "ui"
external-controller
代表外部访问地址,此处意思为允许所有人从9090端口访问(当然需要开启9090端口)secret
访问密钥,不设置密钥的话任何人都可以访问,较为危险external-ui
ui文件的路径,由于此处config.yaml文件和ui文件夹在同一目录下,所以只需文件夹名称即可
填写完成后,:wq
保存
重启一下clash服务,命令为:
[root@VM-0-14-centos clash]# systemctl restart clash
重启完成,但此时还不能访问UI控制面板,因为端口还未打开
服务器商打开端口
以腾讯云举例,登录腾讯云控制台点击云服务器进入
左侧点击安全组,进入
新建一个安全组
全部默认,直接确定
选择新建的安全组,修改规则
入站规则中,添加一个规则
依照图示添加
最后我们再将此安全组的规则应用到服务器
选择运行clash的服务器,点击确定
应用完成后,再自己电脑浏览器打开一下网址:
http://你自己服务器ip:9090/ui
API Base URL
为http://你自己服务器ip:9090
Secret(optional)
为config.yaml中设置的secret
填写后即可登录
访问进来后,在Config里面的Language可以修改中文
在Config里面修改的东西不会保存,只会在本次运行起作用。Clash重启后即会恢复为config.yaml中设置的数据。如果需要修改一直有效,请直接在config.yaml中修改,然后重启即可。
在代理里面可以看得见不同规则所选择的代理服务器不同,可以根据需要修改