媷资本主义羊毛!
前言
|
|
又到一年开学季,在家用习惯了包月包年50M100M带宽的无限畅爽,来到五道口体育学院一个月20G+分档收费(据说现在改成25G+¥2/G了?)的ipv4流量简直不够用啊,然而学校的ipv6流量免费用,这让我有了一个大胆的想法(其实这个想法在明光村电脑专修学院的时候就有了,只不过形势没那么严峻而已,小破邮的筒子们你们知足吧,至少在网费这件事上你们甩我们一个五道口了)——将ipv4流量代理到ipv6,那岂不是美滋滋?
“翻♂墙”这个词是很敏感的,尤其我本科学校的前校长正是GFW之父——方老师,但是读书人不叫“翻♂墙”,叫“代♂理”!
闲扯淡了这么多,接下来谈正事。
如何在清华大学(以及其他有校园网的环境下)实现ipv4免流呢?下图是我画的一个示例图(手残晚期大家凑合着看吧)
假设我需要在清华校园网内上b站,正常情况下计算机跟b站服务器之间是走ipv4的,学校也就会因此计入我们的流量。跟着本博文介绍的方法一路走下去,你的计算机跟b站服务器的通信走的是绿色这条线,云服务器(本博文以亚马逊AWS EC2为例)与b站的流量是正常的ipv4,而云服务器跟校园网内的电脑之间的流量走的是ipv6。
既能翻♂墙,还能免♂流。
开始工作
你需要:
- 一张信用卡 —— 用于注册AWS EC2
- 确定你有ipv6访问权限
关于第一点不用多说,如果没有的话找父母借吧(滑稽
关于第二点,一般校园网环境都能访问ipv6,如果你不确定,可以尝试访问byrbt,如果出现了byrbt的登录/注册页面(当然,或者首页)那说明你能访问ipv6。如果只有ipv4访问权限,但想科学♂上网,也可以照着本篇博文一部分来做。
申请云主机
本博文以亚马逊AWS为例,类似的有google cloud、vultr等。
访问这个网页以注册一个亚马逊aws账号,它大概长这样
我们来做一下数学题,一天24小时,一个月最长31天,也就是说一个月最长24*31=744小时,aws每个月750小时免费时间,也就是说一直免费(滑稽
实际上,aws是按照每个实例所运行时长总和这样计时的,也就是说运行一个实例的话是免费的,如果你账号内运行着2个或更多个实例的话,在750/n个小时内是免费的,超过的部分会计费。
由于我事先已经注册过了,在这里无法提供截图。注册时会让你填写联系人、地址等信息,这些都需要用英文填写。之后要填写信用卡信息及验证,验证时会扣$1的费用,会返还(也不知道是不是,估计返还的时候都忘了这回事了)。接下来是验证手机,一定要填一个有效的手机号,填好了之后会有电话打入,请耐心听完英语,别以为是骗子就挂掉了,电话里会告诉你验证码,输入验证码之后验证完成。
注册完成后跳转到控制台,注意右上角的区域选择,大概随便一个区域都可以科学♂上网吧,我这里随便选了个区域。
我们需要的是EC2,在AWS服务搜索框搜EC2,点击进入EC2控制台
它长这样,点击“启动实例”
选择AMI,为了更好地媷资本主义羊毛,我们注意选择免费套餐
具体系统大家可以自行选择,本博文以Ubuntu Server 16.04 LTS (HVM), SSD Volume Type - ami-10547475这个映像为例。点击“选择”后跳转到实例类型选择,选默(mian)认(fei)的就可以。
后面的设置基本上选默认的就行,到“配置安全组”步骤,你可以创建一个新安全组,并指定流量类型、协议、端口范围、来源等等,安全组在下面会再提到。
选完了之后就可以审核并启动了,审核的时候要求提供密钥对,这里新建一个密钥对,命名好之后浏览器会下载一个对应名字的.pem文件,保存好这个文件,以后ssh登录时需要用到这个文件。
审核启动后,可以到实例页面看到刚刚创建的实例了,它大概长这样。描述里提供了公有DNS、IP等信息,当实例状态处于running,且状态检查是“2/2 的检查已通过”时,你就可以ssh登录这个实例了。
这时先编辑一下安全组,实例面板最右边有该实例正在使用的安全组,点击查看该安全组,这里可以编辑入站和出站流量,为了图方便,我的入站和出站流量选择了全部流量全部协议全部端口任何来源。(比较容易被攻击,但是就是懒得弄了)
(我的本机是mac,所以接下来的shell代码都是unix shell,windows请自行修改)这时启动终端,定位到刚刚下载的.pem文件所在目录,将.pem文件设置为r–模式,并以该文件作为身份文件登录实例,登录实例时用”ubuntu”作为用户。
|
|
到这里你已经可以连接到实例了。
如果你只有ipv4访问,那么你可以跳过下一节。
让实例可以访问ipv6
进入vpc控制台页面进行编辑。
将 IPv6 CIDR 块与您的 VPC 和子网关联
查看网关ID
- 在导航窗格中,选择Internet 网关。
- 记下附加在第一步编辑的VPC的网关的ID。
更新路由表
- 在导航窗格中,选择路由表并选择与私有子网关联的路由表。
- 在路由选项卡中,选择编辑,为Destination(中文翻译问题,第一个“目标”)指定
::/0
,为Target(第二个“目标”)选择上一步记下的Internet 网关 ID,然后点击保存。
更新安全组规则
- 在导航窗格中,选择安全组,并选择VPC对应的 Web 服务器安全组。
- 与前文提到的安全组类似,编辑入站、出站规则,注意源和目标的地址要包括你的IPV6地址(::/0)。
更改实例
- 回到EC2控制台页面。
- (将前面创建的实例终止,点击实例,选择对应实例,点击操作→实例状态→终止,稍等片刻,待实例状态显示terminated即可)
- 启动实例,重复上文提到的操作,直到配置实例步骤,在网络选项,选择前面编辑的VPC。在子网选项,选择一个子网。在自动分配公有 IP及自动分配 IPv6 IP选项,选择带有“启用”的选项。
- 其他选择默认即可。
为实例分配 IPv6 地址
- 返回EC2控制台页面,在导航窗格中选择实例。
- 选择刚才创建的实例,然后选择操作→联网→管理IP地址。
- 在IPV6地址下,选择分配新IP,可以输入子网范围内的特定 IPv6 地址,也可以保留默认的
Auto-Assign
值,让 Amazon 选择一个地址。 - 选择是,请更新。
(可选) 在实例中配置 IPv6
如果经过上述步骤,实例仍无法访问IPV6,可以进行以下步骤。
使用实例的公有 IPv4 地址连接到您的实例。
查看
/etc/network/interfaces.d/50-cloud-init.cfg
文件的内容:1cat /etc/network/interfaces.d/50-cloud-init.cfg12345678910This file is generated from information provided bythe datasource. Changes to it will not persist across an instance.To disable cloud-init's network configuration capabilities, write a file/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:network: {config: disabled}auto loiface lo inet loopbackauto eth0iface eth0 inet dhcp确认已配置回环网络设备
lo
,记下网络接口的名称。在此示例中,网络接口名称为eth0
;根据实例类型,此名称可能不同。创建文件
/etc/network/interfaces.d/60-default-with-ipv6.cfg
并添加以下行。如果需要,将eth0
替换为在上一步中检索到的网络接口的名称。1iface eth0 inet6 dhcp重启实例,或者通过运行以下命令重新启动网络接口。如果需要,将
eth0
替换为在第一步中检索到的网络接口的名称。1sudo ifdown eth0 ; sudo ifup eth0重新连接到实例,并使用
ifconfig
命令验证网络接口上是否配置了 IPv6 地址。
其他系统可参考这个页面。
至此,你的实例应该能访问ipv6地址了。你可以登录实例然后输入以下指令验证:
1ping6 ipv6.google.com在这个地方也会显示你实例的ipv6地址
搭建shadowsocks服务器
以ubuntu为例,用ssh连接到实例之后,安装pip、shadowsocks以及必要组件。
|
|
安装完成后可以执行ssserver -h
以验证shadowsocks是否安装成功,若成功则会出现如下提示:
|
|
如果没有ssserver命令的话,可以执行which ssserver
指令查找:
|
|
只需要把/usr/local/bin加入到/etc/profile文件中即可。
创建shadowsocks目录,并创建ss配置文件,如下:
|
|
其中”server”项填”::”是为了让ss同时监听ipv4和ipv6流量,”server_port”项填入你希望的外部端口。编辑完成后按esc,输入:wq
退出。
执行ssserver -c /etc/shadowsocks/config.json -d start
启动ss,其中-d
参数是使ss在后台进程中运行。
启动后执行netstat -tunlp
指令查看:
|
|
其中两个端口号为8388的就是我这个实例启动的ss进程了。
客户端连接ss服务
ss服务器搭建完毕后,我们需要一个客户端以连接ss服务器。
客户端:
以MacOS的ShadowsocksX-NG为例,下载安装后,点击软件图标→服务器→服务器设置
点击左下角的“+”,在地址栏填入实例的ipv6地址(如果没有ipv6访问权限的话,填入实例的ipv4地址或者ipv4 dns也可以科学♂上网)及ss端口号,加密方法填ss配置文件config.json里设置的method
项,这里用的是aes-256-cfb
,填入密码点击确定即可。
然后点击软件图标,选择全局模式! 选择全局模式! 选择全局模式!一定要选择全局模式,然后选择打开 Shadowsocks即可。
后记
注意:
要先在登录页面登录之后再打开shadowsocks服务,不然无法联网(至少在清华是这样的,不知道其他学校是否需要先登录校园网)。经测试,不登录才是正确的打开方式。。。。- 关于代理方式,如果不嫌麻烦的话可以选择手动模式,然后用socks5代理到localhost:1086,否则一定要选全局模式,如果选择自动模式的话,访问没有被GFW墙的网站(如b站)将不走代理,也就是说走正常的ipv4(第一张图的蓝色线),我在开始的时候忘记选全局模式,测试的时候流量蹭蹭的就没了T_T
- 占了小便宜,就得有一定的限制,这个限制就是网速会比较慢,毕竟是国外的云服务器,开国内的网站做不到秒开,而且部分网站也刷不出来。另外,使用全局模式时不登录校园网的话将无法登录qq、微信等应用,解决方法是登录校园网后ss客户端选择手动模式然后用socks5代理到localhost:1086。
- 亚马逊AWS的免费期限是一年,一年之后你要是不把实例删除干净的话,它是自动续费的。如果你只是想体验一下,不想续费的话,最好的办法还是按时删除实例。但是我这个人记性经常不好,一年时间大概早就把这件事忘得一干二净了,所以我还写了个程序,运行在实例上,在一年后差不多要续费的时候提醒我删除实例,如果你也想要这个提醒的话,可以参考这里:BillingReminder