注意:这篇文章不是教你怎么在云服务器上搭梯子本地翻墙,而是教你在没有 GUI 界面的 Linux 系统上使用梯子!

之前遇到过一些 SB 需求,解决的唯一办法就是在 Linux 系统的云服务器用 Shadowsocks/V2ray/Clash 挂代理科学上网(GFW 真的很讨厌啊QAQ)。毕竟是云服务器,带 GUI 的梯子就不太好搞了(当然你可以参考我之前的文章用 XServer 运行有 GUI 的科学上网软件)。这篇文章讲的就是在 Linux 上以命令行的方式科学上网

下面的教程将分别介绍 Shadowsocks/V2RayA/V2Ray/Clash 在 Ubuntu/CentOS 上的解决方案

2024.3.26 最近经常有朋友发邮件来问,于是决定给文章整体翻修一下,还有问题的话欢迎邮件或者 Telegram 联系我(笑)

2024.4.8 有朋友私信我推荐了 V2RayA 这个客户端,相关教程已经更新,感谢 @QZPM3333汉 的鼎力支持!好人一生平安!

2024.12.3 结合大家的反馈更新一些细节和措辞


Shadowsocks

安装

安装很简单,你可以直接用 pip3 搞定

1
sudo pip3 install https://github.com/shadowsocks/shadowsocks/archive/master.zip -U

或者

1
sudo pip3 install shadowsocks

此外,如果你需要使用 Shadowsocks 新的加密方式的话,比如 Chacha20-Ietf-Poly1305,你还需要装下面这个东西

Ubuntu

1
sudo apt install libsodium-dev

CentOS

1
2
sudo yum -y install epel-release
sudo yum -y install libsodium

配置

新建配置文件夹和配置文件

1
2
sudo mkdir /etc/shadowsocks
sudo vi /etc/shadowsocks/shadowsocks.json

配置如下,具体内容自行修改(没有梯子请自行联系工信部申请)

1
2
3
4
5
6
7
8
9
10
11
{
"server": "your_server_url",
"server_port": 23333,
"local_address": "127.0.0.1",
"local_port": 1080,
"password": "your_server_password",
"timeout": 60,
"method": "chacha20-ietf-poly1305",
"workers": 1,
"fast_open": false
}

其中

1
2
3
4
5
6
7
8
9
server:科学上网代理提供商的 Shadowsocks 服务器地址
server_port:科学上网代理提供商的 Shadowsocks 服务器端口
local_address:本地 Sock5 代理地址
local_port:本地 Sock5 代理端口
password:科学上网代理提供商的 Shadowsocks 连接密码
timeout:超时等待时间(秒)
method:加密方式
workers:工作线程数
fast_open:TCP Fast Open,按需开启

配置完成,之后就可以通过 local_addresslocal_port 走 Sock5 代理了

启动脚本

创建启动脚本 /etc/systemd/system/shadowsocks.service

这里请确认你的 sslocal 的所在位置,自行修改脚本文件中的 /usr/local/bin/sslocal位置不对启动服务时会报 203 错误

1
2
3
4
5
6
7
8
9
[Unit]
Description=Shadowsocks

[Service]
TimeoutStartSec=0
ExecStart=/usr/local/bin/sslocal -c /etc/shadowsocks/shadowsocks.json

[Install]
WantedBy=multi-user.target

GO! GO! GO!

启动服务或者配置开机自启动

1
2
3
4
5
6
7
8
# 开机自启动
sudo systemctl enable shadowsocks.service
# 启动服务
sudo systemctl start shadowsocks.service
# 查看状态
sudo systemctl status shadowsocks.service
# 停止服务
sudo systemctl stop shadowsocks.service

测试一下,看看你的 ip 地址是否符合预期

1
curl --socks5 127.0.0.1:1080 https://httpbin.org/ip

到这里 Shadowsocks 部分就结束了,可以直接跳转后面的 Sock5 代理部分接着搞


V2RayA

感谢 @QZPM3333汉 的推荐!

V2RayA
一个易用而强大的,跨平台的 V2Ray 客户端
使用 Golang 和 Vue.js 编写,运行时没有任何外部依赖库,可跨平台运行,借助任意一款浏览器均可操作
对于无图形界面的操作系统,在安装 V2RayA 之后,借助另一台 PC 或移动设备即可完成对其的操作,这对于远程服务器、路由器是极其方便的

用这个客户端的好处是你只需要在服务器上运行它,然后打开它提供的 Web UI 就能完成配置工作了,图形化配置比直接命令行能方便不少

安装

