个人翻墙事宜的一些总结与经验分享(暨搬瓦工主机选配+Shadowsocks新手搭建教程)

ohmyccoh
ohmyccoh
Aug 7, 2018 · 21 min read

本文更新于2019-11-29

从2006年左右开始,中国大陆的互联网逐渐脱离了世界,慢慢演变成了国家局域网。为了访问国际上的那些优秀网站和服务,笔者不断尝试各种代理技术,与GFW进行了军备竞赛一般的反复拉锯。在这个过程中,尝试了大量的翻墙方法,记录下来作为纪念,并总结了一些自己的经验,分享予大家。

首先聊聊历来的一些主流代理技术线路:

  1. HTTP与Socks代理

这是上古时代的免费分享型产物,通常建立在互联网的某些主机或者肉鸡上,一般都是明文无加密的,也没有任何保障。特点就是一个字:慢,你甚至都难以确定是否在正常使用代理。

如今这种技术依然在某些特定场景大量使用,比如企业内部网络管理:仅允许内网用过户通过80端口访问特定网站,以及本地127.0.0.1提供给本机使用的HTTP与Socks代理。而在互联网上,无论是国内还是国外,基本已经消失。

2. GoAgent

当年Google某项技术的遗泽,那时Google所有的对外服务IP背后都是同一个分布式集群,这就导致了你可以通过访问Google Search、Gmail等服务器的IP来接入Google App Engine(一种云计算服务),Google App Engine提供免费版,用户可以在云端部署自己的PHP代理中转程序,然后使用本地程序与云端的程序形成一个虚拟通道,本地GoAgent程序再提供Socks代理给浏览器进行使用。

那真是黄金一般的年代。尽管那时(2008年左右)Google本身已经被GFW初步的定向屏蔽,但Google在全世界有海量的IP,每一个IP都是一个窗口,每一个窗口背后却都是同一栋大楼。你只要找到可用的Google的IP地址,无论是希腊还是捷克斯洛伐克的Google,将这个IP地址塞入本地GoAgent程序去访问,立即便能畅游互联网。

但随着时间的推移,墙的增高,可用的Google IP地址迅速都被列入了GFW的黑名单,大概在2010年后,这项技术基本已经趋向于消亡。

3. SSH tunnel

这个技术其实早就存在,但用的人实在不多。因为首先,你要有一台Linux服务器来提供SSH服务,并且还要在服务器的防火墙上进行一些配置。在今天看来很天经地义的付费翻墙与简单的Linux CLI命令行操作在当年却是难以逾越的门槛。

在GoAgent消亡与Shadowsocks技术普及的空档期中,笔者曾在淘宝上购买过两年的SSH tunnel服务,商家提供IP、端口、用户名、密码和一个本地程序来进行代理,(等等,这不就是如今机场的雏形吗?)这项技术的致命缺点是低效,非常非常的低效:就像一辆大卡车在高速路上用时速20公里运输一瓶可乐,没错,就是如此低效。

4. Shadowsocks类

这是如今(2019)的主流,无论是Shadowsocks、还是ShadowsocksR,亦或者V2ray,以及大量的新型产品,在笔者看来都是同一种类型:基于TCP层将流量进行超高强度加密和伪装的产品。

它们开源、免费、协议统一、成熟、专业、专一。加上需要用户自行租用VPS服务器部署,或者购买机场跑道,让这形成了一个完整的产业与生态,上至各种语言类型构建的服务端和CDN,下至PC、路由器、Android和iOS上的各种优秀客户端。这次GFW遇到了强大的对手,它面对的不是一个技术,也不是一个人,而是一整个产业。

直到2019年的现在,GFW纵使有深度包检测技术以及坐拥每年至少几百亿的经费,还未能成功封杀这类型的技术。

5.机场

有需求的地方就有生意,大家有翻墙的需求,却没时间和精力去折腾,于是便诞生了机场这门生意。

