通过ipv6代理方式,构建流量计费校园网下免流的一个简易教程

前言

国内部分高校,强制学生使用教育网(Cernet),并采取流量计费模式,这为学生使用校园网制造了一些困难。但是由于早年的政策,使用ipv6方式的流量并不在计费范围中,这为我们合理利用校园网提供了一个环境。特在此总结一下这几年的一些心得体会,因为我马上就要离开校园网环境了,之后应该就彻底不会在这部分折腾了。

原理介绍

因为在校园网流量计费环境下使用ipv6的数据包是不在计费范围中的,所以我们的目标是要将所有的(ipv4/ipv6)流量全部转化为ipv6流量。为了实现这个目的,就需要引入一个代理服务器。所谓代理

代理(英语:Proxy)也称网络代理,是一种特殊的网络服务,允许一个终端(一般为客户端)通过这个服务与另一个终端(一般为服务器)进行非直接的连接。
代理
[图解:左边和右边的电脑在通讯时候,需要经过中间的电脑中转,而中间的那部电脑就是代理服务器。]

到本应用场景中,具体如图所示
本文应用代理

这里想要插一句题外话,就是为什么在图片右半部分是ipv4/ipv6?
这里就要涉及到同学们的一个尝试:有的同学知道了ipv6访问不要流量后,就会把网路适配器设置中的ipv4部分关闭,试图只留下ipv6以达到全部免流的目的。但往往发现这样会有诸多网站不能访问,诸多基于网络的应用无法正常运行。其原因是:很多网站并没有提供ipv6的访问方式,这样你使用ipv6便无法与其通信,所以在此我们的代理服务器必须同时支持ipv4和ipv6。回到本应用中,像vultr的纯ipv6的虚拟主机(VPS)无法应用于此场景(后话)。
简而言之,就是我们的ipv4和ipv6的流量全部由一个不在校园网内的服务器代理转发了,而我们与这个服务器仅通过ipv6通信,从而可以达到免流目的。

所需工具

  • 支持ipv6的家庭宽带
  • 一台可以全天开机的服务设备
    • 24小时开机的linux服务器最优
    • 可以24小时开机的windows电脑也可以
    • 在路由器内置功能里进行操作还未尝试 应该可行
    • 我使用的是树莓派4b
  • 服务端和客户端的软件

操作步骤

1. 开启家庭宽带的ipv6

请先测试家宽是否已开启ipv6:
http://test-ipv6.roedu.net/
如果已开启,可以看到自己的ipv6地址,

你的公网 IPv6 地址是 240e:340:****:3c3b:fda5:cafd:****:****

其中*号为保护个人隐私而屏蔽的,实际应该为十六进制数
如果已有ipv6地址,就不用进行下面的尝试了,下面是没有ipv6情况下尝试开启ipv6的方法
我这里使用的是电信宽带,以其为例
使用超级密码(管理员权限)进入光猫后台后 开启ipv6与关闭防火墙
光猫后台1.png
光猫后台2.png
如果设置页面没这些选项 很可能是使用的普通密码 没有进入到可以设置的后台 可以再搜索相关内容进一步处理
在光猫处取得ipv6后,需要到路由器处检查是否也开启ipv6选项,我这里是华硕路由器,举例说明:

  1. 浏览器输入 http://router.asus.com ,输入登录华硕路由器的账号和密码,进入浏览器后台。
  2. 在华硕路由器登录页面点击[高级设置]>[IPv6],[联机类型]请按照网络运营商提供的信息进行设置。
    • 当您的外部网络(WAN) > 互联网连接 >WAN联机类型为 [PPPoE], 在IPv6联机类型请选择 [Native]
    • 当您的外部网络(WAN) > 互联网连接 >WAN联机类型为 [动态IP], 在IPv6联机类型请选择 [Passthrough]
      -当您的外部网络(WAN) > 互联网连接 >WAN联机类型为 [静态IP], 在IPv6联机类型请选择 [静态 IPv6]
      注意: 外部网络(WAN) > 互联网连接 > WAN联机类型一定要先设置。
      一般是Native或Passthrough即可,应用后尝试验证ipv6,不对换另一种就行。我这里选取native时树莓派常常掉ipv6,选取Passthrough后一切正常,这个不大清楚,在光猫开启ipv6来回试即可。具体随设备不同而改变,具体还需自行查阅相关教程。

2. 安装代理服务端

