AWS-EC2配置IPv6地址+ss实现校园网免流量费上网

我日常使用的校园网每月除去免费流量外流量计费为2元/GB。当然这个规定只针对IPv4,“教学科研”用的IPv6是不受限制的。今天折腾AWS的时候突然想到可以用IPv6服务器做代理实现免流量上网,如果使用得当每月可以省下二三十元的流量费,基本刚好把租服务器的钱赚了回来,等于白用一个V#P:N。配置的过程中踩了一些坑,记录如下。

首先租服务器的时候要给服务器分配IPv6地址。EC2虽然支持IPv6但是默认是没有这个功能的。

  1. 配置VPC,添加IPv6的CIDR,相应地配置Subnet的CIDR和Route Table与Gateway的关联。
  2. 启动实例,用了简单的Ubuntu。然后配置VPC和subnet。如果VPC配置正常,会出现自动分配IPv6地址的选项。这里自动即可。
  3. 配置安全组,简单粗暴地Port Range 0-65535,然后Source上除了配置IPv4的0.0.0.0/0外,还需要配置IPv6的::/0。
  4. 完成

现在手里就有一个外网可访问IPv6地址的云服务器了,下一步是在服务器上装ss并启动服务。ss默认是支持IPv6的,但是启动ss并没有想象中那么容易。

首先,装Python3-pip的时候,提示

1
E: Unable to locate package python3-pip

这是因为没有更新包列表,执行

1
sudo apt update

解决。

但是在update时,卡在了连接security.ubuntu.com上,Google之后参考这个回答得到了解决。apt默认会尽可能使用IPv6进行更新,但是security.ubuntu.com好像不吃这套,于是需要手动调高IPv4的优先级。解决办法:

  1. 打开/etc/gai.conf
  2. 取消# precedence ::ffff:0:0/96 100的注释
  3. 接着执行sudo apt update,顺利完成

接下来就是安装pip和ss了,然后ssserver启动即可,地址需要根据IPv6的要求设置为::

配好ss后试了一下,确实可以不用流量上网了,但由于服务器是在境外,上国内的网站比较慢,不是很6。好在平时上境外网站很多,应该也是能省下不少流量的。实在不行就自己配置一下PAC或者代理服务器,手动避开一些有些大流量的场景。

2018年5月4日后记

近期国内网络“升级”,连接境外IPv6站点速度普遍降低。如果只登陆文字网站如GitHub等尚可,遇到要加载图片乃至视频的情形便有很高延迟。见清华ipv6网络是不是对国外限速了? - 知乎
为了提高网速,可以采用kcptun。其原理是在TCP连接的两个主机之间建立多个UDP连接,并在应用层实现可靠传输。实测确实可以将网速提高到可用水平。