一些供应者租用了大量的服务器和线路,部署好Shadowsocks、SSR、V2ray等服务,并完备了一套完整的用户注册、充值、管理的流程。有翻墙需求的用户只要在机场网站上注册、付费,即可获得一系列完整的客户端参数或者订阅方式,直接将这些填入客户端运行后即可连通,翻墙上网,非常方便。机场的优点是免去了用户自己部署和维护,并且拥有大量的线路可供选择:香港、美国、韩国、日本、新加坡、欧洲,随便哪个,只要能通就都可以用,一般情况下速度也很有保证。

但机场也有缺点,那就是隐私和安全。毕竟你的流量都从机场那边走了,虽然中间人能做的事情不多,但也不少,这是风险其一。

第二,用户在机场注册、充值、使用时,会留下很多详细信息和日志,这个技术外的风险可就大了,最近爆出了某机场被抄,数千名用户的详细个人信息被警察一锅端回去了,后面会是什么场面简直不敢想象。从一个用户就可以牵出机场主,再由机场主就可以找到所有用户,这风险实在是太大太大了。

所以,就我个人来说,是不会再去使用机场的,也不太推荐大家使用,如果一定要用,请确保个人隐私和信息安全。


回顾已完,接下来分享一下笔者使用Shadowsocks的一些经验和历程。

首先要感谢Shadowsocks的原作者 clowwindy ,可以说是他开启了整个翻墙产业的新时代,虽说尽管没有他,时代也会推出另一个英雄来,但这份诚挚的感谢依然要着落在这位英雄身上,是的,在笔者看来,他当得起这个名号,称得上是在某种程度上改变了中国和世界的人。再次向这位伟大的创造者致敬。附带链接:Shadowsocks的前世今身与风风雨雨

笔者在2014年左右接触到Shadowsocks这项技术,便自己摸索,购买了一台香港小服务商的VPS,在上面部署了Python版的Shadowsocks服务端,一经试用,对其速度和质量惊为天人,毕竟那时被SSH tunnel的慢速低效以及GoAgent的游击战折磨够了。然而,好景不长,开心自在使用了不到一年,服务商跑路消失了。

好吧,那就开始寻找稳定有信誉的VPS服务商来使用Shadowsocks,通过各种搜索和查询,笔者锁定了美国服务商BandwagonHost,中文俗称搬瓦工,(备用域名:Bwh1.netBwh88.net,如果无法访问,请使用梯子):

搬瓦工,因其官网网站标识是BandwagonHost,有点类似BanWaGong的拼写,所以我们国内的站长喜欢称作为搬瓦工VPS。搬瓦工VPS是一款性价比较高的便宜VPS主机,且适合入门级网友学习Linux和建站用途。
搬瓦工VPS,隶属于美国IT7公司旗下的一款低价OpenVZ VPS主机方案、2017年新增KVM VPS架构,尤其是8款便宜年付VPS,无论从性价比还是稳定性都非常适合大众VPS用户需求,我们可以用来建站、Linux系统学习、软件调试,也可以完成各种初学者需要测试项目正规用途使用。反正完全可以用作新手学习VPS主机选择性价比VPS使用。相继增加CN2、GIA线路、且在2017年10月份新增香港机房。针对中国的线路优化非常好。(目前已经支持支付宝付款,可以自行购买,更安全)

笔者在2014年底,因为香港服务商跑路的心理阴影未散,便尝试着在淘宝请人代购了一款极为便宜的搬瓦工草履虫级主机来试试水(当时只支持paypal和国际信用卡),淘宝付款29元人民币,实际上只要年付$3.99 USD,大家可以近距离观赏一下何为草履虫级配置:

草履虫

直到如今,这一款 Micro-64主机依然留在笔者的My Services列表中,正常运行,年年续费,决定作为传家宝了。:)

