前言
校园网可以看作是一个巨大的内网,而理论上内网的网速是可以跑满带宽极限的。因此可以通过校园网内两个设备互联,达到远程桌面、传输文件、甚至是搭建一个自己的Web小服务的效果。但是理想很丰满,现实很骨感。也正是由于内网连接速度快、设备配置的安全设置又不够严密,各类通过内网传输的病毒已经造成了很多现实损失(例如有的学校校园网内设备大量感染勒索病毒,学生辛苦写的稿件、毕业论文也被加密)。为了严防这一情况发生,很多学校(包括笔者的学校)都采取了简单有效的“一刀切”方法:即直接封锁Ping、文件共享、远程桌面等常用的端口(80,443时而能访问时而不能)。
那么有没有办法进行互联呢?答案是有的,只不过需要通过其他手段来实现了。在这里,我们提供两种方法,一是IPV6直连,二是通过内网穿透工具进行连接。
需要注意,这两种方法都会使你的计算机增加一定的安全风险,各个学校的校园网环境又大相径庭。因此笔者不保证本教程的适用性,也不担保本教程中所有操作的安全性。
IPV6直连
这是最接近内网访问的方法。很多学校校园网的IPV4是插上网线即分配IP,但是在认证后才可以上网,但是IPV6则是原生方式,插上网线就分配IP且可以直接访问网络(因此可以通过禁用IPV4的方法白嫖IPV6)。目前教育网IPV6的使用量远远不及IPV4,因此即使是相隔非常远的两台教育网IPV6设备,其互联速度也可以跑满带宽极限(经常使用校园网PT站的朋友肯定了解这一点)。因此我们只需要像内网连接一样使用就可以了。(但是其实是有一定区别的,即使两台设备在同一接入点下,网络流量还是可能会从公网的路由器上途经,这取决于学校、教育网的骨干网路由表。但是由于教育网IPV6的使用率很低很低,所以即使流量绕了一大圈,网络质量也不会有明显的下降。)
所以你现在可以直接将两台设备接入校园网,检查是否正确获取了IPV6地址。
未获取IPV6地址的情况
如果你查看到了IPV6地址,那么请直接跳过这一节。 如果你并没有获取到IPV6地址,那么你可以通过以下几种方式尝试自救:
- 确认自己学校是否提供IPV6服务或自己所在区域是否提供IPV6访问。
- 确认你设备的上级设备没有屏蔽掉IPV6连接,比如路由器太过陈旧不支持IPV6,或是未正确启用IPV6功能。(笔者使用的路由器为Openwrt系统,后续可能会单独撰写一篇IPV6穿透的教程。)
禁用临时IPV6地址
由于IPV6的地址池太大了,大到理论上可以给地球上所有的沙子都分配一个地址,因此少了一个动态IP分配的理由。所以很多IPV6的DHCP服务器都被配置为给每一个接入设备都根据MAC分配一个永久(或租期超长)的IPV6地址(比如很多校园网)。这样方便我们一直使用一个地址连接,省得动态IP变来变去的不好连接。
但是微软一想,IPV6没有NAT帮你拦着,你的公网IP一直不变好像不太安全,因此在Windows系统中提供了一个默认开启的临时IPV6地址的功能。这个功能开启后,你的系统会自动再申请一个动态IPV6地址并且随时间流逝还会自动再申请第二个第三个,在你通过IPV6访问其他设备时,会默认通过临时IPV6地址访问。这能有效避免你的设备被暴露在公网的时间,但是这并不有助于我们自己的设备互相连接,因此我们需要禁用这一功能。需要注意:禁用这一功能势必会带来一定的安全风险。不禁用这一功能也是可以使用IPV6直连实现远程桌面、文件共享的,但是你需要随时知道你意图连接的设备的地址。
你可以在使用管理员权限打开CMD后,通过执行下面的命令禁用临时IPV6地址:
1
netsh interface ipv6 set privacy state=disable
随后在控制面板
-网络和共享中心
-更改适配器设置
中禁用再启用你正在使用的网卡即可。即使是WIN11,任务栏自带的搜索功能或者小娜可以轻松找到控制面板。
如果想要恢复的话,管理员权限CMD中执行:
1 netsh interface ipv6 set privacy state=enable随后重启网卡即可。
内网穿透
内网穿透的应用范围比IPV6直连更广泛一些。毕竟不是所有人都有IPV6地址,也不是所有的IPV6直连效果都令人满意。使用内网穿透可以一定程度上改善这一情况。不过需要指出的是,内网穿透的效果也取决于两台设备间路由路径的网络情况,如果存在中转的话,还需要考虑两台设备到中转服务器的网络质量。笔者通过手机的4G网络甚至可以跨地区访问校园网内的设备。
目前市面上存在很多内网穿透工具,本文使用的是默认不需要中转服务器的Zerotier。当然也有其他工具例如基于WireGuard的Tailscale、tinc、OmniEdge等,笔者后期也可能进行单独测试。这些工具的原理无外乎通过一个公网服务器向两个设备分别告知连接对方的可能路径,两个设备接到后同时朝对方发起测试连接,如果恰好通过NAT和防火墙握手成功,那么隧道便建立了,连接也就稳定了。需要注意:大部分这类工具是依赖于第三方服务器的,这可能会带来一定的安全风险及不稳定因素。
安装
访问Zerotier的官网,在你需要互相连接的设备上分别安装相应版本的Zerotier One,这一点不再赘述。
配置
你需要首先申请一个Zerotier账号,可能会让你选择套餐,选择个人免费的即可。
登陆后访问控制台,选择新建一个网络
。记下你的Network ID
,这是你的网络的唯一标识符。确保你的Access Control
选择的是Private
。
在两台设备的Zerotier客户端中选择加入网络,输入刚刚记下的Network ID
。这时候回到控制台,在Members
一栏中找到刚刚申请加入的终端,在其最前面的Auth?
打上对勾,稍等几分钟便可以访问了。
Openwrt中转设置
使用Openwrt中转Zerotier,可以直接将整个路由器的LAN网络并入Zerotier的虚拟子网。
首先在Openwrt的客户端中加入自己的网络,勾选启用
和自动允许客户端NAT
。
随后打开Zerotier的控制台,将路由器认证通过,记下为其分配的IP,假如为10.10.10.10。同时记录下路由器下LAN网络的网段,例如大部分路由器都是192.168.1.0。将其填入控制台Advanced
中Managed Routes
的Add Routes
,按照上述地址即为:
1
192.168.1.0/24 via 10.10.10.10
点击Submit
即可。
配置应用
在网络配置完成后,我们的应用就即将准备就绪了,但是还需要进行一些小小的准备工作。
调整防火墙设置
假设我有两台设备均已获得IPV6公网IP地址,设备A的地址为A::A,为连接发起端;设备B的地址为B::B,为连接接收端。
一般而言,防火墙对传入连接管理严格,而对传出连接并不作严格限制。(宁可我负天下人,不可天下人负我。)因此我们只需要调整接收连接方(对我来说就是设备B)的防火墙设置,而发起连接方的防火墙设置不需要配置。
首先打开控制面板
-Windows Defender 防火墙
-允许应用或功能通过 Windows Defender 防火墙
,在列表中找到远程桌面
,在专用和公用上都打上勾,点击确定。
当然,如果你之前接触过防火墙,也可以另外在控制面板
-Windows Defender 防火墙
-高级设置
-传入连接
中,找到远程桌面相关的三条规则(一般在最下面),将它们作用域
中远程IP地址
限制为连接发起方的IP地址(对于我的情况为A::A。),这可以提升安全性。
使用其他的应用
如果你不单单希望只实现一个远程桌面的功能,那么你可以参照以下方法开启其他应用的端口。
文件共享
比如你希望通过Windows下的SMB协议共享文件,那么你需要打开控制面板
-Windows Defender 防火墙
-高级设置
-传入连接
,在其中找到一条叫做文件和打印机共享(SMB-In)
的规则,有些时候可能会有两条相同名字的规则,那么你需要找到配置文件为专用,公用
的那条,右键打开属性,选择作用域,将远程IP地址
改为下列IP地址
,然后添加一条连接发起方的IP地址(对于我的情况为A::A。)。
Ping
假如你希望使用Ping来检测网络畅通程度,那么需要同样在传入连接
中找到一条名为文件和打印机共享(回显请求 - ICMPv6-In)
的规则,将其作用域
中远程IP地址
限制为连接发起方的IP地址(对于我的情况为A::A。)。
其他应用同样以此类推。尽量通过规定作用域为单个IP的规则来保障安全性。
对于内网穿透而言,它的虚拟网段可能会被自动划入本地子网。但是你可能仍然需要对防火墙进行上述配置。
启用应用
你还需要打开接收连接端的设备的远程桌面功能。对WIN11来说,设置
-系统
-远程桌面
,启用并勾选要求设备使用网络级别身份验证连接(推荐)
。
使用其他应用
这里仅给出一个文件共享的例子,大家自行参考。
文件共享
首先需要配置共享设置。在控制面板
-网络和共享中心
-更改高级共享设置
中,打开专用
和来宾和公用
中的启用文件和打印机共享
,在所有网络
中,选择使用128位加密帮助保护文件共享连接(推荐)
和有密码保护的共享
。
随后在需要共享的文件夹上右键,选择属性
-共享
,点击共享即可。
后言
可以实现类似效果的方法也有很多,比如可以通过更改应用默认端口直接使用内网连接、DDNS等等,但是由于种种原因,比如你的内网IP也是动态分配的等等,在本文中未进行讨论。笔者在这里也要再次提醒:不论使用何种方法进行直连或内网穿透,甚至是使用商业的远程桌面工具都会带来额外的安全问题。请在不使用时关闭这些端口、工具。另外,一定养成随时备份的习惯。 后续笔者可能会单独撰写一篇关于Windows自带的文件历史记录的使用教程。