前言
国内部分高校,强制学生使用教育网(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与关闭防火墙
如果设置页面没这些选项 很可能是使用的普通密码 没有进入到可以设置的后台 可以再搜索相关内容进一步处理
在光猫处取得ipv6后,需要到路由器处检查是否也开启ipv6选项,我这里是华硕路由器,举例说明:
- 浏览器输入 http://router.asus.com ,输入登录华硕路由器的账号和密码,进入浏览器后台。
- 在华硕路由器登录页面点击[高级设置]>[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后发现海阔天空。
- 通过SSH连接到服务器
- 更新Repository,即在命令行运行指令
sudo apt update
sudo apt upgrade
- 编写配置文件
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退出。
- 防火墙放行你的端口
查看防火墙是否启用,以Ubuntu的ufw为例说明
运行
sudo systemctl status ufw
查看防火墙是否启用,若启用,则对shadowsocks-libev端口放行
sudo ufw allow 14203
这里的14203需要换成你的设置的server_port端口号
- 开启该服务,运行
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
解压后打开
若没有显示图片 请尝试直接点击图片链接
https://www.jcy1998.com/wp-content/uploads/2022/11/ss.jpg
需要设置四个参数
- 在1处填写你的服务器地址,即家庭宽带的服务器的ipv6地址,我这里是家中树莓派的ipv6地址
- 在2处填写你之前设置的server_port,我的是14203
- 在3处设置密码,为之前password你设置的密码
- 在4处选择加密方式,我这里是
aes-256-gcm
,如修改则按修改后填写,之后点击确定即可
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的配置文件,这里我以默认文件写了一份极简的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的三个选项
第一个选项是勾选ipv6,若不勾选则ipv6代理无法使用
第二个是沟通allow lan,这是允许局域网内的代理访问,可用于switch或ps5使用该代理免流
第三个是system proxy,是启用clash作为代理
最后就是start with windows,看个人是否想要开机自启动,自行开启
之后再任务栏右下方clash右击即可选择代理了,我们配置文件只有global和家宽的一个节点,选择起来非常简单。要按照规则(rule)分流请自行查阅相关教程,实现后可以将知网(cnki),webofscience等网站不走代理,实现不切换direct的直接访问。
之后通过在百度搜索ip,查看是否为你家宽的ip即可确认代理是否成功。
- 开启tun模式
详细说明按照教程 https://docs.cfw.lbyczf.com/contents/tun.html#windows 进行开启
简要说明即2步
- 点击
General
中Service Mode
右边Manage
,在打开窗口中安装服务模式,安装完成应用会自动重启,Service Mode
右边地球图标变为绿色即安装成功 - 点击
General
中TUN Mode
右边开关启动TUN
模式
举例说明百度网盘使用:在设置-传输-其他设置选择使用系统代理
如图填写
之后下载文件即可,可以通过任务管理器网络使用确认网盘下载是否已经通过代理。
如若网盘完全走了代理,则任务管理器百度网盘速度基本为0,而clash的速度基本与网盘客户端内下载速度一致。
clash的tun模式的使用,是最近的一点想法和尝试,但是最近没有在校园网环境下,并没有在实际计费系统下测试,仅作为一个想法和大家分享,谢谢!
帅啊,老哥。