VPN前書きRedisはオープンソースのキーと値のデータストアであり、永続化のためにオプションのディスク書き込みを伴うメモリ内ストレージモデルを使用します。subメッセージングパターン、および他の機能の中での自動フェールオーバーを備えています。[彼らのウェブサイト]で紹介されています。Redisは、独自の暗号化機能を提供しません。信頼できる関係者のみがアクセスできる隔離されたプライベートネットワークに展開されているという前提の下で動作します。ご使用の環境がその仮定と一致しない場合、Redisトラフィックを暗号化で個別にラップする必要があります。このガイドでは、PeerVPNと呼ばれる単純なVPNプログラムを介してルーティングすることにより、Redisトラフィックを暗号化する方法を示します。サーバー間のすべてのトラフィックは、VPNを介して安全にルーティングできます。一部のソリューションとは異なり、これは特定のポートまたはサービスにバインドされていない一般的なサーバー間通信のための柔軟なソリューションを提供します。このガイドでは、Redisトラフィックを保護するためにPeerVPNの構成に焦点を当てます。16.04サーバーを使用してデモを行います。+`権限が設定された非rootユーザーが必要です。このガイドでは、基本的なファイアウォールが設定されていることを前提としています。16.04初期サーバーセットアップガイドに従ってこれらの要件を満たすことができます。続行する準備ができたら、以下に従ってください。PeerVPNとは何ですか?PeerVPNは、メッシュトポロジを確立する非常にシンプルなVPNテクノロジーです。これは、ノード間の通信を調停するために常に使用可能でなければならない中央サーバーがないことを意味します。これは、既存のホストで何も再構成せずに、関係者間に信頼できる環境を確立したい状況に最適です。ノード間のすべてのトラフィックはVPNを介して暗号化でき、VPNインターフェイスでのみトラフィックを受け入れるようにサービスとファイアウォールの両方を構成できます。PeerVPNを使用する利点は次のとおりです。シンプルで直感的な構成。多くのVPNとは異なり、PeerVPNはごくわずかな作業でセットアップでき、中央サーバーを必要としません。暗号化されたネットワーク通信のための汎用ソリューション。一部のトンネリングオプションとは異なり、VPNは_any_トラフィック用の安全なネットワークを提供します。暗号化通信は一度設定するだけで、すべてのサービスで使用できます。サーバー間の通信に必要な接続は1つだけです。トンネリングソリューションとは異なり、2つのRedisサーバーが通信するために必要な構成は1つだけです。欠点は次のとおりです。Ubuntuには現在、デフォルトリポジトリにPeerVPN用のパッケージがありません。含まれているinitスクリプトはないため、ブート時に必要な接続を自動的に作成するには、initスクリプトを作成する必要があります。これらの特性を念頭に置いて、始めましょう。Redisサーバーおよびクライアントパッケージをインストールする始める前に、1台のマシンにRedisサーバーをインストールし、もう1台のマシンにクライアントパッケージを用意する必要があります。これらのいずれかまたは両方がすでに設定されている場合は、お気軽にスキップしてください。PPAを使用して、Redisの最新バージョンをインストールします。サードパーティのリポジトリを使用する場合は、常に注意してください。Leaは信頼できるパッケージャーであり、いくつかの人気のあるオープンソースプロジェクトの高品質で最新のパッケージを維持しています。次のように入力して、PPAを追加し、最初のマシンにRedisサーバーソフトウェアをインストールします。*と入力して、このプロセス中にプロンプ​​トを受け入れます。インストールが完了したら、次のように入力して、Redisサービスにローカルに接続できることをテストします。pingソフトウェアがインストールされて実行されている場合、次のように表示されます。outputPONG後で使用できるキーを設定しましょう。PeerVPNを構成した後、クライアントマシンからこのキーにアクセスしようとします。16.04マシンはクライアントとして機能します。redis-toolsリモートRedisサーバーのデフォルト構成とファイアウォールがアクティブになっているため、現在、テストするためにリモートRedisインスタンスに接続することはできません。各コンピューターにPeerVPNをインストールする次に、各サーバーとクライアントにPeerVPNをインストールする必要があります。前述のように、Ubuntuのリポジトリには現在PeerVPNパッケージが含まれていません。[プロジェクトのウェブサイト]の[ダウンロード]セクションにLinux用のコンパイル済みバイナリが含まれています。そのページで静的にリンクされたLinuxバイナリのリンクを右クリックしてコピーし、最新バージョンを使用していることを確認します。+`を使用してコピーしたリンクをダウンロードします。https://peervpn.net/files/次のように入力して、ダウンロードしたtarballを抽出します。+`ディレクトリにコピーします。/etcこれでPeerVPNがシステムにインストールされ、すぐに使用できます。PeerVPNネットワークを構成する実行可能ファイルと構成ファイルを適切な場所に配置すると、各マシンでPeerVPNを構成できます。安全な秘密鍵の生成PeerVPNは、最大512文字の共有シークレットを使用して、正当なマシンをネットワークに対して認証します。ネットワークトラフィックの整合性を保護するために、強力な値を使用することが重要です。これは共有シークレットであるため、ネットワークに対して1つの値を生成するだけで済みます(これにはRedisサーバーマシンを使用しますが、どちらを選択してもかまいません)。最大長の強力な秘密を生成する簡単な方法の1つは、OpenSSLを使用することです。」を削除して高エントロピーシークレットを生成します。+」を追加して、最後の新しい行を追加します。output生成された出力をコピーして、PeerVPN構成で使用できるようにします。/etc/peervpn.conf内部には、各構成オプションを説明するコメントがあります。これらを読んで、利用可能な設定に慣れてください。構成は非常に簡単です。構成行をファイルの先頭に追加するか、ファイル全体のコメントで適切な行を見つけてコメント解除し、定義できます。`を設定することから始めます。これらは両方とも、VPN内の各マシンで同じでなければなりません。」を明示的に設定して、ファイアウォールを簡単に調整できるようにします(このガイドでは7000を使用します)。interface」の名前を設定します。IPアドレスを割り当てる必要があります。notation]を使用して行われます。VPNネットワークを10.8.0.0/24として定義します。これにより、10.8.0から始まる254の潜在的なアドレス(必要以上)が得られます。各アドレスは一意である必要があるため、次を使用します。+`を使用して、ネットワーク内にある他のサーバーを指定します。PeerVPNは集中管理サーバーを使用しないため、これらのホストは初期化中にVPNネットワークに参加するために接続されます。接続後、サーバーはネットワーク上の追加ピアに関する情報を自動的に受信します。IPアドレスではない)およびPeerVPNリスニングポートを使用して指定する必要があります。追加のピアを同じ行に指定し、スペースで区切ることもできます(例については、ファイル内のコメントを参照してください)。7000完了したら、ファイルを保存して閉じます。+`の値のみが異なります。PeerVPN用のsystemdユニットファイルを作成するPeerVPNをサービスとして管理し、起動時にネットワークを開始するために、systemdユニットファイルを作成します。system`ディレクトリで新しいユニットファイルを開き、開始します。+」セクションを作成し、ネットワークが利用可能になった後にこのユニットが開始されるように順序を確立します。`セクションを開きます。+`バイナリを呼び出し、作成した構成ファイルを指すようにするだけです。+`セクションを含めます。/etc/peervpn.conf[Install]WantedBy=multi-user.target終了したら、ファイルを保存して閉じます。+」ユニットを起動して有効にします。peervpn.serviceサーバー上の接続をリッスンしているサービスを確認すると、IPv4とIPv6の両方のインターフェイス(利用可能な場合)のポート7000でリッスンしているPeerVPNが表示されます。4609/peervpnPeerVPNはパブリックインターフェイスでリッスンしていますが、ファイアウォールはトラフィックを通過させるようにまだ構成されていない可能性があります。24ネットワーク自体からのトラフィックを許可する必要があります。10.8.0.0/24これにより、PeerVPNがリッスンしているパブリックインターフェイスのポート7000へのアクセスが開かれます。トラフィックがVPNから自由に流れるようにします。IPアドレスを使用して他のサーバーにアクセスできるかどうかを確認します。Redisサーバーから次のように入力できます。ping問題なく接続できるはずです。Redisサーバー設定の調整VPNがセットアップされたので、Redisがリッスンしているインターフェイスを調整する必要があります。デフォルトでは、Redisはローカルインターフェースにのみバインドします。RedisサーバーでRedis構成ファイルを開きます。+`ディレクティブを検索します。これは現在127.0.0.1に設定されているはずです。IPアドレスを最後に追加します。.完了したら、ファイルを保存して閉じます。次のように入力して、Redisサービスを再起動します。redis-server.serviceこれで、RedisサービスがVPNピアからの接続に使用できるようになります。これは、リスニングポートを再確認することで確認できます。4609/peervpnこの例の一番上の行で、RedisがVPNインターフェースをリッスンしていることがわかります。Redisクライアントからの接続をテストするVPNを実行し、RedisがVPNネットワークでリッスンしている場合、RedisクライアントマシンがRedisサーバーにアクセスできることをテストして確認できます。outputPONGこのガイドの冒頭で設定したテストキーを照会します。output"success"これにより、リモートデータベースに正常にアクセスできることが確認されます。マルチクライアントおよびサーバー間通信の上記の例を拡張する上記で概説した例では、単一のRedisサーバーと単一のクライアントの簡単な例を使用しました。これはより複雑な相互作用に対応するために簡単に拡張できます。PeerVPNはメッシュネットワークを使用するため、クライアントまたはサーバーを追加するのは簡単です。新しいピアは次の手順を完了する必要があります。tarballをダウンロードし、ファイルを抽出して配布することにより、PeerVPNをインストールします他のサーバーからPeerVPN構成をコピーし、これらのディレクティブを調整します。systemdユニットファイルを新しいクライアントマシンにコピーしますPeerVPNサービスを開始し、起動時に開始できるようにしますファイアウォールで外部ポートとVPNネットワークを開きます(Redisサーバーのみ)新しいVPNインターフェースにバインドするようにRedis設定を調整します結論Redisは強力で柔軟なツールであり、多くの展開にとって非常に貴重です。Redisを安全でない環境で運用することは、サーバーやデータを攻撃や盗難に対して脆弱なままにする大きな問題です。信頼できる関係者のみが存在する分離されたネットワークがない場合は、他の手段でトラフィックを保護することが不可欠です。このガイドで概説されている方法は、Redisパーティ間の通信を保護するための1つの方法にすぎません。[stunnel]またはhttpsを使用した暗号化トンネルの構成が含まれます。