前言
疫情结束, 这学期开始校园网要恢复收费了, 虽然提高到每个月免费120GB免费限额, 但是对于我们当然是不够用的. 超额后每GB要收费0.6元, 每月超个几百G根本付不起. 所以理所当然的研究起免流的方案.
考虑到绕过校园网认证直接偷跑流量, 既不合法, 又不道德, 我们当然要走正规的方案.
我国提倡校园网接入ipv6, 并且免费提供给学生使用的政策, 校园网上也可以查询到相关信息:

旧的尝试
最开始只是尝试使用DNS server修改下特定的几个网站, 比如b站, 百度云, steam啥的, 不过有失效的可能性, 并且其他没有ipv6服务器的站点就无法用这种方案, 说到底这种就是直接连接到对应网站的ipv6服务器以走ipv6通道

相关的教程可以参考:
校园网免流看b站(bilibili/哔哩哔哩)视频——基于 Technitium DNS Server – jcy1998的WordPress
让Steam客户端使用IPV6进行下载 – Dogfight360
优点是没有额外开销, 缺点是不稳定, 并且局限性很大.
接下来我们考虑如何稳定的实现全网免流.
使用ipv6服务器代理实现全网免流
小介绍

简单而言, 就是校园网仅仅连接到我们的拥有ipv6地址的服务器, 然后由服务器访问网络上的数据, 然后发还给我们数据. 这一过程中, 我们走的校园网100%是ipv6连接, 因为全部流量都仅仅和ipv6服务器通信. 即便是不支持ipv6的站点, 因为我们的服务器可以访问ipv4, 所以都可以正常访问.
看到这里, 当然你能够理解, 我们是 需要一个拥有ipv6公网ip的服务器 才能实现以上操作.
购买拥有ipv6公网ip的服务器, 推荐是Vultr, 可以支付宝支付(支付宝不能享受活动优惠), 每个月免费2TB+2TB(每月每一小时增加3G额度)的流量, 不限速(亲测可以跑满贝壳的校园网). 一般的价格是5$每月起步, 如果对于服务器本身还有其他用途的建议买6$每月的新款cpu的服务器(旧款的太卡了, 不过跑个代理没问题). 题外话, vultr底价是2.5$起步, 流量额度更低, 服务器只有美国纽约的, 延迟会更高, 不过还是挺划算的.
Vultr的服务器也有一定弊端, 国外的服务器延迟较大, 我的日本东京服务器大概130ms左右的延迟.
对于延迟比较敏感的可以选择腾讯云
(不要买 轻量 服务器, 不支持ipv6 )
腾讯云的ipv6公网ip可以免费 试用
阿里云的ipv6公网ip要购买, 价格不便宜, 流量费比大多数校园网收费还贵, 就没意义了.
只是跑跑视频, 下载点资源就不用在意延迟了, 正常使用完全不影响的, 感受不出来.
开始正式教程
推荐使用CentOS7系统
可以避免环境问题, 尤其是shadowsocks运行时因为python版本可能产生的报错.
CentO7自带的python2环境可以完美运行, 如果你的服务器系统使用python3环境, 会导致运行时报错, 解决方案可以参考:
shadowsocks サーバをPython3.10環境下で動かすメモ #Python3.10 - Qiita
服务器软件安装与配置
以下开始, 默认你已经拥有了一台有ipv6公网ip的服务器, 现在开始服务器的部署
使用ssh连接到服务器, 安装依赖的软件:
wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh
赋予执行权限:
chmod +x shadowsocks.sh
运行安装脚本并输出log: 注意安装过程中会有加密方式的选择, 请选择“aes-256-gcm”, 你可能在其他教程里看到是选择“aes-256-cfb”, 但是这个加密方案已经在新版shadowsocks中遗弃了, 采用gcm更为安全与妥当.
./shadowsocks.sh 2>&1 | tee shadowsocks.log
编辑/etc/shadowsocks.json配置文件:
vim /etc/shadowsocks.json
注意将文件第一行改成“::”
, 以启用ipv6代理:
{
"server":"::",
"server_port":2233,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"yourpassword",
"timeout":300,
"method":"aes-256-gcm",
"fast_open": false
}
如果你想要设置多端口分别对应多用户, 如下:
{
"server":"::",
"local_address":"127.0.0.1",
"local_port":1080,
"port_password": {
"2233": "password1",
"6666": "password2",
"8989": "password3"
}
"timeout":300,
"method":"aes-256-gcm",
"fast_open": false
}
保存编辑后重启shadowsocks服务即可
/etc/init.d/shadowsocks restart
(如果这一步shadowsocks运行失败, 请确认服务器的python环境是否是python2版本, 如果是python3版本, 请参考:
shadowsocks サーバをPython3.10環境下で動かすメモ #Python3.10 - Qiita)
服务器防火墙开放端口
服务器端shawodsocks运行后, 尝试使用telnet之类的工具, 在本地电脑上测试一下服务器端口是否开放:
telnet [ipv6地址] 2233
或者可以用一些在线工具来测试:
IPV6版_在线tcping_tcp延迟测试_持续ping_禁ping_tcping_端口延迟测试:(itdog.cn)
如果无法ping通, 说明系统或者服务器租赁平台存在防火墙, 请先去平台上将防火墙关闭, 或者配置好规则.
如果是Vultr平台的服务器, 默认是不开启平台防火墙规则的, 但是服务器系统可能默认开启了防火墙.
如果是CentOS系统, 可以参考以下开放端口:
-
查看防火墙状态
firewall-cmd --state
-
开启特定端口
firewall-cmd --zone=public --add-port=2233/tcp --permanent
-
重启防火墙以启用刚才的配置
systemctl restart firewalld.service
最后再ping下端口, 确认是否成功了.
如果成功了, 那么服务器端的配置就完成了, 接下来在本地设备上安装相应的客户端使用即可.
客户端连接配置
然后就是配置本地设备的客户端程序, 具体可以看:
GitHub - Moohi/ipv6config: 科学上网方法...
客户端下载地址可以参考:
Shadowsocks 各平台设备客户端软件备用下载地址 | Shadowsocks (shadowsockshelp.github.io)

如果需要实现全局代理可以参考:
Shadowsocks 配合 Proxifier 實現客戶端代理 | Shadowsocks (shadowsockshelp.github.io)