这里以树莓派为例,ubuntu和debian可以直接直接参考本部分,服务端采用shadowsocks-libev
这里不建议使用pip安装的shadowsocks,多年没有更新且pip安装时容易遇到各种bug,之前深受其害,最近尝试安装shadowsocks-libev后发现海阔天空。

  1. 通过SSH连接到服务器
  2. 更新Repository,即在命令行运行指令
    sudo apt update
    sudo apt upgrade
  1. 编写配置文件
    sudo nano /etc/shadowsocks-libev/config.json

说明一下 在这里sudo是以管理员权限运行,nano是文本编辑器,/etc/shadowsocks-libev/config.json是在'/etc/shadowsocks-libev'文件夹下创建一个名字为'config.json'的配置文件
在文本编辑状态写入:

{
    "server":["::", "0.0.0.0"],
    "mode":"tcp_and_udp",
    "server_port":14203,
    "local_port":1084,
    "password":"passwordpassword",
    "timeout":86400,
    "method":"aes-256-gcm"
}

进行说明:

  • 第一行的server,说明本代理服务端监听那里来的流量,第一个::说明监听所有来自ipv6的流量,第二个0.0.0.0说明是监听所有来自ipv4的流量,这一行不用修改即可
  • 第二行的mode,说明本服务端监听tcp_and_udp的流量,不用修改
  • 第三行的server_port,说明服务端监听的端口是14203,这个可以随自己设置,但注意不要设置到22、443等特殊端口,一般四五位数随便输入一个即可。这里简要说明一下端口的性质:电脑在通信时是用ip地址加端口通信的,如果只使用ip,则通过ip可以找到你的位置,但是不能确定数据是要发给那个应用。因而设计出不同应用监听不同端口的模式,当我们发送到服务端的ip+14203端口时,首先通过ip知道数据包发给那个服务器,然后通过端口14203明白这个数据包是发给shadowsocks-libev应用的,从而完成信息的发送与接收
  • 第四行的local_port,在服务端没啥用,原样不动即可
  • 第五行的password,是你设置连接服务端的密码,需要自行设置,请在双引号内修改
  • 第六行的timeout,不用改
  • 第七行的method,为加密方式,一般来说aes-256-gcm即可,不用修改,有兴趣请自行查阅资料。
    之后ctrl+o保存再ctrl+x退出。
  1. 防火墙放行你的端口
    查看防火墙是否启用,以Ubuntu的ufw为例说明
    运行
sudo systemctl status ufw

查看防火墙是否启用,若启用,则对shadowsocks-libev端口放行

sudo ufw allow 14203

这里的14203需要换成你的设置的server_port端口号

  1. 开启该服务,运行
sudo service shadowsocks-libev restart

已默认开启,故restart
确认是否已开启

ps ax | grep ss-server

若启动则返回类似于

1497988 ?        Ss     0:03 /usr/bin/ss-server -c /etc/shadowsocks-libev/config.json
1498262 pts/0    S+     0:00 grep --color=auto ss-server

则安装完成

3. 安装代理客户端

客户端是在学校环境使用的部分,要安装在校内设备上,以windows为例,提供两种客户端以说明其具体使用。
首先是shadowsocks:
https://www.jcy1998.com/downloadFile/Shadowsocks-4.1.10.0.zip
下载后解压即可
github链接:https://github.com/shadowsocks/shadowsocks-windows/releases
解压后打开
shadowsocks配置
若没有显示图片 请尝试直接点击图片链接

https://www.jcy1998.com/wp-content/uploads/2022/11/ss.jpg

需要设置四个参数

  • 在1处填写你的服务器地址,即家庭宽带的服务器的ipv6地址,我这里是家中树莓派的ipv6地址
  • 在2处填写你之前设置的server_port,我的是14203
  • 在3处设置密码,为之前password你设置的密码
  • 在4处选择加密方式,我这里是aes-256-gcm,如修改则按修改后填写,之后点击确定即可

shadowsocks打开配置

https://www.jcy1998.com/wp-content/uploads/2022/12/ss2.png

确定后在任务栏右下方,右键小飞机标识,选择系统代理-全局模式即完成。
可以通过百度当前ip地址,验证是否为家中的位置以确认方法是否生效

但是该方法主要用于浏览网页或是一系列基于http的代理,如果要应用于百度网盘应用的下载环境还是不能直接免流,传统的方案是shadowsocks+proxifier相搭配的处理方法,但我这里并不好用,只附上proxifier的官网链接,有兴趣的可以自行尝试探索。
https://www.proxifier.com/ 激活序列号百度就有,不必购买

