作者: vangoleo
背景
互联网本是一个开放、自由、精彩的世界。可是由于某些原因,很多网站在中国大陆是不能访问的,比如Google,Facebook。出于工作或者生活需要,尤其是对于技术开发者,设计师,科学上网是必需的。
为什么需要科学上网?
- Google:珍惜生命,远离某度。而且Google还提供了许多优质的服务,比如Gmail、文档、论文搜索等。
- Youtube:有各种高质量的科技、开发类视频。
- 博客和论文:许多博客和论文都被墙了,比如Blogspot和Medium。
- 社交:Twitter和Facebook。
- 编程:许多语言的开发环境都需要翻墙,比如Golang和Rust。
科学上网的方式有多种,今天给大家介绍一下其中最稳定,使用最广泛的,使用Shadowsockets来科学上网。
现在这个社会生存还真困难,上个网也要被限制、监视、审查,我想说:『 世界那么大,我想出去看看 !』
<!-- more -->
准备条件
本教程会从零开始,一步一步教大家如何搭梯子来科学上网。完成本教程需要大家准备以下条件:
- 一台可以直接无限制访问互联网的电脑。即可以直接访问Google或Facebook的电脑。
- WEB浏览器。(本教程会使用Chrome浏览器)
- 熟悉基本的Linux操作。
Q: 什么样的电脑可以无限制访问互联网?
A: 在GFW管辖区域外的网络环境,即非中国大陆的电脑都是可以无限制访问互联网的。比如在阿里云香港region购买的ECS、搬瓦工美国区域购买的VPS等。事先申明!!!本文科学上网教程,不为盈利,只为学习使用。请大家遵守中国互联网法,做一个遵纪守法的好公民。如果对这块法律规定不是很熟悉的小伙伴可以移步中国工信部官网。
关于Shadowsockets
关于Shadowsockets是什么、它是怎么工作的,可以参考网上的一些图片,我觉得非常棒,将它们摘抄于此,分享给大家。
这三张图蛮有意思的,故事有一个简单而美好的开始,然后恶魔来袭。我们还看到了道高一尺魔高一丈,还有。。。(此处省略吐槽两千字)
可以看到 ShadowSocks工作原理中涉及到如下几种角色:
- PC:终端用户。
- SS Local:Shadowsockets本地客户端,运行在PC上。
- GFW:^#¥%&)orz
- SS Server:Shadowsockets服务端。可以无限制访问互联网。比如在搬瓦工美国区购买的一台VPS。
PC通过客户端以指定的密码、加密方式和端口连接SS服务器。成功连接到SS服务器后,客户端在用户的电脑上构建一个本地socks5代理。使用时将流量分到本地socks5代理,客户端将自动加密并转发流量到服务器,服务器以同样的加密方式将流量回传给客户端,以此实现代理上网。
Shadowsockets服务端
科学上网的第一步,也是最关键的一步,就是搭建Shadowsockets服务端。
安装Shadowsockets服务端
有多种方式可以安装Shadowsockets,最简单的是使用包管理器和Python来安装。比如在CentOS上可以使用如下命令:
yum install python-setuptools
easy_install pip
pip install shadowsocks
执行完上面的命令,Shadowsockets就安装好了。可以执行ssserver -h
命令确保Shadowsockets已正确安装。
创建Shadowsockets配置文件
Shadowsockets运行时需要一份配置文件。新建一个文件/etc/shadowsocks/config.json
,内容如下:
{
"server":"0.0.0.0",
"server_port":443,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"your_password",
"timeout":300,
"method":"aes-256-cfb",
"fast_open":false,
"workers": 1
}
说明:
- server:server监听地址,默认0.0.0.0
- server_port:server监听端口
- password:连接密码
- method:加密方法,推荐选择aes-256-cfb
如果无特殊要求,可以直接使用上图中的配置,除了将密码替换为你们自己的。
运行Shadowsockets
上面的步骤中,已安装好Shadowsockets并创建好了配置文件。现在可以启动Shadowsockets了。
使用如下命令来启动,停止和重启服务:
- 启动:
ssserver -c config.json -d start
- 停止:
ssserver -c config.json -d start
- 重启:
ssserver -c config.json -d start
为了方便操作Shadowsockets,建议在服务器上创建如下的3个Shell脚本,来启动、停止和重启服务:
- 使用
start-shadowsocket.sh
启动:
#!/bin/bash
ssserver -c /etc/shadowsocks/config.json -d start
echo 'shadowsocket started successfully with config file /etc/shadowsocks/config.json'
- 使用restart-shadowsocket.sh重启:
#!/bin/bash
sudo ssserver -c /etc/shadowsocks/config.json -d restart
echo 'shadowsocket stopped successfully with config file /etc/shadowsocks/config.json'
- 使用stop-shadowsocket.sh停止:
#!/bin/bash
sudo ssserver -c /etc/shadowsocks/config.json -d stop
echo 'shadowsocket stopped successfully with config file /etc/shadowsocks/config.json'
执行启动命令后,可以使用netstat
来确认Shadowsockets已正确运行:
[root@leiwei-server ~]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1066/sshd
tcp 0 0 0.0.0.0:8388 0.0.0.0:* LISTEN 11350/python
可以看到Shadowsockets已运行并监听本地的8388端口,即上面配置的server端口。
注意:
Shadowsockets服务端需要部署在没有GFW的地区哦。如果你部署在北京,是不能科学上网的哦。
同时尽量部署在连接速度快的地区。比如部署在香港是一个不错的选择。温馨提醒
可以在AWS,阿里云,Azure来购买服务器。如果是在阿里云购买,可以通过http://aliyun.nagekuai.com/查看各个region的延迟大小。优先选择延迟较小的region。
Shadowsockets客户端
安装Shadowsockets客户端
部署好了服务端后,接下来就需要在本地电脑上安装客户端。Shadowsockets对各个平台都提供了客户端,可以在https://github.com/shadowsocks下载,如下截图所示:
注意:
Mac用户请下载上图标注的客户端,地址为https://github.com/shadowsocks/ShadowsocksX-NG。
网上很多比较早的教程介绍的是https://github.com/shadowsocks/shadowsocks-iOS,这个是旧版本,已被https://github.com/shadowsocks/ShadowsocksX-NG代替了。
安装,配置Shadowsockets客户端
Shadowsockets的安装很简单,就是标准的DMG文件安装。安装完后,启动客户端,按照如下图所示进行配置:
说明:
- 本地监听地址:填写127.0.0.1。
- 本地Socks5监听端口:默认1086,无需修改。客户端会监听本地的该端口。
如果无特殊需求,直接使用上图所示的配置即可。
添加远程Shadowsockets服务器
Shadowsockets客户端的作用是将浏览器的访问代理到远程Shadowsockets服务器。接下来我们来为客户端添加服务器。
打开「服务器设置」>>「添加服务器」:
说明:
- 地址:Shadowsockets服务端地址。
- 加密方法:Shadowsockets服务端端口,对应配置文件中的server_port,本例中是443。
- 密码:Shadowsockets服务端密码,对应配置文件中的password。
到此,科学上网必须的步骤都已完成了,我们可以在浏览器中访问Google验证一下。
SwitchOmega
按照上面的步骤,我们已经可以在浏览器中科学上网了。但是遗留了一个问题:访问所有的网站都会走Shadowsockets代理,包括被墙的和正常的。
这会导致:
- 访问国内网站需要从代理绕一圈,速度反而变慢。
- 增加Shadowsockets服务端的流量,某些机器的流量是按量付费或有上限的。
比如访问百度,本来速度很快,如果使用Shadowsockets代理,需要去国外服务器绕一圈,速度反而变慢。而且像搬瓦工购买的VPS,是有流量上限的,需要珍惜使用。
所以,我们需要一种机制,实现只有被墙的网站走代理,正常的网站依然直连,浏览器能够自动判断是直连还是走代理。这样,访问百度会直连,速度快且不消耗代理的流量。访问Google走代理。
这时候就轮到SwitchOmega登场了。
SwitchOmega是一个Chrome浏览器插件。SwitchOmega能够根据预先配置的规则,将浏览器的请求进行直连或代理访问。最常用的是根据域名来判断。正如其名,它可以自动切换直连和代理访问。
当使用SwitchOmega时,在浏览器中访问网站的流程如下所示:
说明:
- 图中1为SwitchOmega。
- 图中2为Shadowsockets客户端。监听本地1086端口,并将请求转发到Shadowsockets服务端。
- 图中3为Shadowsockets服务端。通常是一个Linux服务器,监听本地8388端口。
说明:
Chrome的代理服务器插件有很多,但使用最广泛的就是SwitchOmega,功能强大,运行稳定。
添加本地Shadowsockets客户端
本地已经运行了Shadowsockets客户端,监听本地的1086端口。所以,在SwitchOmega中只需要配置代理服务器为本地的127.0.0.1地址,1086端口即可。
SwitchOmega的功能十分强大,将会用另一篇文章来专门介绍它的使用。
最后
本教程中,我们从零开始,利用Shadowsockets
+ Chrome
+ SwitchOmega
来越过GFW,让我们可以畅游精彩的互联网了。希望能给大家带来一些帮助。后续还会补充如下的内容:
- 在阿里云上如何搭建Shadowsockets
- 在搬瓦工上如何搭建Shadowsockets
- SwitchOmega插件的详细使用
最后还是要提醒大家,一定要文明上网,遵守中国互联网法,做一个遵纪守法的好公民。
本文由 www.vangoleo.com 发布
有疑问加站长微信联系(非本文作者)