この文は Mix Space によって xLog に同期更新されています
最適なブラウジング体験を得るために、元のリンクを訪問することをお勧めします
https://www.do1e.cn/posts/citelab/connecting-campus-network-servers-via-zerotier
前言#
前段階でサーバーを移転し、キャンパスネットワークの環境から出ましたが、実験室の GPU サーバーはまだキャンパスネットワークの環境内にあり、直接接続できず、学校の VPN を使用しなければアクセスできません。
しかし、学校の公式 VPN の体験が非常に悪いことは周知の事実であるため、自分でオープンソースツールを使って、グループ内で使用するためのソリューションを実現しようと考えました。
そこで、 zerotier を使用して仮想 LAN を構築することを思いつきました(具体的な原理についてはここでは詳述しませんが、仮想 LAN に参加した後、デバイス同士が同じ LAN にいなくても、仮想 LAN IP を介して P2P 接続が可能であり、非常に良い体験が得られます)。
しかし、実験室のサーバーは一般的にインターネットに接続されていないため、サーバーを zerotier に直接接続することはできず、他のソリューションを探る必要があります。
以下は私の完全な解決策です。
自建 zerotier planet#
この部分は、以下の Github リポジトリを参考にして完成しましたので、ここでは詳細には触れません。
その README に従って planet サーバーを構築した後、ネットワークに参加したすべてのマシンが相互にアクセスできるようになりますが、前述のように、実験室のサーバーは直接接続できないため、別のマシンを使用して転送する必要があります。
zerotier の転送#
ちょうど校内に自分用のサーバー(以下、転送サーバーと呼びます)があり、私のホームページなどのサービスはすべてそこに運営されています。私はそれを仮想 LAN に参加させ、サーバーとの接続トラフィックを転送させることができます。
転送サーバーの校内 IP が 172.26.1.2
で、仮想 LAN 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 の結果、未検証)
注意:再起動するたびに上記のルート設定を実行する必要があります。また、永続的な設定方法を自分で調べることをお勧めしますが、ノートパソコンに永続的に設定することはお勧めしません。