4. clash的使用

但是前一阵使用clash作为客户端,发现clash-windows有一个tun mode,其功能如下

对于不遵循系统代理的软件,TUN 模式可以接管其流量并交由 CFW 处理,在 Windows 中,TUN 模式性能比 TAP 模式好
https://docs.cfw.lbyczf.com/contents/tun.html#windows (使用说明)

下面是clash的下载链接:
https://github.com/Fndroid/clash_for_windows_pkg/releases
请选择对应版本的客户端,windows下选取类似于Clash.for.Windows-0.20.9-win.7z的版本下载解压
这里附上一个:https://www.jcy1998.com/downloadFile/Clash.for.Windows-0.20.9-win.7z
并按照 https://docs.cfw.lbyczf.com/contents/quickstart.html#%E5%90%AF%E5%8A%A8 进行安装测试

  • 简要说明流程
    首先点击Profiles中的config.yaml右侧的<>,删除全部内容后,复制下方自己修改后的配置文件保存。
    clash默认配置文件修改

  • 关于clash的配置文件
    在添加你代理节点时,需要填写clash的配置文件,这里我以默认文件写了一份极简的yaml文件,基本使用只需要把shadowsocks-libev的设置参数填写进去,复杂使用请查阅使用手册。

#---------------------------------------------------#
## 配置文件需要放置在 $HOME/.config/clash/*.yaml

## 这份文件是clashX的基础配置文件,请尽量新建配置文件进行修改。
## !!!只有这份文件的端口设置会随ClashX启动生效

## 如果您不知道如何操作,请参阅 官方Github文档 https://github.com/Dreamacro/clash/blob/dev/README.md
#---------------------------------------------------#

# (HTTP and SOCKS5 in one port)
mixed-port: 7890
# RESTful API for clash
#external-controller:  127.0.0.1:9090
allow-lan: true
ipv6: true
mode: rule
log-level: warning

proxies:
- name: "yourname"               # 软件显示的节点名字 可自行任意修改 注意冒号后空格 如下也是
  type: ss                                  # 代理类型
  server: 240e:443:6c18:4cdd:91d2:8239:****:****                     # 服务器IP 修改你服务端的ip
  port: 14203                              #  端口号 修改为你设置的端口
  cipher: aes-256-gcm  # 加密方法 默认不修改
  password: "yourpassword"                # SS密码 修改为你设置的密码
  udp: true

proxy-groups:

dns:
   ipv6: true
rules:
  - DOMAIN-SUFFIX,google.com,DIRECT
  - DOMAIN-KEYWORD,google,DIRECT
  - DOMAIN,google.com,DIRECT
  - DOMAIN-SUFFIX,ad.com,REJECT
  - GEOIP,CN,DIRECT
  - MATCH,DIRECT

之后开启clash的三个选项
clash设置
第一个选项是勾选ipv6,若不勾选则ipv6代理无法使用
第二个是沟通allow lan,这是允许局域网内的代理访问,可用于switch或ps5使用该代理免流
第三个是system proxy,是启用clash作为代理
最后就是start with windows,看个人是否想要开机自启动,自行开启

之后再任务栏右下方clash右击即可选择代理了,我们配置文件只有global和家宽的一个节点,选择起来非常简单。要按照规则(rule)分流请自行查阅相关教程,实现后可以将知网(cnki),webofscience等网站不走代理,实现不切换direct的直接访问。
clash-global设置
之后通过在百度搜索ip,查看是否为你家宽的ip即可确认代理是否成功。

  1. 点击GeneralService Mode右边Manage,在打开窗口中安装服务模式,安装完成应用会自动重启,Service Mode 右边地球图标变为绿色即安装成功
  2. 点击GeneralTUN Mode右边开关启动 TUN 模式

举例说明百度网盘使用:在设置-传输-其他设置选择使用系统代理
如图填写
网盘代理设置
之后下载文件即可,可以通过任务管理器网络使用确认网盘下载是否已经通过代理。
网盘-任务管理器
如若网盘完全走了代理,则任务管理器百度网盘速度基本为0,而clash的速度基本与网盘客户端内下载速度一致。
clash的tun模式的使用,是最近的一点想法和尝试,但是最近没有在校园网环境下,并没有在实际计费系统下测试,仅作为一个想法和大家分享,谢谢!

发表评论