banner
Leo

Leo的恒河沙

一个活跃于在珠三角和长三角的商业顾问/跨境电商专家/投资人/技术宅/骑行爱好者/两条边牧及一堆小野猫的王/已婚;欢迎订阅,日常更新经过我筛选的适合精读的文章,横跨商业经济情感技术等板块,总之就是我感兴趣的一切

2023-12-27-国内向けのリモートアクセス方法:自前のルートサーバーで ZeroTier 仮想内網を構築 - 少数派

国内向けのリモートアクセス方法:自作のルートサーバーで ZeroTier 仮想内網を構築 - 少数派#

#Omnivore

国内向けのリモートアクセス方法:自作のルートサーバーで ZeroTier 仮想内網を構築

多くのパブリッククラウド製品がダウンしている問題が発生し、ますます多くの人々がデータを保存するためにプライベートクラウドを選択し始めています。撮影した写真、ダウンロードしたドラマ、音楽や映画は、今や家庭の NAS デバイスやコンピュータに保存されています。これにより、公共のネットワーク環境に制約されることなく、いつでもどこでもこれらのデータにアクセスして使用することができます。時には、外部ネットワーク環境で家庭の NAS の資料やデータにアクセスする必要がありますが、現在の多くのソリューションは一定の柔軟性に欠けています。

さらに、休日が近づくにつれて、多くの友人が外出や帰省の計画を立てていることでしょう。家庭や会社のデバイスにアクセスする必要が生じるシーンや、サーバーに置いてあるファイルを一時的にダウンロードする必要があるかもしれませんし、住居の NAS に接続して友人や家族と一緒に自分のコレクションの映画や写真を観ることもあるでしょう。このような時、安定して信頼できるリモートアクセス能力がますます重要になります。

関連読書:

現在のリモートアクセスソリューション#

全体として、外部ネットワークから内部ネットワークにアクセスするサービスは大きく分けて 3 つのソリューションがあります:

  • 公開 IP + DDNS 解析を取得
  • トンネル貫通
  • 仮想 LAN を構築

image

DDNS を使用することは最も簡単なアクセス方法ですが、現在の実行可能性はますます低下しています。

もしあなたの家のブロードバンドが公開 IP を取得できるなら、DDNS を直接使用することは柔軟な解決策です。DDNS 解析とポートフォワーディングを設定するだけで、ドメイン名とポートを使って外部から内部ネットワークにマッピングされたサービスにアクセスできます。この設定は簡単で、速度は家庭の上り帯域幅に制約されます。しかし、このソリューションの実行可能性は徐々に低下しています。主な理由は、IPv4 アドレスの枯渇であり、国内のブロードバンドプロバイダーはもはや家庭ユーザーに公開 IP を割り当てておらず、多くの家庭用ブロードバンドの IP アドレスは内部ネットワークアドレスであり、動的アドレス解析が実現できず、外部からのアクセスがますます困難になっています。

image

frp は最も一般的な内部ネットワーク貫通ツールですが、クライアントの設定編集が複雑であることが主な難点です。

トンネル貫通ソリューションは、公開 IP を持つサーバーをジャンプボードとして使用し、内部ネットワークサービスを公開に露出させてアクセスを実現するもので、このソリューションの利点はネットワークアクセスが安定しており、帯域幅の速度は公開 IP サーバーの帯域幅に依存します。欠点は設定が複雑で、サーバーに関連サービスをインストールする必要があり、内部ネットワークサービス側で設定項目を書く必要があります。また、トンネル貫通は一部のネットワークプロトコルのサポートが不十分で、特に HTTPS プロトコルの設定は非常に複雑で面倒です。

image

最後のソリューションは仮想 LAN を構築することで、簡単に言えば、異なるネットワークにあるデバイスを跨いで仮想 LAN を構築し、内部ネットワーク IP に基づいてデバイス間の相互訪問を実現することです。このソリューションの最大の利点は、ネットワークプロトコルに制約されず、クライアントのデプロイが比較的簡単でプライベートなデプロイをサポートすることですが、サービスを提供するベンダーの多くは海外から来ており、国内のネットワーク環境での安定性が低いという欠点があります。

