目录
1.前言
2.选购vps
3.gfw与ss
4.什么是ssr
5.利用ssh连接bandwagon的vps
6.搭建ssr服务端 + 锐速加速
7.搭建ssr客户端
8.欢迎来到互联网
1、前言
以前用的免费vpn陆陆续续的都挂掉了,自己又比较懒,眼睁睁的看着自己陷入了“全球最大局域网”也没有啥动作。
直到最近裸辞在家总算是闲下来能够搞一点感兴趣的东西了,所以决定自己搭一个梯子一劳永逸。
google了一下搭梯子教程之后,发现网上现成的教程还是比较多的,按着教程来并且一切顺利的话大概2个小时就能搞定。
(ps:我能不翻墙用google的原因–Chrome插件-Google访问助手)
由于搭建ssr是需要海外的vps的,而我这个博客的vps是买的godaddy在新加坡的主机,我就打算直接用博客的vps。
然而我发现godaddy主机的linux操作系统的版本很奇怪,很多工具都没有安装,环境也有不少问题。
我折腾了好半天,也没有全部搞定。
这期间,我恰巧发现了一个工具:17monipdb(下载地址:百度网盘)
这个软件可以用来做路由追踪,并且在地图上显示出你请求的ip地址的路由路线。
我用这个软件追踪了一下我的godaddy主机的ip,结果如下:
我买的主机虽然是新加坡的,离咱们算是比较近的国家。
但是访问这个主机的ip地址时,却不是从中国直接路由到新加坡,而是先转到美国再转回新加坡。
整体的路由路径(从我目前的住处)大致是:南京–>上海–>洛杉矶–>凤凰城–>新加坡。
怪不得我的博客访问速度慢,这么长的路由路径,横跨两次太平洋,不丢包就奇怪了。
于是我决定不用博客的主机来搭建ssr,而是买一个近一点的,访问速度ok并且丢包率小的主机。
比较了一番国外的vps厂商下来,我最后选择了搬瓦工(bandwagon) 19.99$/年 的主机。
选搬瓦工的原因:
1. 便宜省钱:领了优惠之后,一年才130元左右;
2. 支付方便:搬瓦工是支持支付宝付款的,那就省去了我注册paypal账号并且绑定银联卡等等操作了。
3. 配置正好:搬瓦工19.99$/年的主机包含的配置为 550G/月流量+512M的RAM+11G的Disk 对于一个只用来搭梯子的vps来说正好够用,再多的话其实有些浪费了。
4. 访问速度:搬瓦工可以选择在洛杉矶的vps,由于ss或者ssr都是使用SOCKS5协议进行代理服务的,因此vps访问目标地址的速度很重要,把vps选在洛杉矶这样的网络中心是比较有利于提速的。
搞定主机之后,我跟着网上找的一堆教程,先后在vps上搭建了ss以及ssr,有手动搭建的,也有用别人写的一键脚本搭建的,也用了锐速来提速以及降低丢包率。
对了,如果要用锐速进行加速,那么vps一定要选择KVM而不能选择Openvz,锐速不支持Openvz,如下图:
搭建好了vps上的服务端后,又在网上找了不少ss以及ssr的客户端,客户端的版本还是不少的,github上有很多人都开源了他们写的ss和ssr的客户端,比如用electron+webpack实现的electron-ssr,还有用golang实现的avege等。
我大概看了一下,客户端都大同小异,主要用来配置服务器连接以及代理模式相关的信息。
我最后在pc上用的是SSTap-1.0.9.7以及ShadowsocksR-4.7.0,在手机(android)上用的是ssr4Android,两端都已经可以正常使用。
下面记录一下我这次的搭建梯子的过程以及过程中学到的知识点,并且会放上主要参考的教程地址以及相关软件或者工具的下载地址。
2、选购vps
vps(全称:Virtual private server,中文名:虚拟专用服务器),vps是一种技术手段,可以将一台服务器虚拟成多个专享服务器,使得每个vps服务器都能分配独立的公网ip地址、独立操作系统、实现不同VPS间磁盘空间、内存、CPU资源、进程和系统配置的隔离,为用户和应用程序模拟出“独占”使用计算资源的体验。
目前有很多厂商提供vps服务,有国外的比如我当前的博客就是部署在godaddy的vps上,其他的国外厂商还有bandwagon,Vultr等,国内的比较出名的有阿里云,腾讯云,华为云等。
这次我的目的是要利用vps搭建ssr代理服务器来实现翻墙,vps必须要选择国外的,所以我最后入手了bandwagong的vps。
搬瓦工主页:https://bwh1.net/index.php
进入主页后,选择19.99$/year的版本(记得选择kvm而不是OpenVZ):
选择vps地址,这里选洛杉矶:
在之后的页面点击checkout,然后填写自己的个人信息,付款方式选择alipay(支付宝)即可完成购买:
购买成功后,登录自己的账号,点击My Services就可以看见刚才购买的vps了:
由于需要在vps上安装一系列软件和工具来搭建ssr,因此需要把vps上搭载的操作系统换成centos的指定版本,这样在使用时会方便一些。
更换centos版本的具体步骤:
1. 打卡KiwiVM Control Panel
2. 在Main Controls页的Actions一列,点击stop关闭vps
3. 在Install New OS页选择Centos 6 x86_64 bbr 进行安装
4. 大概几分钟过后会提示安装成功,并且bandwagon会发送一封包含vps的ip地址,password以及ssh的端口号的邮件给你,记得将这封邮件保存起来,之后利用ssh远程连接vps时会用到。
到这一步vps相关的操作应该是搞定了,不过我在后来使用别人写的python脚本搭建ssr的过程中,遇到了vps自带的python版本较低导致脚本跑不起来的问题,所以我又去升级了一下python的版本。
linux系统上升级python的步骤,以及升级python后会遇到的问题具体见下面两篇文章:
Centos 6.4 python 2.6 升级到 2.7
python升级导致yum命令无法使用的解决办法
关于搬瓦工vps搭建的过程,主要参考了这篇文章的前半部分:
SegementFault 搬瓦工vps搭建ss梯子
这篇文章是介绍利用搬瓦工的vps搭建ss的,按照文中步骤来应该就可以把服务端和客户端都搞定,我最开始就是参考这篇文章搭起来了ss版本的梯子,并且在pc和android上都安装了客户端,已经能够正常工作。
不过本文主要介绍的是ssr的搭建,至于ssr和ss的区别,请接着往下看。
3、gfw与ss
要介绍ss,就不得不先介绍GFW。
什么是GFW呢?GFW是Great Firewall的简称,中文名为防火长城,也称中国国家防火墙,就是我们时常挂在口边的“墙”。
GFW是咱们国家政府为了保障舆论安全和控制政治导向而成立的互联网审查系统项目。
GFW的主要功能为禁止国内用户访问指定的域名或者ip所对应的网站,以及拦截带有敏感信息的请求。
因此我们平常说的“被墙”,即指网站内容被防火长城所屏蔽或者指服务器的通讯被封阻。
简单来讲,GFW的工作原理如下:
由于我们的网络都是通过路由器进行网际互联的,因此一次http请求可能会经过n个路由器的转发才能到达目的地。
GFW则是在路由器的路由过程中进行干扰,当用户发送一个请求后,路由器解析请求的ip地址是否存在于黑名单内,又或者解析ip包中的内容,判断是否存在敏感信息(例如政治相关或者反动相关的信息)。
如果发现请求不合规范,那么路由器直接伪造一个请求失败的信息返回给用户,不再进行正常的路由转发,或者将该请求转发到黑洞服务器(一个只接收请求而不做任何回复的服务器),使得用户无法访问该ip地址。
由于国内连接国外的网关基本都是国家级网关,完全受国家控制,因此我们访问外网的请求一定会被GFW拦截掉。
并且,为了提高请求的拦截与解析效率,GFW的组成可能由数百上前台高性能服务器组成(这也是被称为长城的原因),完全能够撑得住超高并发的实时数据流。
所谓上有政策,下有对策,为了打破GFW的笼罩,为了重回自由的互联网,国内的一些技术流网民们开始各显神通。
ss(shadowsocks)就是这一时期的产物。
ss是利用了SOCKS5协议,并且拆分服务端与客户端进行代理访问的一种翻墙手段。
简单介绍下ss的原理:
上文介绍了GFW的工作原理,我们发现,GFW之所以能够工作,是因为掌握了统一的路由出口,导致所有想要访问外网ip的请求一定会经过GFW的筛选。
但是GFW只会拦截黑名单内的以及包含敏感信息的外网ip请求,因此可以在这两点上做文章。
ss就是利用了这两点,首先在海外的vps搭建一个ss的服务端,由于我们自己的vps不涉及敏感信息和违法内容,所以vps的ip地址不存在与GFW的黑名单内,因此我们直接在本地是可以ping通vps的。
然后利用SOCKS5协议,将本地与海外的vps进行连接,使得海外vps服务端代理本地的网络请求。
此时其实已经能够绕过GFW的黑名单策略了,因为本地访问任何地址,其实都是先访问海外的vps,再由vps访问真正的目标地址。
但是GFW不仅仅看目标ip地址,还会检测ip包内的内容,如果发现含有黑名单内的地址或者敏感内容时,仍然会拦截该请求。
因此ss又在本地搭建一个ss的客户端,本地所有的请求都先发送给ss的客户端,然后在ss的客户端和ss的服务端之间共用一套对称加密混淆协议,将请求的内容加密混淆之后再进行通信,从而使得GFW无法解析到真正的请求内容,使请求绕过了GFW,实现“翻墙”。
上述原理可以用下图表示:
当我们在本地的浏览器中访问 www.google.com 这个域名时,浏览器将请求交给ss的local客户端,local加密该请求,并将请求转发给ss的server服务端,此时会经过GFW,不过由于目标IP地址是vps主机ip,不在GFW的黑名单内,且请求内容也经过加密混淆,GFW识别不出敏感内容,于是请求能够顺利到达server。
server收到请求之后,解密该请求的内容,拿到真正的目标地址,即google的IP地址,于是向google的服务器发送请求 (由于搭建ss服务端的vps在国外,因此访问国外的ip地址时不会受到GFW的拦截),并且将请求得到的结果加密后返回给ss的local客户端,顺利通过GFW后到达local,local拿到返回的请求后,将请求解密之后再发送给浏览器,于是浏览器便能展示google.com的内容了。
参考内容:
防火长城 – 维基百科
自己动手写一个 Shadowsocks
4、什么是ssr
既然有了ss,那么为什么又来一个ssr呢?
首先需要介绍一下ss的背景:
Shadowsocks原版在更新到 v2.5.8 之后,作者clowwindy被“相关部门”约谈喝茶了,于是就停止了更新。
但是应网友要求,另一个开发者把 v2.5.8 的一些严重BUG修复了更新为 v3.0,然后宣布不再管了。
Shadowsocks原版本身,也是具有协议和混淆功能的,也就是原版协议/混淆,只是只有一个不能自行选择,并且全靠作者维护,作者喝茶后,就GG了,其他的接手者只是继续完善其他的功能。
然后介绍ssr:
ShadowsocksR是在原版作者喝茶前,由另一个程序员breakwa11制作的第三方版本,主要特点是增加了一些人性化功能,比如服务器连接统计、连接管理、协议转换、多重代理等。
最主要的是ShadowsocksR的混淆协议和插件功能,因为Shadowsocks原版项目已经无人维护,同时“墙”的工作人员也在不停的寻找效率批量匹配特征的方法,目前SS原版协议在大部分地区已经被 匹配流量特征QOS限速了。
所以ShadowsocksR的混淆协议和插件就应运而生,其目的就是欺骗“墙”目前的流量匹配功能和QOS限速。可以理解为在原版协议的基础上加强了混淆功能,能够更有效的防止被GFW的特征识别算法给识破。
然而正因为加强了混淆功能,因此ssr的速度理论上来说是比ss要慢的,因为增加了更多的计算步骤,并且分摊到每一个请求发包上的话,累计起来还是不容小视的,ShadowsocksR目前最新的协议和混淆是会增加延迟和损耗15%的速度,因此如果ss没有遭到GFW的识别限速的话,使用ss会更快。
参考内容:
关于Shadowsocks的常见问题总结篇
(ps:访问该地址需要先翻墙)
5、利用ssh连接bandwagon的vps
ok,言归正传,接着介绍如何在vps上搭建ssr。
按照之前的步骤我们已经获得了自己的搬瓦工vps了,接下来就需要下载并且安装ssr了。
搬瓦工在自己的站点上提供了远程的shell:
你可以直接在这个shell上进行操作,也可以用xshell或者putty建立ssh连接vps,进行操作。
我用的是xshell,介绍下xshell连接搬瓦工vps的步骤:
首先需要去下载一个xshell的客户端,直接百度,下载一个免费的就行。
打开xshell客户端,建立新的会话,如下图:
还记得我在选购vps一节中,让你记住的邮件吗,现在把这封邮件打开。
按照邮件中的内容填写xshell的相关信息,上图中的主机即为vps的ip地址,端口号则填写邮件中的ssh端口号。
填写完成后点击确定,此时xshell会提示输入用户名,此处输入root即可:
之后会让填写密码,填写邮件中发送的密码即可,如果出现如下内容,那么ssh连接就建立好了:
6、搭建ssr服务端 + 锐速加速
执行以下命令,安装ssr:
wget --no-check-certificate https://freed.ga/github/shadowsocksR.sh; bash shadowsocksR.sh
如果提示:wget :command not found
代表你的vps上尚未安装wget,执行下面的命令来安装wget:
yum install wget -y
之后跟着提示走:
其中ssr连接密码请换成你自己的密码
ssr连接端口设置为1025~65535之间的数字(端口设置越奇怪越好,因为据说GFW会重点关注一些常见的端口如80,443,8080等)
按下回车后,稍等一段时间ssr就安装成功了:
这些信息请记录下来,之后配置ssr客户端的时候需要用到。
到了这一步,其实服务端的ssr搭建就可以结束了,在本地搞一个客户端后就可以正常工作了。
不过网速可能会比较慢,看youtube也许会一卡一卡的,反正我看420p的视频都很卡。
我看别的教程说可以用锐速来进行访问提速,于是我就试了一下:
由于锐速对于linux的内核版本有要求,因此先执行一键切换内核的脚本:
wget -N --no-check-certificate https://freed.ga/kernel/ruisu.sh && bash ruisu.sh
执行上面的脚本会使得vps重启,xshell会自动断开连接。不过没关系,稍等几分钟后,重新连接xhsell即可。
之后执行下面的命令,安装锐速:
wget -N --no-check-certificate https://github.com/91yun/serverspeeder/raw/master/serverspeeder.sh && bash serverspeeder.sh
当出现下列信息后,就代表锐速也安装成功了:
之后再访问youtube,就发现可以看720p甚至1080p的视频了。
(真的很神奇,安装了锐速之后速度一下子就提上来了,我去网上看了下锐速的原理,大概是通过优化tcp协议的拥塞算法来实现单边TCP加速,可以使得较差的线路也能有良好的连接)
下面是ssr以及锐速常用的一些命令:
shadowsocks指令:
编辑ss配置文件:
vi /etc/shandowsocks.json
开启ss:
/etc/init.d/shadowsocks start 或 service service start
关闭ss:
/etc/init.d/shadowsocks stop 或 service service stop
重启ss:
/etc/init.d/shadowsocks restart 或 service service restartstart
查看ss状态:
/etc/init.d/shadowsocks status 或 service service status
ServerSpeed锐速指令:
查看状态:
service serverSpeeder status
启动锐速:
service serverSpeeder start
关闭锐速:
service serverSpeeder stop
为了证明我们的服务端ssr搭建成功了,可以在本地使用tcping命令查看vps上指定的ssr端口是否正常工作:
首先去tcping的官网下载最新版本的tcping:https://elifulkerson.com/projects/tcping.php
直接下载官网中的tcping.exe文件即可。
下载完成后,将tcping.exe文件放入本地的C:\Windows\System32目录下。
之后打开cmd,执行tcping -v命令,如果正常显示版本信息,那么代表tcping安装成功。
之后执行 tcping -n 5 主机ip ssr端口号 即可查看ssr端口是否正常工作:
参考内容:
实战vultr搭建SSR+锐速——超速看youtube1080p
Windows 使用 TCPing 工具来获取 TCP延迟、端口通顺情况、已禁Ping服务器的延迟
(访问第二个地址需翻墙)
7、搭建ssr客户端
相比于ssr的服务端,ssr的客户端的搭建就比较简单了,直接简单粗暴的下载,并且安装,然后配置一下就可以使用了。
关于ssr的pc以及移动端客户端的下载,我这里推荐一篇描写的比较具体的文章:
ShadowsocksR客户端下载及操作步骤
pc端ssr客户端的配置:
安装好的ssr客户端长这样:
服务器IP填写你自己的vps主机ip地址,服务器端口填写安装ssr服务端时配置的端口,加密、协议以及混淆这三个按照上图中的来就可以了。
(注:加密、协议、混淆可以换成别的,但是要保持服务端和客户端的一致,服务器端这些配置存储在/etc/shandowsocks.json中,修改该文件的内容并且重启ssr即可生效)
android端ssr客户端的安装与配置:
我的手机是android系统,所以只介绍安卓,ios的还是请参考上面的地址中的教程。
由于在上面给出的连接中,下载安卓的是apk文件,因此需要在pc上用手机助手类的软件将apk文件发送给手机,然后在手机上打开文件管理器,找到apk文件进行安装即可。
至于手机端的配置其实适合pc端一致的,就不再赘述了。
至此,你的pc端和移动端的ssr应该都能够正常工作了。
不过我还要在这推荐一个pc端的客户端,SSTap,如果平常比较喜欢打外服的游戏,比如吃鸡,那么就可以用SSTap来进行加速,这就相当于自己的游戏vpn加速器,并且也可以用来访问web,游戏与上网两不误。
SSTap相关介绍以及下载地址:ShadowsocksR 转为类VPN的真 · 全局代理神器 (软件/游戏走代理) — SSTAP
(访问该地址需要翻墙)
8、欢迎来到互联网
搞定ssr的服务端和客户端之后,那么就恭喜你,欢迎来到真正的互联网。
喜欢这篇文章.易懂美观。