选择你的英雄选择对应系统的链接进行安装吧:这里

配置

没什么好配置的,安装的过程中该搞定的它都帮你搞定了,注意确认一下服务是不是启动了

我唯一能想到的坑就是安全组配置问题:如果你使用的是云服务商的云服务器,记得去安全组里把 Web UI 使用的端口放通,不然你没法在服务器外访问 Web UI,这里的默认端口是 2017

GO! GO! GO!

〇神启动照着这个来吧:快速上手

使用你的服务器地址和 Web UI 端口在浏览器中配置并使用吧!

V2RayA 默认开放以下代理端口:

  • Sock5 20170
  • HTTP 20171
  • HTTP 带分流规则 20172

你可以根据自身需求选择相应的代理方式。至于怎么配置代理嘛,请仔细地继续阅读本文XD


V2Ray

安装

下面的脚本貌似废弃了,看看这个吧:这里

1
2
sudo su
bash <(curl -L -s https://install.direct/go.sh)

配置

很抱歉,V2Ray 的配置文件太复杂了,我不会写。。。

所以我把我 Windows 下用的 V2RayN 的配置文件 config.json 直接复制过来了XD

复制前记得把该配置的东西都配置好,可以顺带把 PAC 加上

记得去看一下你的 Sock5 代理的端口和地址,我这里是 127.0.0.1:10808

GO! GO! GO!

1
2
3
4
5
6
# 启动服务
sudo service v2ray start
# 查看状态
sudo service v2ray status
# 停止服务
sudo service v2ray stop

当然你也可以测试一下,替换 Sock5 代理的端口和地址就行

1
curl --socks5 127.0.0.1:10808 https://httpbin.org/ip

后续工作也是继续搞 Sock5 代理


Clash

现在好多人都开始用 Clash 了(我也是),这里概述一下,具体的还是建议阅读文档

然而前段时间相关作者都陆续删库跑路了,还挺令人猝不及防的

所以现在官方的文档和二进制文件都没了,至于第三方来源靠不靠谱有没有加魔法,那我就不好说了(出了问题别怪我(逃

安装

万物始于 Getting Started

当然上面这个链接寄了,搜了一下这个文档还不错:快速开始

至于它提供的二进制文件么。。。就看你相不相信它了XD

配置

很抱歉,这么多年过去了(翻修文章的时候还是不会,主要是懒),这种配置文件我还是不会写。。。

所以我把又我 Windows 下用的 Clash for Windows 的配置文件复制过来了hhhhhh

动手能力强的你可以结合文档自己 DIY 一下:参考配置

PS: 据我观察大多数 Clash 配置文件中的节点还是用的 Shadowsocks,所以其实可以从 Clash 配置文件中把相关的 Shadowsocks 配置复制出来直接用 Shadowsocks

GO! GO! GO!

接着看文档吧(确实

可以考虑以 systemd 服务或者 Docker 的方式运行

Clash 其实也集成了 HTTP 代理,如果你只是需要用 HTTP/HTTPS 协议科学上网的话,可以直接用环境变量设置系统代理,此处我的 HTTP 代理端口是 7890

1
2
3
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export no_proxy=127.0.0.1,localhost

注意确认一下端口配置是否正确


Sock5 代理

有了梯子,还需要本地代理工具去代理你的流量,简单来说就是将你的请求通过本地代理工具发送到本地的科学上网客户端,进而转发到科学上网代理提供商的服务器,最终实现对 GFW 的跨越

这里使用了 proxychains-ng 进行代理,走的是 Sock5 代理

安装

首先从 GitHub 搞到源码:这里

然后编译安装(这玩意只能编译安装,还好是 C 语言写的)

1
2
3
./configure
make -j
sudo make install

配置

新建配置文件夹和配置文件

1
2
mkdir ~/.proxychains
vi ~/.proxychains/proxychains.conf

配置如下,记得把最后一行替换成你自己的 Sock5

1
2
3
4
5
6
7
8
9
10
strict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
localnet 127.0.0.0/255.0.0.0
quiet_mode

[ProxyList]
socks5 127.0.0.1 1080

GO! GO! GO!

用法就很简单了,你可以用 proxychains4 去运行任何你想要的命令和程序,最简单的就是新开一个 bash 然后随便搞

1
proxychains4 bash

最后

感谢你看到这里!

我也不知道当年为啥要复读一遍开头作为文章的总结,于是乎我给原先这段话删了并且提供一个最简单的科学上网方法(大误):

带上你的电脑和服务器,打车去离你最近的国际机场,买一张机票去一个没有 GFW 的地方网上冲浪(不是)