说实话,这台主机的使用体验并不好,因为作为OpenVZ的虚拟技术,超售是必然的,这只草履虫怕是与几千只草履虫都挤在同一台物理服务器宿主里了,就算是G级网络接口,也妥妥会被挤爆。从大陆ping过去,响应时间一般在500ms以上,丢包率一度达到了20%,下载东西只有不到30KByte/s,还非常不稳定。在该vps上部署的是Python版Shadowsocks 2.x ,因为网络拥塞,使用起来极为痛苦。当时怀疑是配置太低,于是再次购买了9.99USD/年的 Basic VPS — Self-managed — 5G PROMO V2,算是弹涂鱼级别吧。仍然是OpenVZ虚拟化,而且那时搬瓦工还未对中国进行线路优化,直观表现就是速度相当缓慢,在此期间还尝试了锐速、net-speeder等加速技术,效果依然不尽人意。就此对搬瓦工乃至美国的VPS主机颇为失望,就此丢下,作为备用辅助服务器吃灰。

笔者在对搬瓦工失望之余,目光再次瞄向香港服务商,尽管有跑路的阴影,那就选个不跑路的不就行了吗?当时笔者已经有了“为了自由地获取信息每年可以花上几百块”的心理建设,于是选择了香港阿里云。

香港阿里云确实好用,非常好用,延迟低至35ms,基本无丢包,远端带宽能跑满,而且还不会跑路。当时我一度以为缺点仅仅是贵而已。香港阿里云最低配置+4Mbps带宽年付2000多RMB,一年用下来这个价格真有点吃不消。直到后来阿里云推出了国际主机,最低配置3年800元,1M带宽。于是买下这款,将其改为100M带宽且按流量付费,就变成了3年支付800元初装费+1G/元流量使用费,然后在该主机上安装了vnstat,写了个定时脚本,每天自动向我的邮箱发送当日流量使用情况。如图:

流量计费是单向的,仅仅是按照tx部分收费,即服务器外发流量。公道的说每月十来个G,这个费用并不吓人,前提是你不怎么使用它的话……(请先不要急着掀桌)

然而前面说过,香港阿里云的缺点并不仅仅是贵而已,还有更紧迫更重要的缺点:当你使用香港阿里云并在上面架设代理服务端(Shadowsocks、SSR和V2ray我都部署过)的翻墙服务,很快你就会收到这样的邮件:

好了您现在可以掀桌了。

当你收到这个邮件,ECS主机很快将失联,ping不到,SSH无法连接,意味着这个主机的IP已经进了墙的黑名单。还好这个时候依然有补救的办法:在阿里云的管理面板中开通弹性公网IP服务,并添加一个IP,然而它是收费服务,按量,1G/1元。此时的计费变成双倍:阿里云ECS主机的流量+弹性公网IP的流量。双倍也就罢了,使用时更吝啬一点不就行了吗?但这种事情隔三岔五给你来一下:警告邮件,IP被墙,登陆阿里云面板,弹性公网添加一个IP,绑定ECS,测试是否能通,解绑旧IP。这真的是不胜其烦,而且存在一定的风险:老大哥在盯着你,管理部门是知道你拿这台主机干嘛了的。这其间到底是阿里云提供上去的,还是管理部门通过流量监测到的,无从得知。在这里岔开话题稍微分析一下:

阿里云的ECS是内置了安骑士程序的,类似于Linux服务器版360卫士。这个程序可以让阿里云完全掌握你的主机中任何信息,当然,笔者已经将它删掉,可是删掉了它阿里就无法监控ECS主机内部情况了吗?不确定。但无论如何,在香港阿里云机房的网络出口处,管理部门肯定会在此安装一个镜像交换机类型的设备,监控所有香港阿里云主机的出入流量。当管理部门的监测规则发现某台主机与大陆IP之间发生加密流量,且这台主机在发生加密流量的同时,访问了Google、Twitter等网站(虽然HTTPS技术保证了中间人无法得知流量内容,但中间人可以知道这台主机访问了哪个网站,与谁通讯了),那么管理部门即可猜测到这台主机的作用:“ 存在通过技术手段使其成为境内获取境外非法信息的途径等行为”。