仮想 LAN を構築するサービスの中で、現在主流なのは ZeroTier、Tailscale、そして国産の蒲公英です。私の横断的な比較とテストの結果、より柔軟な ZeroTier を選択しました。まず、家庭用の場合、公式の ZeroTier でもほとんど費用がかからず、ID を通じて自作の仮想 LAN に直接参加できるからです(Tailscale では新しいデバイスを追加するためにシングルサインオンの承認が必要です)。さらに重要なのは、現在 ZeroTier はより柔軟な自己デプロイメントソリューションを提供しており、操作や方法が他の 2 つのサービスよりもはるかに簡単です。

私は ZeroTier を使用して仮想 LAN を構築し、外部から内部ネットワークにアクセスしていますが、公式サービスは使用していません。最も重要な点は、公式のルートサーバー(プラネットサーバー)が海外に展開されているため、国内のインターネットの特性により高い遅延が発生し、ネットワークの安定性に影響を与えることです。国内で Moon サーバー(衛星サーバー)を自作することでアクセス問題を緩和することはできますが、仮想 LAN の解析は依然としてルートサーバーに依存するため、最も直接的な方法は、国内のインターネット上に完全に自作のプラネットサーバー(ルートサーバー)とネットワークコントローラーを構築することです。これにより、本質的に最も効率的で安定した仮想 LAN の構築が実現します。

image

このようにする利点は、海外のネットワークアクセス速度に制約されず、全プロセスが完全に自主管理可能であり、実際の費用も最も低いことです —— 国内の主要なクラウドサーバー提供者から非常に低い構成のクラウドサーバーを 1 台購入するだけで、年間の費用は 100 元にも満たないかもしれません。

Tailscale と同様に、ZeroTier もネットワークコントローラーとルートサーバーの自己デプロイを実現できますが、以前は衛星サーバー(Moon サーバー)とネットワークコントローラーしか自作できませんでしたが、今ではルートサーバー(プラネットサーバー)の自己デプロイが可能になりました。これにより、公式の ZeroTier のアカウントを登録する必要なく、完全に仮想 LAN を自作することができます。

クラウドサーバーに ZeroTier プラネットサーバーをインストールする#

まず最初に、国内のクラウドサービスプロバイダーからクラウドサーバーを購入します。全体の仕様は「1 コア 2G」または「2 コア 2G」で十分で、最も重要なのはデバイス管理のために公開 IP が必要です。始める前に、クラウドサーバーのファイアウォールを開き、3443 ポート(TCP)と 9993 ポート(TCP および UDP)を追加で開放する必要があります。

image

次に、SSH クライアントを使用して root 権限でクラウドサーバーにログインし、サーバーのディストリビューションに応じてシステムコンポーネントを更新し、Git、docker をインストールして docker を起動します:

# debian系の更新確認
apt update

# debian系ではgitのインストール確認は不要
apt install -y git 

# docker公式リポジトリからdockerをインストール
curl -fsSL https://get.docker.com |bash

# systemdを通じてdockerサービスを起動
systemctl start docker

# red hat系の更新確認
yum update

# red hat系ではgitのインストール確認は不要
yum install git -y

# docker公式リポジトリからdockerをインストール
curl -fsSL https://get.docker.com |bash

# systemdを通じてdockerサービスを起動
systemctl start docker

次に、xubiaolin が作成した自作プラネットサーバーインストールスクリプトをコピーします:

# xubiaolinが作成した自作プラネットサーバーインストールスクリプトをコピー
git clone https://ghproxy.markxu.online/https://github.com/xubiaolin/docker-zerotier-planet.git

# 特定のディレクトリに移動
cd docker-zerotier-planet

# スクリプトを実行
./deploy.sh

スクリプトは関連する選択肢を提示しますので、ここでは直接1と入力して Enter を押してインストールします。インストール中に適切なポートを入力する必要がありますが、すべてデフォルトを選択できます。その後はコンテナの作成プロセスです。もしあなたが私と同様に性能が比較的低いクラウドサーバーを使用している場合、全体のインストール待機時間は比較的長く(約 10 分)なるでしょう。

