此文由 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.101
到 114.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 結果,未經驗證)
注意:每次重啟後都需要執行上述路由配置,或者自行查找永久配置方法,但不建議筆記本永久配置。