所以说这是使用香港阿里云的风险,笔者如今已经完全弃用香港阿里云,停止了其上运行的相关服务,仅作最后一道紧急备用方案。因为没有必要去冒这个风险头铁直顶老大哥,毕竟身份证手机号什么的都在阿里云存着,何必呢。而且,已经找到了更好的。

蓦然回首,那人却在,灯火阑珊处。

当笔者在2018年得知搬瓦工开始提供CN2线路的KVM虚拟技术的主机时(记得前面说过的OpenVZ技术草履虫主机吗?KVM和OpenVZ技术的对比: https://zhuanlan.zhihu.com/p/37593753),立即下单试用,结果非常惊喜:ping的响应时间不到140ms(数据在中美海底光纤一来回就是100多ms,这个响应速度可以说是极快),丢包率小于1%,下载速度2MByete/s,看youtube 4K流畅的飞起。而且不贵,29.99USD/年,使用优惠6%后,支付宝扫码不到200人民币(2018-08-07汇率6.85),泪流满面啊。这里顺便给大家普及一张图:

没错,在VPS服务器这里,速度又快又稳定的会很贵,如香港阿里云;稳定又便宜的会慢;速度又快又便宜的就别想着稳定(还记得跑路的那家香港vps吗)至于又快又便宜还稳定的,笔者觉得不是“滚”,而是如今的搬瓦工了……


让我们开始整个翻墙教程吧,也算是笔者对此技能的一个回顾和总结。

作为个人翻墙用的话,在这里仅推荐两款KVM主机,OpenVZ的主机强烈不推荐。

CN2 GT线路的KVM最低配,价格29.99USD/年,结算时记得输入6%优惠码: BWH34QMFYT2R可以省下一点。

CN2 GIA线路的KVM最低配,价格69.99USD/年,结算时记得输入6%优惠码: BWH34QMFYT2R可以省下一点。

这两个主机经常缺货,若提示缺货的话请点击页面中的“ Please check out our other offers.”链接查看其他商品,找个价格能接受的类似VPS即可(线路选择的经验将在下面进行简单的分享)。

注:如果直接在搬瓦工的首页点击VPS Hosting浏览,所展示的VPS主机类型有限,并不一定能找到我们所想要的。需要点击特定的商品链接才能找到针对中国优化的那些产品。但是这些商品比较紧俏,时而有货时而无货,如果出现 Out of Stock 的缺货提示时,请点击提示旁边的 Please check out our other offers 来浏览其他类型的产品进行选购,但一定要选择带有CN2线路优化的主机。

顺便普及一下线路知识:

CN2 GT线路可以理解为半程优化,即你发去搬瓦工主机的数据包是走普通路由线路,而搬瓦工主机返回给你的数据包,走的是专门针对中国优化的线路。

CN2 GIA线路可以理解为全程优化,即你发去搬瓦工主机和主机给你返回的数据包,走的都是专门优化的专线。

不带CN2标识的产品最好不要买,没有经过优化的线路用来翻墙会很痛苦。

因为各运营商、时间段、繁忙程度、路由切换等状况的不同,具体的使用体验还需要自己去体会和尝试。这两款笔者各买了一台,总体而言,CN2 GIA线路的表现相对更好,丢包率更低、速度更快。但是因为GIA线路比较小众,其路由线路经常频繁调整,一旦在调整时,就会发生延迟、丢包等情况。好在一般调整都只有数分钟,很快就能恢复,等待一会儿即可。

对于这两台CN2的VPS主机,笔者曾经不间断连ping过一个月,最终普通CN2 GT线路的总丢包率为8.33%, CN2 GIA的总丢包率为1.07% 。因为各地区网络状况差异很大,该结果仅作为参考。同时,GIA的也更贵一些,具体如何选择,还请自行决定。


本文所采用的一键脚本部署方法,最终将会得到的是一个运行在搬瓦工VPS上的:

  • Shadowsocks-libev服务端,默认采用了AEAD类中 xchacha20-ietf-poly1305 的块式加密方式,相比起Python版的 AES-256-cfb 等流加密方式,可以更安全的从防火墙中穿过而不被检测到;
  • 默认启用了simple-obfs对流量进行混淆,请确保客户端拥有该混淆插件,如果不需要它,也可以在配置中关闭;
  • 默认启用了Fake Web Redirect服务,该服务可以让对你流量的探测者被转到其他正常大网站上去,例如www.apple.com
  • 默认启用了 Fail2ban ,该服务可以保护你的服务器不被SSH穷举爆破攻击。

笔者采用这一套服务已经很安全稳定高效地运行了两年,就算在重大敏感时期也都可以正常使用。当然,一个良好的使用习惯也是很重要的,那就是:尽量不要分享给他人来使用你的私人服务器,就算分享,也是很熟悉的亲朋好友,并千叮万嘱不要再次分享。以我的经验,一旦被多次分享、多人使用后,该服务器就很容易猝死:被墙掉,乖乖掏钱换IP吧。另外,不要用来源不明的各种客户端,尤其是Android和iOS上的各种层出不穷的山寨APP,比方说山寨小火箭等等,把你的服务器参数填进去,就等于变成了一条机场跑道。

Windows 推荐使用 Shadowsocks-win 下载地址:GitHub

MAC OS X 推荐使用 ShadowsocksX-NG 下载地址: GitHub

Android 上始终没有很好用的客户端,建议就用 shadowsocks-android 下载地址: Google Play (beta)

iOS上精品客户端就多了,特别昂贵但是好用的Surge,性价比极高而且也很好用的Shadowrocket,以及Quantumult等等。就个人来说,只推荐这三个。在AppStore中用美国、加拿大、香港等地区的AppleID账号登陆即可购买下载。


如果你什么不明白,第一次搞这些东西,那么就从这里先开始我们的搬瓦工+Shadowsocks翻墙之路,本篇从新手的角度出发,将经验分享给大家,并尽量避开复杂的技术细节。

  1. 首先点击 这里 开始注册一个你的搬瓦工账号,按图填写即可。

点击提交之后,会有一个考验眼力的验证码,要求你点击道路、汽车、消防栓、自行车、猫猫狗狗之类的,按照要求将所有的东西都点掉即可。成功完成后,会自动进入后台页面,先不要管它。请问这时候你考虑好买哪一款了吗?页面往上拉,我们在上面刚才已经推荐过了。

2.点击商品的链接进入购买界面:

Billing Cycle是支付周期,分为 Monthly月、 Quarterly季度、 Semi-Annually半年、 Annually年。

Location是这VPS的可选机房,我们选择的CN2 GT线路仅位于LA的DC3和DC8机房,本例中这里仅有DC3可以选择,点击Add to Cart。(在这里,能选DC8就选DC8,DC8机房更好一些,具体就不展开讲了。另外,买过之后是可以迁移机房的,当你觉得不够稳定,可以尝试迁移到别的地区机房看看。)

3.结算页面

此处在下方输入优惠码 BWH34QMFYT2R 再点击右方的Validate Code,即可获得6%的优惠,再点击右下方的Checkout进入支付选择。

4.确认订单

选择Alipay,打勾,确定订单,到了支付环节

4.支付

右上方选择Alipay,然后点击那个巨大的 Pay now,掏出手机打开支付宝扫一下,确认支付即可。

5.确认主机正常运行

当支付完成后,我们回到搬瓦工的后台页面,点击Services / My Services,即可看到刚才购买的主机:

这时候可以泡杯咖啡奖励一下自己,等上几分钟让系统装好。

然后我们就可以点右边的 KiwiVM Control Panel按钮对这台VPS进行一些必要的管理操作了。

6.重装系统

进入KiwiVM管理面板后,我们首先可以看到一些基本信息,比如VPS的IP地址、SSH管理端口号等。我们要做的第一件事是重装系统为新版的Ubuntu,默认给你安装的是CentOS 6,这个不太好用(其实都差不多,看习惯)。此时我们先点击stop按钮,将vps关机,然后左边侧栏中的Install new OS,

选择ubuntu-18.04-x86_64,打勾同意,再点击Reload。再喝一杯咖啡等待,同时,在这个时候,页面会告诉你新系统的SSH端口号,以及新系统的root用户密码,请一定要记下来,复制粘贴到一个稳妥的地方保存。

7.几分钟后,新系统安装好,我们该远程连接它开始配置了。下载安装Xshell, https://www.netsarang.com/zh/xshell-download/ 选择家庭和学校用户可以免费授权。

安装好Xshell后运行它,新建一个会话,填入我们VPS主机的IP和端口,点击确定,然后连接它,会出现一个主机密钥的提示,接受并保存即可。

输入用户名root,再输入密码,就是刚才重装后让你记下来的那个,当出现Welcome to Ubuntu等字样时,就代表连接成功了:

8.系统初始化操作,接下来我们对刚装好的系统进行一系列的命令行操作,以优化它的环境和依赖。

系统更新,复制粘贴以下命令并回车,当出现y/n提示时,输入y并回车,如果出现红蓝背景等的各种更新时需要选择的界面,直接一路回车即可:

apt update && apt upgrade

当出现done时,代表更新已经完成。接下来我们采用一键命令的方式来完成一个复杂的操作:更新系统内核并开启BBR拥塞控制算法,可以简单理解为采用该算法后将会拥有更稳定、快速的网络连接, 请复制以下命令、粘贴并回车,注意这是一整行,请全部复制:(在此致谢teddysun提供该脚本)

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh

由于搬瓦工的Ubuntu18系统映像其内核已经较新,该脚本便直接开启了BBR。

9.安装Shadowsocks-libev,该版本的Shadowsocks服务端为C语言编写,与Python、Go等版本的服务端相比,可以开启AEAD方式的加密,大大增强了安全性(更不容易被GFW老大哥干倒),以及略微提升了性能。缺点就是安装配置复杂,需要进行编译,对于新手非常不友好。但好在我们有一键脚本:),请复制以下命令、粘贴并回车,注意这是一整行,请全部复制:(在此致谢Unbinilium所编写的该脚本)

