ソフトウェア定義ネットワークの使用開始とZeroTierOneを使用したVPNの作成
序章
最近では、メンバーが地理的に離れた場所から一緒に作業するチームによって構築されるソフトウェアプロジェクトがますます増えています。 このワークフローには多くの明らかな利点がありますが、そのようなチームがインターネットを介してコンピューターをリンクし、同じ部屋にいるかのように扱いたい場合があります。 たとえば、Kubernetesなどの分散システムをテストしたり、複雑なマルチサービスアプリケーションを構築したりする場合があります。 未完成のサービスをインターネットに公開するリスクを冒す必要がないため、マシンを互いに隣接しているように扱うことができれば、生産性が向上する場合があります。 このパラダイムは、ソフトウェア定義ネットワーク(SDN)によって実現できます。これは、存在が完全にソフトウェアで構成されている動的ネットワークファブリックを提供する比較的新しいテクノロジーです。
ZeroTier One は、SDNの最新の開発の一部を使用して、ユーザーが安全で管理しやすいネットワークを作成し、接続されたデバイスを同じ物理的な場所にあるかのように扱うことができるオープンソースアプリケーションです。 ZeroTierは、ネットワーク管理用のWebコンソールとクライアント用のエンドポイントソフトウェアを提供します。 これは暗号化されたピアツーピアテクノロジーです。つまり、従来のVPNソリューションとは異なり、通信は中央サーバーやルーターを通過する必要がありません。メッセージはホストからホストに直接送信されます。 結果として、それは非常に効率的であり、最小の待ち時間を保証します。 その他の利点には、ZeroTierの単純な展開と構成プロセス、簡単なメンテナンス、およびWebコンソールを介した承認済みノードの集中登録と管理が可能になることが含まれます。
このチュートリアルに従うことで、クライアントとサーバーを単純なポイントツーポイントネットワークで接続します。 ソフトウェア定義ネットワークは従来のクライアント/サーバー設計を利用していないため、インストールおよび構成する中央VPNサーバーはありません。 これにより、ツールの展開と補助ノードの追加が合理化されます。 接続が確立されると、いくつかの巧妙なLinux機能を使用して、トラフィックがサーバーからZeroTierネットワークを離れ、その方向にトラフィックを送信するようにクライアントに指示することで、ZeroTierのVPN機能を利用できるようになります。
前提条件
このチュートリアルを実行する前に、次のリソースが必要です。
-
Ubuntu16.04を実行しているサーバー。 このサーバーでは、sudo権限を持つroot以外のユーザーも必要です。これは、Ubuntu16.04の初期サーバーセットアップガイドを使用してセットアップできます。
-
MyZeroTierに移動して設定できるZeroTierOneのアカウント。 このチュートリアルの目的のために、あなたはこのサービスの無料版を使うことができます。そして、それは費用または約束なしで来ます。
-
クライアントとしてSDNに参加するローカルコンピューター。 このチュートリアル全体の例では、サーバーとローカルコンピューターの両方がUbuntu Linuxを実行していますが、ZeroTierダウンロードページにリストされているオペレーティングシステムはすべてクライアントで動作します。
これらの前提条件が整ったら、サーバーとローカルマシンのソフトウェア定義ネットワークをセットアップする準備が整います。
ステップ1—ZeroTierOneを使用したソフトウェア定義ネットワークの作成
ZeroTierプラットフォームは、ソフトウェア定義ネットワークの制御の中心点を提供します。 そこで、クライアントの承認と承認解除、アドレス指定スキームの選択、およびクライアントのセットアップ時にクライアントに転送できるネットワークIDを作成できます。
ZeroTierアカウントにログインし、画面上部のネットワークをクリックし、作成をクリックします。 自動生成されたネットワーク名が表示されます。 それをクリックして、ネットワークの構成画面を表示します。 後で参照する必要があるため、黄色で表示されているネットワークIDをメモします。
ネットワーク名をよりわかりやすい名前に変更する場合は、画面の左側で名前を編集します。 必要に応じて、説明を追加することもできます。 行った変更はすべて保存され、自動的に適用されます。
次に、SDNが動作するIPv4アドレス範囲を選択します。 画面の右側のIPv4自動割り当てというタイトルの領域で、ノードが該当するアドレス範囲を選択します。 このチュートリアルでは、任意の範囲を使用できますが、[範囲からの自動割り当て]ボックスをオンのままにしておくことが重要です。
左側のアクセス制御が証明書(プライベートネットワーク)に設定されたままであることを確認してください。 これにより、ネットワークIDを知っている人だけでなく、承認されたマシンだけがネットワークに接続できるようになります。
完了すると、設定は次のようになります。
この時点で、ZeroTierソフトウェア定義ネットワークの基盤を正常に構築できました。 次に、サーバーとクライアントマシンにZeroTierソフトウェアをインストールして、SDNに接続できるようにします。
ステップ2—サーバーとローカルコンピューターにZeroTierOneクライアントをインストールする
ZeroTier Oneは比較的新しいソフトウェアであるため、コアのUbuntuソフトウェアリポジトリにはまだ含まれていません。 このため、ZeroTierは、ソフトウェアのインストールに使用するインストールスクリプトを提供します。 このコマンドはGPG署名されたスクリプトです。つまり、ダウンロードしたコードは、ZeroTierによって公開されたものとして検証されます。 このスクリプトには4つの主要な部分があり、それぞれについて次のように説明します。
curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61'
-これは、MITからZeroTier公開鍵をインポートします。gpg --import
-コマンドのこのセクションは、ZeroTier公開鍵を権限のローカルキーチェーンに追加して、インストールしようとするパッケージを信頼します。 コマンドの次の部分は、GPGインポートが正常に完了した場合にのみ実行されますif z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z"
-このセクションではいくつかのことが起こっていますが、基本的には次のように解釈されます。「 ZeroTier.com からダウンロードされた暗号署名されたインストールスクリプトがGPGを通過し、次のように拒否されない場合ZeroTierによる署名なしで、その情報を画面に貼り付けます。」sudo bash; fi
-このセクションでは、新しく検証されたインストーラースクリプトを取得し、ルーチンを終了する前に実際に実行します。
警告:信頼できるソースからのものであることが確実でない限り、インターネットから何かをダウンロードして別のプログラムにパイプすることは絶対にしないでください。 必要に応じて、プロジェクトの公式GitHubページのソースコードを確認して、ZeroTierソフトウェアを調べることができます。
SSHコンソールを使用して、新しく作成したサーバーに接続し、通常のユーザーとして次のコマンドを実行します(コマンドの説明を以下に示します)。 スクリプトは自動的にパスワードを要求して特権レベルを上げるため、rootとして実行しないでください。必要なときに操作できるように、ブラウザでZeroTierコンソールを開いたままにしておくことを忘れないでください。
- curl -s 'https://pgp.mit.edu/pks/lookup?op=get&search=0x1657198823E52A61' | gpg --import && if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi
スクリプトが完了すると、以下に示すような2行の出力が表示されます。 ZeroTierアドレス(角かっこなし)とそのアドレスを生成したシステムの名前をメモします。どちらも後で必要になります。
Output*** Waiting for identity generation...
*** Success! You are ZeroTier address [ 916af8664d ].
Ubuntuを使用している場合は、ローカルコンピューターでこの手順を繰り返すか、ZeroTierWebサイトのダウンロードページでオペレーティングシステムに関連する手順に従います。 繰り返しになりますが、ZeroTierアドレスとそのアドレスを生成したマシンに注意してください。 このチュートリアルの次のステップで、サーバーとクライアントを実際にネットワークに参加させるときに、この情報が必要になります。
ステップ3—ZeroTierネットワークに参加する
サーバーとクライアントの両方でZeroTierソフトウェアが実行されているので、ZeroTierWebコンソールで作成したネットワークに接続する準備が整いました。
次のコマンドを使用して、プラットフォームを介してZeroTierネットワークへのアクセスを要求するようにクライアントに指示します。 クライアントの最初のリクエストは拒否され、ハングしたままになりますが、すぐに修正します。 NetworkID は、ネットワークの構成ウィンドウで前にメモしたネットワークIDに必ず置き換えてください。
- sudo zerotier-cli join NetworkID
Output200 join OK
サーバー上のZeroTierサービスがコマンドを理解したことを確認する200 join OK
メッセージが表示されます。 そうでない場合は、入力したZeroTierネットワークIDを再確認してください。
世界中の誰もが参加できるパブリックネットワークを作成していないため、クライアントを承認する必要があります。 ZeroTier Webコンソールに移動し、メンバーセクションがある一番下までスクロールします。 Online とマークされた、前にメモしたのと同じアドレスを持つ2つのエントリを見つける必要があります。
Auth?とマークされた最初の列で、ボックスにチェックマークを付けて、ネットワークへの参加を許可します。 ゼロティアコントローラーは、次にSDNを呼び出すときに、以前に選択した範囲からサーバーとクライアントにIPアドレスを割り当てます。
IPアドレスの割り当てには時間がかかる場合があります。 待機中に、メンバーセクションでノードの短い名前と説明を指定できます。
これで、2つのシステムをソフトウェア定義ネットワークに接続できます。
これまで、ZeroTierコントロールパネルの基本的な知識を習得し、コマンドラインインターフェイスを使用してZeroTierをダウンロードしてインストールし、サーバーとクライアントの両方をそのネットワークに接続しました。 次に、接続テストを実行して、すべてが正しく適用されたことを確認します。
ステップ4—接続の確認
この段階で、2つのホストが実際に相互に通信できることを検証することが重要です。 ホストがネットワークに参加していると主張していても、通信できない可能性があります。 今すぐ接続を確認することで、後で問題を引き起こす可能性のある基本的な相互接続の問題について心配する必要がなくなります。
各ホストのZeroTierIPアドレスを見つける簡単な方法は、ZeroTierWebコンソールのMembersセクションを調べることです。 サーバーとクライアントを承認した後、IPアドレスが表示される前に更新する必要がある場合があります。 または、Linuxコマンドラインを使用してこれらのアドレスを検索することもできます。 両方のマシンで次のコマンドを使用します—リストに表示されている最初のIPアドレスが使用します。 以下に示す例では、そのアドレスは203.0.113.0
です。
- ip addr sh zt0 | grep 'inet'
Outputinet 203.0.113.0/24 brd 203.0.255.255 scope global zt0
inet6 fc63:b4a9:3507:6649:9d52::1/40 scope global
inet6 fe80::28e4:7eff:fe38:8318/64 scope link
ホスト間の接続をテストするには、一方のホストからping
コマンドを実行してから、もう一方のホストのIPアドレスを実行します。 たとえば、クライアントでは次のようになります。
- ping your_server_ip
そしてサーバー上:
- ping your_client_ip
応答が反対側のホストから返される場合(以下に示す出力に示されているように)、2つのノードはSDNを介して正常に通信しています。
OutputPING 203.0.113.0 (203.0.113.0) 56(84) bytes of data.
64 bytes from 203.0.113.0: icmp_seq=1 ttl=64 time=0.054 ms
64 bytes from 203.0.113.0: icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from 203.0.113.0: icmp_seq=3 ttl=64 time=0.043 ms
上記で概説したZeroTierのインストールと参加のプロセスを繰り返すことにより、この構成に必要な数のマシンを追加できます。 これらのマシンは、互いに近接している必要はありません。
サーバーとクライアントが相互に通信できることを確認したので、ネットワークを調整して出口ゲートウェイを提供し、独自のVPNを構築する方法を学習してください。
ステップ5—ZeroTierのVPN機能を有効にする
はじめに述べたように、VPNツールとしてZeroTierを使用することが可能です。 VPNソリューションとしてZeroTierを使用する予定がない場合は、この手順に従う必要はなく、手順6に進むことができます。
VPNを使用すると、インターネットを介したWebサイトとの通信のソースが隠されます。 これにより、使用しているネットワークに存在する可能性のあるフィルターや制限を回避できます。 より広いインターネットでは、サーバーのパブリックIPアドレスからブラウジングしているように見えます。 ZeroTierをVPNツールとして使用するには、サーバーとクライアントの構成にさらにいくつかの変更を加える必要があります。
ネットワークアドレス変換とIP転送の有効化
ネットワークアドレス変換は、より一般的に「NAT」と呼ばれ、ルーターが送信者のIPアドレスでタグ付けされた1つのインターフェイスでパケットを受け入れ、そのアドレスをルーターのアドレスと交換する方法です。 このスワップの記録はルータのメモリに保持されるため、リターントラフィックが反対方向に戻ったときに、ルータはIPを元のアドレスに変換して戻すことができます。 NATは通常、複数のコンピューターが1つの公開されたIPアドレスの背後で動作できるようにするために使用されます。これは、VPNサービスに役立ちます。 実際のNATの例は、インターネットサービスプロバイダーが自宅のすべてのデバイスをインターネットに接続するために提供した国内ルーターです。 ルーターがNATを実行しているため、ラップトップ、電話、タブレット、およびその他のインターネット対応デバイスはすべて、インターネットと同じパブリックIPアドレスを共有しているように見えます。
NATは通常ルーターによって実行されますが、サーバーもそれを実行できます。 この手順全体を通して、ZeroTierサーバーでこの機能を活用して、VPN機能を有効にします。
IP転送は、ルーターまたはサーバーによって実行される機能であり、IPアドレスが異なるゾーンにある場合に、あるインターフェイスから別のインターフェイスにトラフィックを転送します。 ルーターが2つのネットワークに接続されている場合、IP転送により、ルーターはそれらの間でトラフィックを転送できます。 これは単純に聞こえるかもしれませんが、正常に実装するには驚くほど複雑になる可能性があります。 ただし、このチュートリアルの場合は、いくつかの構成ファイルを編集するだけです。
IP転送を有効にすると、ZeroTierネットワーク内のクライアントからのVPNトラフィックがサーバーのZeroTierインターフェイスに到着します。 これらの構成変更がない場合、Linuxカーネルは(デフォルトで)到着したインターフェース宛てではないパケットを破棄します。 これはLinuxカーネルの通常の動作です。通常、別のネットワークの宛先アドレスを持つインターフェイスに到着するパケットは、ネットワークの他の場所でのルーティングの設定ミスが原因である可能性があるためです。
IP転送は、インターフェイス間でパケットを転送できることをLinuxカーネルに通知するものと考えると便利です。 デフォルト設定は0
で、「オフ」に相当します。 1
に切り替えます—「オン」に相当します。
現在の構成を確認するには、次のコマンドを実行します。
- sudo sysctl net.ipv4.ip_forward
Outputnet.ipv4.ip_forward = 0
IP転送を有効にするには、サーバー上の/etc/sysctl.conf
ファイルを変更し、必要な行を追加します。 この構成ファイルを使用すると、管理者はデフォルトのカーネル設定を上書きでき、再起動後に常に適用されるため、再設定について心配する必要はありません。 nano
またはお好みのテキストエディタを使用して、ファイルの最後に次の行を追加します。
- sudo nano /etc/sysctl.conf
. . .
net.ipv4.ip_forward = 1
ファイルを保存して閉じてから、次のコマンドを実行して、カーネルによる新しい構成の採用をトリガーします
- sudo sysctl -p
サーバーは、ファイル内の新しい構成ディレクティブを採用し、再起動することなく、それらをすぐに適用します。 前に実行したのと同じコマンドを実行すると、IP転送が有効になっていることがわかります。
- sudo sysctl net.ipv4.ip_forward
Outputnet.ipv4.ip_forward = 1
IP転送が有効になったので、サーバーにいくつかの基本的なルーティングルールを提供することにより、IP転送を有効に活用します。 Linuxカーネルにはすでにネットワークルーティング機能が組み込まれているため、必要なのは、組み込みのファイアウォールとルーターに、表示される新しいトラフィックが受け入れ可能であり、どこに送信するかを通知するルールを追加することだけです。 。
コマンドラインからこれらのルールを追加するには、最初に、UbuntuがZerotierインターフェースと通常のインターネット向けイーサネットインターフェースの両方に割り当てた名前を知る必要があります。 これらは通常、それぞれzt0
とeth0
ですが、常にそうであるとは限りません。
これらのインターフェースの名前を見つけるには、コマンドip link show
を使用します。 このコマンドラインユーティリティは、iproute2
の一部です。これは、デフォルトでUbuntuにインストールされるユーザースペースユーティリティのコレクションです。
- ip link show
このコマンドの出力では、インターフェイスの名前は、リスト内の一意のインターフェイスを識別する番号のすぐ隣にあります。 これらのインターフェイス名は、次の出力例で強調表示されています。 例に示されている名前と異なる場合は、このガイド全体でインターフェイス名を適切に置き換えてください。
Output1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 72:2d:7e:6f:5e:08 brd ff:ff:ff:ff:ff:ff
3: zt0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2800 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
link/ether be:82:8f:f3:b4:cd brd ff:ff:ff:ff:ff:ff
その情報を入手したら、iptables
を使用して、ネットワークアドレス変換とIPマスカレードを有効にします。
- sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
トラフィックの転送を許可し、アクティブな接続を追跡します。
- sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
次に、zt0
からeth0
へのトラフィック転送を許可します。 このチュートリアルでは、クライアントは常にサーバーを介して呼び出しを行うと想定されており、その逆ではないため、逆のルールは必要ありません。
- sudo iptables -A FORWARD -i zt0 -o eth0 -j ACCEPT
サーバーに設定したiptablesルールは、再起動間で自動的に保持されないことを覚えておくことが重要です。 サーバーが再起動された場合にルールが有効に戻るようにするには、これらのルールを保存する必要があります。 サーバーで以下のコマンドを実行し、画面上の簡単な指示に従って現在のIPv4ルールを保存します。IPv6は必要ありません。
- sudo apt-get install iptables-persistent
- sudo netfilter-persistent save
sudo netfilter-persistent save
を実行した後、サーバーを再起動して、iptablesルールが正しく保存されたことを検証する価値がある場合があります。 確認する簡単な方法は、sudo iptables-save
を実行することです。これにより、メモリにロードされている現在の構成が端末にダンプされます。 マスカレード、転送、およびzt0
インターフェイスに関して、以下のようなルールが表示された場合、それらは正しく保存されています。
- sudo iptables-save
Output# Generated by iptables-save v1.6.0 on Tue Apr 17 21:43:08 2018
. . .
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
. . .
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i zt0 -o eth0 -j ACCEPT
COMMIT
. . .
これらのルールがサーバーに適用されたので、ZeroTierネットワークとパブリックインターネットの間でトラフィックを調整する準備が整いました。 ただし、サーバーをゲートウェイとして使用する準備ができていることをZeroTierネットワーク自体に通知しない限り、VPNは機能しません。
サーバーがグローバルルートを管理できるようにする
サーバーが任意のクライアントからのトラフィックを処理するには、ZeroTierネットワーク内の他のクライアントがトラフィックをサーバーに送信することを認識していることを確認する必要があります。 これを行うには、ZeroTierコンソールでグローバルルートを設定します。 コンピュータネットワークに精通している人は、これをデフォルトルートと表現することもあります。 これは、クライアントがデフォルトのトラフィックを送信する場所です。 他の特定の場所に行くべきではないトラフィック。
ZeroTierネットワークページの右上に移動し、次のパラメータを使用して新しいルートを追加します。 サーバーのZeroTierIPは、ZeroTierネットワーク構成ページのメンバーセクションにあります。 network / bits フィールドに0.0.0.0/0
と入力し、(LAN)フィールドにZeroTierサーバーのIPアドレスを入力します。
詳細が表示されたら、「 + 」記号をクリックすると、既存のルールの下に新しいルールが表示されます。 それが確かにグローバルルートであることを伝えるために、その中にオレンジ色の地球儀があります。
ZeroTierネットワークの準備ができたら、VPNが機能する前に行う必要のある構成はクライアントの構成だけです。
Linuxクライアントの構成
注:このセクションのコマンドは、Linuxクライアントにのみ適用できます。 WindowsまたはmacOSクライアントを構成する手順については、次のセクションで説明します。
クライアントがLinuxを実行している場合は、/etc/sysctl.conf
ファイルを手動で変更する必要があります。 この構成の変更は、クライアントトラフィックの許容可能なリターンパスが何であるかについてのカーネルのビューを変更するために必要です。 ZeroTier VPNの構成方法により、サーバーからクライアントに戻るトラフィックは、送信先のネットワークアドレスとは異なるネットワークアドレスから送信されているように見える場合があります。 デフォルトでは、Linuxカーネルはこれらを無効と見なして削除するため、その動作をオーバーライドする必要があります。
クライアントマシンで/etc/sysctl.conf
を開きます。
- sudo nano /etc/sysctl.conf
次に、次の行を追加します。
Output. . .
net.ipv4.conf.all.rp_filter=2
ファイルを保存して閉じ、sudo sysctl -p
を実行して変更を採用します。
- sudo sysctl -p
次に、ZeroTierクライアントソフトウェアに、ネットワークがデフォルトルートトラフィックを伝送できることを伝えます。 これにより、クライアントのルーティングが修正されるため、特権機能と見なされるため、手動で有効にする必要があります。 このコマンドは、構成構造を出力に出力します。 これをチェックして、上部にallowDefault=1
が表示されていることを確認します。
- sudo zerotier-cli set NetworkID allowDefault=1
すべてのトラフィックがルーティングされているVPNとしてのZeroTierの使用をやめたい場合は、allowDefault
を0
に戻します。
- sudo zerotier-cli set NetworkID allowDefault=0
クライアントのZeroTierサービスを再起動するたびに、allowDefault=1
の値が0にリセットされるため、VPN機能をアクティブにするために忘れずに再実行してください。
デフォルトでは、ZeroTierサービスは、Linuxクライアントとサーバーの両方の起動時に自動的に開始するように設定されています。 これが当てはまらない場合は、次のコマンドを使用して起動ルーチンを無効にすることができます。
- sudo systemctl disable zerotier-one
ZeroTierネットワークで他のオペレーティングシステムを使用したい場合は、次のセクションをお読みください。 それ以外の場合は、「フローの管理」セクションに進んでください。
Linux以外のクライアントの構成
ZeroTierクライアントソフトウェアは、Linux OSだけでなく、多くのシステムで利用できます。スマートフォンもサポートされています。 クライアントは、Windows、macOS、Android、iOS、さらにはQNAP、Synology、WesternDigitalNASシステムなどの特殊なオペレーティングシステム用に存在します。
macOSベースおよびWindowsベースのクライアントをネットワークに参加させるには、ZeroTierツール(手順1でインストールしたもの)を起動し、[参加]をクリックする前に表示されたフィールドにNetworkIDを入力します。 ZeroTierコンソールをもう一度チェックして、許可ボタンにチェックマークを付けて、ネットワークへの新しいホストを承認することを忘れないでください。
すべてのトラフィックをZeroTier経由でルーティングするというラベルの付いたボックスに必ずチェックを入れてください。 そうしないと、クライアントはZeroTierネットワークに接続されますが、インターネットトラフィックをわざわざ送信しようとはしません。
ICanHazIP などのIPチェックツールを使用して、サーバーのIPからインターネットにトラフィックが表示されていることを確認します。 これを確認するには、次のURLをブラウザのアドレスバーに貼り付けます。 このWebサイトには、そのサーバー(およびインターネットの他の部分)がサイトへのアクセスに使用していると見なすIPアドレスが表示されます。
http://icanhazip.com
これらの手順が完了すると、VPNの利用を開始できます。 次のオプションのセクションでは、「フロールール」と呼ばれるZeroTier SDNに組み込まれているテクノロジーについて説明しますが、VPN機能が機能するためにこれらのテクノロジーは必要ありません。
ステップ6—フローの管理(オプション)
ソフトウェア定義ネットワークの利点の1つは、集中型コントローラーです。 ZeroTierに関しては、集中型コントローラーは、ZeroTierSDNサービス全体の上にあるWebユーザーインターフェイスです。 このインターフェイスから、フロールールと呼ばれるルールを記述して、ネットワーク上のトラフィックで実行できることと実行できないことを指定できます。 たとえば、ネットワーク上でトラフィックを伝送する特定のネットワークポートに全面禁止を指定したり、相互に通信できるホストを制限したり、トラフィックをリダイレクトしたりすることができます。
これは非常に強力な機能であり、フローテーブルに加えられた変更はネットワークメンバーにプッシュされ、ほんの数秒後に有効になるため、ほぼ瞬時に有効になります。 フロールールを編集するには、ZeroTier Webユーザーインターフェイスに戻り、ネットワークタブをクリックし、フロールールというタイトルのボックスが表示されるまで下にスクロールします(折りたたまれている場合があります。拡大する)。 これにより、テキストフィールドが開き、必要なルールを入力できます。 完全なマニュアルは、ZeroTierコンソール内の FlowRules入力ボックスのすぐ下にあるRulesEngineHelpというタイトルのボックスで入手できます。
この機能を調べるのに役立つルールの例を次に示します。
Googleの8.8.8.8
DNSサーバーに向かうトラフィックをブロックするには、次のルールを追加します。
drop
ipdest 8.8.8.8/32
;
GoogleのパブリックDNSサーバー宛てのトラフィックをZeroTierノードの1つにリダイレクトするには、次のルールを追加します。 これは、DNSルックアップをオーバーライドするための優れたキャッチオールになる可能性があります。
redirect NetworkID
ipdest 8.8.8.8/32
;
ネットワークに特別なセキュリティ要件がある場合は、次のルールを追加することで、FTPポート、Telnet、および暗号化されていないHTTPでのアクティビティをすべて削除できます。
drop
dport 80,23,21,20
;
フロールールの追加が完了したら、 [変更を保存]ボタンをクリックすると、ZeroTierが変更を記録します。
結論
このチュートリアルでは、ソフトウェア定義ネットワークの世界への第一歩を踏み出しました。ZeroTierを使用すると、このテクノロジーの利点についての洞察が得られます。 VPNの例に従った場合、初期設定は過去に使用した他のツールとは対照的かもしれませんが、クライアントを追加しやすいことが、他の場所でテクノロジーを使用する説得力のある理由になる可能性があります。
要約すると、ZeroTierをSDNプロバイダーとして使用する方法と、ノードを構成してそのネットワークに接続する方法を学びました。 VPN要素により、このようなネットワーク内のルーティングがどのように機能するかをより深く理解できるようになります。このチュートリアルのどちらのパスでも、強力なフロールールテクノロジーを利用できます。
ポイントツーポイントネットワークが存在するようになったので、ファイル共有などの別の機能と組み合わせることができます。 自宅にNASまたはファイルサーバーがある場合は、ZeroTierにリンクして、外出先でアクセスできます。 友達と共有したい場合は、ZeroTierネットワークに参加する方法を友達に教えることができます。 広いエリアに分散している従業員は、同じ中央ストレージスペースにリンクすることもできます。 これらの例のファイル共有の構築を開始するには、 Ubuntu16.04で小規模な組織のSamba共有を設定する方法をご覧ください。