VPN前書き最近、ますます多くのソフトウェアプロジェクトが、メンバーが地理的に離れた場所で協力するチームによって構築されています。このワークフローには多くの明らかな利点がありますが、そのようなチームはコンピューターをインターネット経由でリンクし、同じ部屋にいるかのように扱いたい場合があります。Kubernetesなどの分散システムをテストしたり、複雑なマルチサービスアプリケーションを構築したりできます。未完成のサービスをインターネットにさらすリスクを冒す必要がないため、マシンを隣り合わせに扱うことができれば、生産性に役立つことがあります。このパラダイムは、ソフトウェア定義ネットワーク(SDN)によって実現できます。SDNは、ソフトウェアで構成された動的ネットワークファブリックを提供する比較的新しいテクノロジーです。Oneは、SDNの最新の開発を使用して、ユーザーが安全で管理可能なネットワークを作成し、接続されたデバイスを同じように扱うことができるオープンソースアプリケーションです。ZeroTierは、ネットワーク管理用のWebコンソールとクライアント用のエンドポイントソフトウェアを提供します。これは暗号化されたピアツーピアテクノロジーです。従来のVPNソリューションとは異なり、通信は中央のサーバーまたはルーターを経由する必要はありません。メッセージはホストからホストに直接送信されます。その結果、非常に効率的であり、遅延が最小限に抑えられます。その他の利点には、ZeroTierのシンプルな展開および構成プロセス、簡単なメンテナンス、およびWebコンソールを介した承認されたノードの集中登録と管理が含まれます。このチュートリアルに従うことで、クライアントとサーバーを簡単なポイントツーポイントネットワークで接続します。Networkingは従来のクライアント/サーバー設計を利用しないため、インストールおよび構成する中央VPNサーバーはありません。これにより、ツールの展開と補助ノードの追加が合理化されます。接続が確立されると、いくつかの巧妙なLinux機能を使用してZeroTierのVPN機能を利用し、トラフィックがサーバーからZeroTierネットワークを離れ、その方向にトラフィックを送信するようにクライアントに指示することができます。前提条件このチュートリアルを完了する前に、次のリソースが必要です。16.04を実行しているサーバー。このサーバーでは、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-を使用して設定できるsudo特権を持つ非ルートユーザーも必要です。16.04の初期サーバーセットアップガイド]。ZeroTier]にアクセスして設定できます。このチュートリアルの目的のために、無料のこのサービスのバージョンを使用できます。このバージョンには、費用やコミットメントはありません。クライアントとしてSDNに参加するローカルコンピューター。[ZeroTierダウンロードページ]にリストされているオペレーティングシステムはすべてクライアントで動作します。これらの前提条件が整っていれば、サーバーとローカルマシンにソフトウェア定義のネットワークをセットアップする準備ができています。Oneを使用してソフトウェア定義ネットワークを作成するZeroTierプラットフォームは、ソフトウェア定義ネットワークの中央制御点を提供します。そこで、クライアントを認証および認証解除し、アドレス指定スキームを選択し、クライアントをセットアップするときにクライアントを誘導できるネットワークIDを作成できます。ZeroTierアカウントにログインし、画面上部の*ネットワーク*をクリックして、*作成*をクリックします。自動生成されたネットワーク名が表示されます。クリックすると、ネットワークの設定画面が表示されます。ネットワーク名をよりわかりやすい名前に変更する場合は、画面の左側で名前を編集します。必要に応じて説明を追加することもできます。行った変更はすべて保存され、自動的に適用されます。次に、SDNが動作するIPv4アドレス範囲を選択します。*]というタイトルの領域で、ノードが含まれるアドレス範囲を選択します。このチュートリアルでは、任意の範囲を使用できますが、[範囲からの自動割り当て]ボックスをチェックしたままにすることが重要です。Network)*に設定されたままであることを確認します。これにより、ネットワークIDを知っている人だけでなく、承認されたマシンのみがネットワークに接続できます。終了すると、設定は次のようになります。Networkの基盤を構築できました。次に、サーバーとクライアントマシンにZeroTierソフトウェアをインストールして、SDNに接続できるようにします。Oneは比較的新しいソフトウェアであるため、Ubuntuのコアソフトウェアリポジトリにはまだ含まれていません。このため、ZeroTierはソフトウェアのインストールに使用するインストールスクリプトを提供します。このコマンドはGPG署名のスクリプトです。ダウンロードしたコードはZeroTierによって公開されたものとして検証されます。このスクリプトには4つの主要な部分があり、それぞれの部分ごとの説明を次に示します。+-これにより、MITからZeroTier公開鍵がインポートされます。+-コマンドのこのセクションは、インストールしようとするパッケージを信頼するために、ZeroTier公開キーをローカルの認証局のキーチェーンに追加します。`-このセクションではいくつかのことが発生しますが、本質的には次のように変換されます。その情報を画面に貼り付けます。`-このセクションは、新しく検証されたインストーラースクリプトを取得し、ルーチンを終了する前に実際に実行します。SSHコンソールを使用して、新しく作成したサーバーに接続し、通常のユーザーとして次のコマンドを実行します(コマンドの説明は以下に記載されています)。スクリプトは特権レベルを上げるためにパスワードを自動的に要求するため、rootとして実行しないでください。必要に応じて対話できるように、ブラウザでZeroTierコンソールを開いたままにしてください。fiスクリプトが完了すると、次のような2行の出力が表示されます。ZeroTierアドレス(角括弧なし)とそのアドレスを生成したシステムの名前を書き留めます。どちらも後で必要になります。].Ubuntuを使用している場合は、ローカルコンピューターでこの手順を繰り返します。[ダウンロードページ]でオペレーティングシステムに関連する手順を実行します。繰り返しますが、ZeroTierアドレスとそのアドレスを生成したマシンに注意してください。サーバーとクライアントを実際にネットワークに参加させるときに、このチュートリアルの次のステップでこの情報が必要になります。ステップ3-ZeroTierネットワークに参加するサーバーとクライアントの両方でZeroTierソフトウェアが実行されているので、ZeroTierウェブコンソールで作成したネットワークに接続する準備ができました。次のコマンドを使用して、プラットフォームを介してZeroTierネットワークへのアクセスを要求するようにクライアントに指示します。クライアントの最初のリクエストは拒否され、ハングしたままになりますが、すぐに修正します。ネットワークの設定ウィンドウでメモしたネットワークIDに必ず置き換えてください。+」メッセージが表示されます。ない場合は、入力したZeroTierネットワークIDを再確認してください。世界中の誰でも参加できるパブリックネットワークを作成していないため、クライアントを認証する必要があります。*セクションがある一番下までスクロールします。*としてマークされた2つのエントリを、先ほどメモしたのと同じアドレスで見つける必要があります。Auth?*とマークされた最初の列で、チェックボックスをオンにして、ネットワークへの参加を許可します。Controllerは、次回SDNを呼び出すときに、選択した範囲からサーバーとクライアントにIPアドレスを割り当てます。IPアドレスの割り当てには少し時間がかかる場合があります。これにより、2つのシステムがソフトウェア定義ネットワークに接続されます。これまで、ZeroTierコントロールパネルの基本的な知識を習得し、コマンドラインインターフェイスを使用してZeroTierをダウンロードしてインストールし、サーバーとクライアントの両方をそのネットワークに接続しました。次に、接続性テストを実行して、すべてが正しく適用されたことを確認します。手順4-接続の確認この段階では、2つのホストが実際に相互に通信できることを検証することが重要です。ホストがネットワークに参加していると主張しても、通信できない可能性があります。今すぐ接続を確認することで、後でトラブルを引き起こす可能性のある基本的な相互接続の問題を心配する必要がなくなります。*セクションを調べることです。サーバーとクライアントを認証した後、IPアドレスが表示される前に更新する必要がある場合があります。Linuxコマンドラインを使用してこれらのアドレスを見つけることができます。両方のマシンで次のコマンドを使用します-リストに表示される最初のIPアドレスが使用するものです。以下に示す例では、そのアドレスは「203.0.113.0」です。+」コマンドを実行し、その後に別のホストのIPアドレスを続けます。クライアントで:pingそしてサーバー上で:ping反対側のホストから返信が返されている場合(以下の出力に示すように)、2つのノードはSDNを介して正常に通信しています。ms上記のZeroTierのインストールと参加プロセスを繰り返すことにより、この構成に好きなだけマシンを追加できます。覚えておいて、これらのマシンは、互いに近接している必要はありません。サーバーとクライアントが相互に通信できることを確認したら、ネットワークを調整して出口ゲートウェイを提供し、独自のVPNを構築する方法を学習してください。ステップ5-ZeroTierのVPN機能を有効にする概要で述べたように、ZeroTierをVPNツールとして使用することは可能です。ZeroTierをVPNソリューションとして使用する予定がない場合は、この手順に従う必要はなく、手順6に進んでください。VPNを使用すると、インターネット上のWebサイトとの通信のソースが隠されます。使用しているネットワーク上に存在する可能性のあるフィルターと制限をバイパスできます。広いインターネットでは、サーバーのパブリックIPアドレスから参照しているように見えます。ZeroTierをVPNツールとして使用するには、サーバーとクライアントの構成をさらに変更する必要があります。Translation_は、送信者のIPアドレスでタグ付けされた1つのインターフェイスでルーターがパケットを受け入れ、そのアドレスをルーターのアドレスに交換する方法です。このスワップの記録はルーターのメモリに保持されるため、戻りトラフィックが逆方向に戻ったときに、ルーターはIPを元のアドレスに変換して戻すことができます。通常、NATは、複数のコンピューターが1つの公開されたIPアドレスの背後で動作できるようにするために使用されます。これは、VPNサービスに役立ちます。実際のNATの例は、インターネットサービスプロバイダーが、家庭内のすべてのデバイスをインターネットに接続するために提供した家庭用ルーターです。ルーターがNATを実行しているため、ラップトップ、電話、タブレット、およびその他のインターネット対応デバイスはすべて、インターネットに対して同じパブリックIPアドレスを共有しているように見えます。通常、NATはルーターによって実行されますが、サーバーもNATを実行できます。このステップを通して、ZeroTierサーバーのこの機能を活用して、VPN機能を有効にします。_IPフォワーディング_は、ルーターまたはサーバーによって実行される機能で、IPアドレスが異なるゾーンにある場合、トラフィックを1つのインターフェイスから別のインターフェイスに転送します。ルーターが2つのネットワークに接続されている場合、IP転送により、それらの間でトラフィックを転送できます。これは単純に聞こえるかもしれませんが、うまく実装するには驚くほど複雑になる可能性があります。このチュートリアルの場合は、いくつかの構成ファイルを編集するだけです。IP転送を有効にすると、ZeroTierネットワーク内のクライアントからのVPNトラフィックがサーバーのZeroTierインターフェイスに到着します。これらの構成を変更しないと、Linuxカーネルは(デフォルトで)到着するインターフェース宛でないパケットを破棄します。これは通常、Linuxカーネルの通常の動作です。通常、別のネットワークの宛先アドレスを持つインターフェイスに到着するパケットは、ネットワークのどこかでルーティングの設定ミスが原因で発生する可能性があるためです。IP転送は、インターフェイス間でパケットを転送することが許容されることをLinuxカーネルに通知するものと考えると便利です。デフォルト設定は「0」で、「オフ」に相当します。「1」に切り替えます-「オン」に相当します。現在の構成を表示するには、次のコマンドを実行します。`ファイルを変更し、必要な行を追加します。この構成ファイルにより、管理者はデフォルトのカーネル設定を上書きでき、再起動後に常に適用されるため、再度設定する必要はありません。+`またはお気に入りのテキストエディターを使用して、ファイルの最後に次の行を追加します。-pサーバーはファイル内の新しい構成ディレクティブを採用し、すぐに適用します。再起動は必要ありません。前と同じコマンドを実行すると、IP転送が有効になっていることがわかります。1IP転送が有効になったので、サーバーにいくつかの基本的なルーティングルールを提供することで、IP転送を有効に活用できます。Linuxカーネルには既にネットワークルーティング機能が組み込まれているため、行う必要があるのは、ビルトインファイアウォールとルーターに、表示される新しいトラフィックが受け入れ可能であり、どこに送信するかを伝えるルールを追加することだけです。コマンドラインからこれらのルールを追加するには、最初に、UbuntuがZerotierインターフェースと通常のインターネット向けイーサネットインターフェースの両方に割り当てた名前を知る必要があります。+」ですが、常にそうとは限りません。