Successfully copied 2.048kB to /tmp/planetというような端末画面が表示されると、全体のインストールプロセスが終了したことを示します。もちろん、確信が持てない場合は、次のコマンドを使用してそのコンテナが起動しているかどうかを確認できます:

docker ps

STATUSの下にUpと表示されていれば、コンテナは起動しています。次に、ブラウザのアドレスバーにhttp://クラウドサーバーip:3443と入力してネットワーク管理バックエンドを開きます。以下のログインページが表示されれば、サーバー側のインストールは成功です。

image

すべての実行が完了した後、この自作の仮想 LAN サービスはplanetという名前のファイルを生成します。これは後でクライアントを設定する際に必要です。ここで SSH クライアントを使用してdocker-zerotier-planetディレクトリに入り、再度./deploy.shこのスクリプトを実行し、数字の 3 を入力して Enter を押し、planetファイルを現在のディレクトリにコピーし、sFTP クライアントを使用してファイルをローカルにコピーしておきます。

image

自作の ZeroTier にネットワークを設定する#

ローカルでブラウザを開き、http://クラウドサーバーip:3443にアクセスしてネットワークコントローラーのログインページに入ります:

image

デフォルトのアカウント:admin、パスワード:passwordでログイン後、タブの中のAdd Networkをクリックしてネットワークを作成します。

image

作成が完了すると、自動的に新しく作成したネットワークの詳細ページにリダイレクトされます。次に上部のIPv4 Assign Modeをクリックし、Auto-assign from IP Assignment Poolにチェックを入れて、新しく参加したネットワークデバイスが自動的にアドレスプールから IP を取得できるようにします。

image

別途保存が必要なのは、対応するネットワーク ID です。例えば、私が作成したこのceshiというネットワークに対応する一連の文字列を保存しておきます。後でこの ID を使用してクライアントをあなたが作成したこの ID に参加させる必要があります。

クライアントの参加#

私の主な目的は、持ち運び可能なノートパソコンがいつでも家庭の Synology にアクセスできるようにすることです。そのため、家庭の Synology、Mac コンピュータ、Windows ノートパソコンを同じ仮想 LAN に参加させる必要があります。

Windows システムデバイスの設定#

まず、公式の ZeroTier Windows クライアントインストーラをダウンロードしてインストールします。

次のステップ:インストールが完了したら、ファイルエクスプローラーを使用して次のパスにアクセスします:C:\ProgramData\ZeroTier\One、以前にクラウドサーバーからコピーしたplanetファイルをディレクトリ内の同名ファイルと置き換えます。

image

次のステップ:サービスを開き、サービスリストの中から ZeroTier One を選択し、左上のサービスを再起動をクリックします。

image

次のステップ:タスクバーの Windows アイコンを右クリックし、ターミナル管理者を選択し、次のコマンドを入力します:

cd C:\Windows\system32
zerotier-cli.bat join ネットワークID

入力後、200 Join OKと表示されれば、現在のデバイスは私たちが作成したこの仮想 LAN に参加しています。この時、ブラウザでhttp://クラウドサーバーip:3443を開き、Networkをクリックして作成したネットワークを選択すると、ネットワーク詳細リストの下に新しいデバイスが表示されます。Nember nameの下にメモを追加し、Authorizedにチェックを入れてネットワークに参加させることができます。後で IP 割り当ての下にこのデバイスに割り当てられた内部 IP アドレスが表示されるでしょう。

image

macOS システムデバイスの設定#

まず、公式の ZeroTier macOS クライアントをダウンロードしてインストールします。

次のステップ:インストールが完了したら、Finder を使用してディレクトリ/Library/Application Support/ZeroTier/Oneにアクセスし、以前にクラウドサーバーからダウンロードしたplanetファイルをディレクトリ内の同名ファイルと置き換えます。

image

次のステップ:ターミナルを開き、次のコマンドを入力して ZeroTier One クライアントを再起動します:

