オフィスに新たにミニPCを入手し、環境構築を兼ねて便利に考えたのですが、自宅でも時折アクセスする必要があるため、一時的に社内ネットワークのトンネリングを実施することになりました。これまでの経験から、frp
サービスをデプロイしてポートフォワーディングを設定する方法を選びましたが、その品質は公開サーバーの帯域幅に依存します。少しばかり新鮮なZerotier
仮想マシンによるローカルエリアネットワーク(LAN)を試してみることにしました。これはVPN
と似ており、ローカルで仮想ネットワークインターフェースを作成し、すべてのマシンを1つの仮想ネットワークに参加させます。
Zerotierとは
ZeroTier
は、ソフトウェア定義の広域ネットワーク(SD-WAN)ソリューションであり、異なる地理的な場所にあるデバイス間で安全な仮想ネットワークを作成することを可能にします。 ZeroTier
を使用すると、複数のコンピューター、サーバー、およびデバイスを、あたかも同じローカルネットワーク上にいるかのように、一元的に暗号化された仮想ネットワークに接続できます。これにより、開発者やIT専門家は、複雑なネットワーク設定やVPN構成なしで、異なる場所間で安全にデータを共有し、リソースを共有することができます。
-
ZeroTierネットワーク: ZeroTierネットワークは、異なるデバイスがインターネット経由で互いに接続されることを可能にする、仮想的かつグローバルなローカルエリアネットワーク(LAN)です。このネットワークには複数のサブネットを含めることができ、すべてのデバイスはZeroTierの技術を使用して相互に接続されます。
-
惑星サーバー: 惑星サーバーは、ZeroTierネットワークの中核コンポーネントであり、その一元的なトポロジー構造、ルーティング情報、およびネットワーク状態を維持・管理します。惑星サーバーはグローバルなネットワーク制御センターとして機能しますが、直接データを転送しません。ユーザーのデバイスは、少なくとも1つの惑星サーバーに接続してZeroTierネットワークに参加する必要があります。
-
中継サーバー: 中継サーバーは、ZeroTierネットワーク内の補助的なノードであり、デバイス間の直接通信チャネルを確立するのを支援します。デバイスが直接接続できない場合、データ転送のために中継サーバーを経由することができます。これにより、ネットワークの到達性とパフォーマンスが向上します。中継サーバーは通常、世界中に配置され、データの転送ハブとして機能します。
全体として、ZeroTierは惑星サーバーと中継サーバーの支援により、デバイスがグローバル範囲で仮想LANを作成し、安全かつ高速なデバイス間の通信を実現します。惑星サーバーはグローバルネットワーク管理を担当し、中継サーバーは必要に応じてデバイス間の接続を確立するのに役立ちます。
インストールと展開
- https://www.zerotier.com/ の公式ウェブサイトにアクセスし、インストールファイルおよびドキュメントを入手してください。
- お使いのオペレーティングシステムに応じて、ZeroTier One クライアントをダウンロードしてインストールします。Windows、macOS、Linux など、多くのプラットフォームに対応しています。
- インストールが完了したら、ZeroTier One クライアントを起動します。
- まだアカウントをお持ちでない場合は、ZeroTier アカウントを作成します。クライアント内でアカウントを作成できます。
- ZeroTier アカウントにログインし、新しいネットワークを作成します。ネットワークには一意の16桁IDが割り当てられ、これを覚えておく必要があります。
- デバイスをこのネットワークに参加させます。クライアントでネットワークIDを入力するか、QRコードスキャン機能を使用します。
- ZeroTier クライアントのインストールおよび設定されたデバイスは、同じ仮想ネットワークに追加されます。これらのデバイス間では、現在、ローカルネットワークにあるかのように直接通信できるようになります。
- ZeroTier のコントロールパネルで、ネットワーク設定を管理したり、デバイスを追加したり、ネットワークトラフィックを監視したりできます。
moon のインストールとデプロイ
国内の多くのキャリアが UDP トンネリングを禁止しているため、frp
サービスは安定しており、TCP プロトコルを使用するため、Zerotier
の中継サーバーも同様の効果を実現できます。ファイアウォールで UDP 9993 を開通する必要があります。
curl -s https://install.zerotier.com/ | sudo bash
インストールが成功したか確認する
zerotier-cli info
ローカルネットワークへの参加
zerotier-cli join network-id
moon
の作成
cd /var/lib/zerotier-one && sudo zerotier-idtool initmoon identity.public > moon.json
stableEndpoints
ノードを調整するために構成ファイルを開き、“サーバーのパブリック IP アドレス/9993” を設定します。署名構成を生成し、moons.d
フォルダを作成し、既存のファイルをこのフォルダに移動してサービスを再起動します。
sudo zerotier-idtool genmoon moon.json
mkdir moons.d && mv 000000eb444ec0d8.moon moons.d/
systemctl restart zerotier-one.service
クライアントノードが moon
サーバーに参加し、ID は前の JSON 設定ファイル内の ID フィールドから取得します。
zerotier-cli.bat orbit ztaddr ztaddr
確認: 新しい moon ノードが作成され、ID と情報はサーバー構成と同じであることを確認してください。
# 新規 moon 节点の出現を確認し、ID と情報がサーバー設定と一致することを確認します
[root@idv-36f9d5 ~]# zerotier-cli listpeers
200 listpeers <ztaddr> <path> <latency> <version> <role>
200 listpeers 0cccb***** 35.236.*.*/64393;110;10726 327 1.6.3 LEAF
200 listpeers 3a46f***** 185.180.*.*/9993;110;757 -1 - PLANET
200 listpeers 3ed7c***** 39.97.*.*/9993;172;79 32 1.6.3 MOON
200 listpeers 4f838***** - -1 - LEAF
200 listpeers 62f86***** 50.7.*.*/9993;110;4796 351 - PLANET
200 listpeers 778cd***** 103.195.*.*/9993;5148;4887 253 - PLANET
200 listpeers 992fc***** 195.181.*.*/9993;10161;4921 226 - PLANET
200 listpeers 9d2b5***** - -1 - LEAF
- Windows プラットフォームでは、管理者権限でターミナルを起動し、
zerotier-cli.bat
コマンドラインを使用して操作します。Linux プラットフォームでは、zerotier-cli
コマンドラインを使用して操作します。listpeers
サブコマンドは正常に moon 节点を表示するため、参加が成功したことを示しています。
卸载方法
Windowsプラットフォームの卸載方法は後述します。通常の操作手順に従い、コントロールパネルからアンインストールしてください。ここではUbuntuについて詳しく説明します。
- dpkgコマンドでzerotier-oneサービスを削除する
sudo dpkg -P zerotier-one
- zerotier-oneフォルダを削除する。このフォルダにはaddressアドレスが保存されており、削除後に再インストールを行うと新しいaddressアドレスを取得します。
sudo rm -rf /var/lib/zerotier-one/
跋談
元々は既にアンインストールされていたものが、サーバーが到着し、適切なプロキシノードが存在しないため、阿里云が営業活動を行い、開発用特供サーバーを提供しました。構成は高くなく、1999年、価格も手頃で、2年間運用しました。主な理由はサーバーから提供される帯域幅でした。