Do1e

Do1e

github
email

通过Zerotier实现校园网内服务器的虚拟局域网连接

此文由 Mix Space 同步更新至 xLog
为获得最佳浏览体验,建议访问原始链接
https://www.do1e.cn/posts/citelab/connecting-campus-network-servers-via-zerotier


前言#

前段时间服务器搬迁,搬出了校园网的环境,但是实验室的 GPU 服务器还在校园网环境内,导致无法直连,必须使用学校的 VPN 才能访问。
但众所周知,学校的官方 VPN 体验巨差,因此想着自己用开源工具实现一个组内自用的方案。

于是就想到使用 zerotier 组一个虚拟局域网(具体原理不在此赘述了,你只需要知道加入虚拟局域网后,设备之间即使不在同一个局域网下,也能通过虚拟局域网 IP 实现 P2P 连接,具有很好的体验)。
但是实验室中的服务器一般不会连接到互联网上,因此并不能直接把服务器接入到 zerotier 中,只能探索其他方案了。

以下是我的完整解决方案。

自建 zerotier planet#

这一部分我是完成参考的下述 Github 仓库,在此也不做过多赘述。

按照其 README 搭建好 planet 服务器后,所有加入网络的机器之间就可以相互访问了,但是正如前言中所述,实验室的服务不能直接接入其中,需要使用另一台机器转发。

zerotier 的转发#

正好我在校内有一台自用的服务器(下文中将其成为转发服务器),我的主页等等服务均运行在上面。我可以将它加入到虚拟局域网,并让它帮我转发与服务器连接的流量即可。

假设转发服务器有校内 IP 172.26.1.2 和虚拟局域网 IP 10.11.1.2,实验室服务器均为校内 IP 114.212.1.101114.212.1.105

首先进入上述配置好的 zerotier planet 后台,将转发服务器的 Active bridge 勾选上,才能允许其转发流量。

转发服务器的配置#

首先需要开启转发功能,标记 /etc/sysctl.conf 文件,将 net.ipv4.ip_forward 修改为 1,没有的话加一行,接着运行下述命令

sudo sysctl -p # 转发配置立即生效
# 配置转发
PHY_IFACE=enp5s0     # 根据网卡自行修改
ZT_IFACE=ztlowm7c2d  # 根据网卡自行修改

iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT

上述 iptables 重启后会失效,可以自行搜索永久配置方法。

客户端配置#

虽然可以在 zerotier planet 后台配置 routes,填写Target=114.212.0.0/16, Gateway=10.11.1.2,让客户端自行下载相关路由表,将发送到实验室服务器的流量发送到转发服务器上。
但由于114.212.0.0/16是公网 IP 的范围,zerotier 并不会下发这个路由。(其他的内网 IP 端,比如172.26.0.0/16是可行的)。

因此还需要每个客户端自行添加相关的路由。这一步也是我卡了很久的地方,具体方法如下:

Windows

首先运行route print,找到 ZeroTier Virtual Port 对应的编号,如下述示例为 11。

> route print
Interface List
  5...xx xx xx xx xx xx ......Microsoft Wi-Fi Direct Virtual Adapter
  3...xx xx xx xx xx xx ......MediaTek Wi-Fi 6E MT7922 (RZ616) 160MHz Wireless LAN Card
 11...xx xx xx xx xx xx ......ZeroTier Virtual Port

接着运行route add 114.212.0.0 mask 255.255.0.0 10.128.3.4 if {No} metric 1(请将 {No} 替换为前面得到的编号)

Linux

首先运行ifconfig,查看 ZeroTier 对应的接口,一般为 zt 开头

接着运行sudo ip route add 114.212.0.0/16 via 10.128.3.4 dev {Interface} metric 1(请将 {Interface} 替换为前面得到的接口名称)

MacOS

route add -net 114.212.0.0/16 10.128.3.4 -hopcount 1(AI 结果,未经验证)

注意:每次重启后都需要执行上述路由配,或者自行查找永久配置方法,但不建议笔记本永久配置。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。