cat
 /Library/Application Support/ZeroTier/One/zerotier-one.pid | 
sudo
 xargs 
kill

続いて、ターミナルに次のコマンドを入力して、あなたが作成した仮想 LAN ネットワークに参加します:

zerotier-cli join ネットワークID

200 join OKと表示されれば、参加成功です。

最後に、ブラウザでhttp://クラウドサーバーip:3443にアクセスしてネットワーク管理バックエンドを開き、Networkをクリックして作成したネットワークを選択すると、ネットワーク詳細リストの下に新しいデバイスが表示されます。Nember nameの下にメモを追加し、Authorizedにチェックを入れてネットワークに参加させることができます。

image

ターミナルでzerotier-cli peersコマンドを入力すると、参加デバイスの役割と対応するネットワークが表示されます。もしクラウドサーバーの役割が Planet で、先ほど参加したデバイスの役割が LEAF であれば、国内ネットワークに基づく仮想 LAN が成功裏に作成されたことを示します。

Synology デバイスの設定#

私の主な目的は、Synology と持ち運び可能なノートパソコンを同じ LAN に置くことです。実際、最も重要なのは Synology です。ここで、クラウドサーバーからダウンロードしたplanetファイルを Synology のファイルディレクトリにコピーします。ここではsoft backupというフォルダにコピーします。

image

次に、Synology のパッケージセンターを開き、設定-パッケージソースに「矿神源」を追加します ——https://spk7.imnks.com/。その後、パッケージセンターのサイドバーで「コミュニティ」を選択し、ZeroTier を見つけてインストールします。

image

パッケージのインストールが完了したら、まずは起動しないでください。SSH クライアントを通じて Synology に接続し、次のコマンドを入力してパッケージを修正します:

sudo sed -i 's/package/root/g' /var/packages/zerotier/conf/privilege

次に、次のコマンドを入力して、先ほどアップロードしたplanetファイルをパッケージディレクトリにコピーします:

mv /volume1/@appdata/zerotier/planet /volume1/@appdata/zerotier/planet.bak 
cp /volume1/soft backup/planet /volume1/@appdata/zerotier/

この時、再び Synology のパッケージセンターに戻り、ZeroTier を起動します。この時、SSH クライアントで次のコマンドを入力して、Synology を自作の仮想 LAN に参加させます:

cd /var/packages/zerotier/target/bin 

./zerotier-one -q join ネットワークID

200 join OKと表示されれば、接続成功です。ブラウザでhttp://クラウドサーバーip:3443にアクセスして管理バックエンドを開き、ネットワーク詳細ページで新しく追加された Synology を見つけ、Authorizedにチェックを入れてネットワークに参加させます。

結論#

自作の ZeroTier プラネットサーバーにより、すべてのデバイスが国内のネットワーク環境で直接接続され、公式のルートサーバーが海外に設置されている場合と比べて遅延が大幅に低下します。この自作の仮想 LAN はネットワークプロトコルに対する制約が少なく、Samba プロトコルを通じて作成されたファイルサービスは内部 IP を通じて直接アクセスでき、ドメイン名を設定することなく webdav プロトコルを使用できるため、操作が簡素化されます。

Synology の公式 QuickConnect 接続は中継アクセスのみをサポートするため、自作の ZeroTier 仮想 LAN は相互訪問性能を効果的に向上させます。例えば、Synology Drive に依存するユーザーである私にとって、クライアントが Synology に接続する問題が大幅に減少しました。

もしあなたも異なるネットワーク下のデスクトップデバイスと家庭内のネットワークサーバーとの相互訪問性能を向上させたいのであれば、完全に自己デプロイされた ZeroTier を試してみると、異なる新しい体験が得られるかもしれません。

> 少数派 クライアントをダウンロードし、少数派小紅書をフォローして、素晴らしいデジタルライフを体験してください🍃

> 実用的で使いやすい正規ソフトウェアを、少数派があなたにお届けします🚀

© 本文の著作権は著者に帰属し、少数派に独占的に使用を許可されています。少数派の許可なしに転載や使用することはできません。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。