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 結果,未經驗證)

注意:每次重啟後都需要執行上述路由配置,或者自行查找永久配置方法,但不建議筆記本永久配置。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。