sudo wget https://raw.githubusercontent.com/Unbinilium/Twist/master/twist -O twist.sh && chmod -x twist.sh && bash twist.sh

此脚本会自行下载源码、编译和安装Shadowsocks-libev以及AEAD加密所用的库;同时集成了simp-obfs用于混淆流量(进一步提升安全性);安装了Fake Web Redirect对本服务器进行了伪装;还安装了fail2ban,避免服务器被长时间的SSH密码猜解爆破攻击,总共需要大概十多分钟时间来完成。

这一步可能会出现 Cannot download libsodium-1.0.18-RELEASE source. Aborting!的问题,那是因为libsodium的1.0.18版本释出后又被发布者撤回了的缘故。请参考本文评论中的解决方案

完成后会有提示,按下回车将会显示一个巨大的二维码,以及各方面信息,包含了服务器地址,Shadowsocks的加密方式、端口(可能不提示,默认是443,伪装成了一个https的网站。)、密码、混淆方式和参数等等相当多的必要信息,请复制下来并妥善保存。然后按下回车,VPS服务器将会进行重启,以完成相关配置和启动工作。

此时基本所有工作都已经完成,您已经可以使用电脑端、手机端或者路由器端的Shadowsocks客户端填入上方获得的必要信息进行连接使用了。而更加详细的配置、修改以及优化,这将是进阶的一个话题和经验,待下次再行文分享。

如果需要帮助,可以在评论区留言,我会回复您。

感谢您观看本文,希望可以帮助到您,期待我们在没有黑暗的地方再见。

    ohmyccoh

    Written by

    ohmyccoh

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade