ノート:
- このチュートリアルではOracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructure資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了する場合は、これらの値をクラウド環境に固有の値に置き換えてください。
LinuxおよびLibreswanからのECMPルーティングを使用したHAモードでのOracle Cloud Infrastructureサイト間VPNサービスの使用
イントロダクション
相互に接続された今日の世界では、ネットワーク間で送信されるデータの可用性とセキュリティを確保することが重要です。この重要なニーズに対応するために、Oracle Cloudは、可用性の高いIPSecトンネルを確立する機能など、堅牢なネットワーキング機能を提供します。このチュートリアルでは、高可用性IPSecトンネルの概念を確認し、等コスト・マルチパス(ECMP)プロトコルを使用してOracle Cloudに自己回復性ネットワーク・アーキテクチャを設定するプロセスをガイドします。
このチュートリアルでは、Oracle Cloud環境用に最適化された強力でセキュアなオペレーティング・システムであるOracle Linuxと、確立されたIPSecクライアントであるLibreswanを使用して、ルートベース・モードでIPSecトンネルを確立することに重点を置きます。Oracle Cloud Infrastructure (OCI)によって提供されるDynamic Routing Gateway (DRG)機能を利用して、複数のIPSecトンネル間のシームレスなフェイルオーバーおよびロード・バランシングを実現します。
目的
アクティブ/アクティブ・シナリオでのロード・バランシング・トラフィックにECMPルーティング・プロトコルを使用してOCIにIPSecトンネルを実装するための包括的なガイドを提供します。
- サイト間IPSecプロトコルの基本の理解
- 様々なIPSecモードの理解: トランスポートとトンネル、ポリシー・ベースとルート・ベース
- ECMPロード・バランシングによるOracle LinuxでのLibreswanの構成
- 冗長なIPSecトンネル用のDRGv2の構成
- Iperf3を使用したテスト・トンネルの冗長性およびロード・バランシング
このチュートリアルに従うことで、OCIのIPSecを包括的に理解できるようになります。冗長接続を通じてオンプレミス・インフラストラクチャをOCIと効果的に相互接続するために必要なスキルを習得します。
前提条件
-
アクティブなOCIテナント。OCIでネットワーク・リソースを作成および管理するために必要な権限が必要です。
-
Linux OS、ネットワーキングの概念およびOCIの基本的な理解。これには、IPアドレス指定、サブネット化、ルーティング、ファイアウォールなどの基本的なネットワーク概念に精通することが含まれます。
-
インストールおよび構成方法など、Oracle Linuxの基本的な理解。Oracle Linuxを初めて使用する場合は、事前に基本的なOracle Linuxチュートリアルまたはガイドに従ってください。
-
適切なルーティング・ルール、インターネット・ゲートウェイ、DRGおよびセキュリティ・リストが構成された、OCIで設定された仮想クラウド・ネットワーク(VCN)およびサブネット。
-
OCIコンソールまたはOCI CLIを使用してネットワーク・リソースを作成および管理する方法をよく理解します。
ノート: ネットワーク構成を本番環境に実装する前に、OCIでネットワーク構成およびIPSecを試すテスト環境を設定することをお薦めします。
IPSec VPNとは
インターネットプロトコルセキュリティー(IPSec)は、暗号化セキュリティーサービスを使用して、インターネットプロトコル(IP)ネットワーク上のプライベートでセキュアな通信を確保するためのオープン標準のフレームワークです。IPSecは、ネットワーク・レベルのデータ整合性、データ機密性、データ・オリジン認証およびリプレイ保護をサポートしています。IPSecはインターネット層(レイヤー3)で統合されているため、TCP/IPスイートのほとんどすべてのプロトコルに対してセキュリティが提供され、IPSecがアプリケーションに透過的に適用されるため、TCP/IPを使用するアプリケーションごとに個別のセキュリティを構成する必要はありません。
IPSecは、信頼できないコンピュータからのネットワークベースの攻撃、アプリケーション、サービス、またはネットワークのサービス拒否につながる可能性のある攻撃に対して、多層防御を提供するのに役立ちます。
- データ破損
- データ窃盗
- ユーザー資格の盗難
- サーバー、ほかのコンピュータ、およびネットワークの管理制御。
サイト間VPN
サイト間 IPSec (Internet Protocol Security) VPN (ネットワーク間VPNとも呼ばれる)は、インターネット上の2つ以上のネットワーク間でセキュアで暗号化された接続を確立します。これにより、地理的に分散したサイト間でデータを安全に送信でき、ネットワークの範囲が物理的境界を超えて広がる仮想プライベート・ネットワーク(VPN)が作成されます。
サイト間IPSec VPNでは、参加しているネットワーク(通常は同じ組織の異なる組織またはリモート・ブランチに属する)は、専用のIPSecトンネルを介して接続されます。これらのトンネルは、ネットワークトラフィックをカプセル化および暗号化し、インターネットなどの信頼できないネットワークを横断しながら、その機密性、整合性、および信頼性を確保します。
一方、ポイントツーサイトVPN (P2S)は、個々のクライアント・デバイスとリモート・ネットワーク間のセキュアな接続を確立します。ネットワークを接続するサイト間VPNとは異なり、P2S VPNは、個々のデバイスがネットワーク・リソースにアクセスするためのセキュアなリモート・アクセスを可能にします。P2S VPNは、外部の場所から組織のネットワークに接続する必要があるリモート従業員、請負業者またはモバイル・ユーザーに対してセキュア・アクセスを有効にするために一般的に使用されます。
ノート: このチュートリアル・スコープは、現在OCI DRGv2でサポートされている唯一のサイト間IPSec VPNに制限されています。
VPN IPSecトンネルの概念
IPSecは、インターネット・プロトコル・セキュリティまたはIPセキュリティを表します。IPSecは、パケットがソース・ノードから宛先に転送される前にIPトラフィック全体を暗号化するプロトコル・スイートです。IPSecは、次の2つのモードで構成できます。
-
トランスポート・モード: IPSecはパケットの実際のペイロードのみを暗号化または認証(あるいはその両方)し、ヘッダー情報は元のままです。
-
トンネル・モード: IPSecはパケット全体を暗号化または認証(あるいはその両方)します。暗号化の後、パケットはカプセル化されて、異なるヘッダー情報を持つ新しいUDP IPパケットを形成します。
IPSec VPNサイト間トンネルを使用すると、次の利点があります:
-
データの送信に公共通信回線が使用されるため、サイト間で専用の高価なリース明細を購入する必要はありません。
-
参加しているネットワークとノードの両方の内部IPアドレスは、外部ユーザーには非表示になります。
-
ソース・サイトと宛先サイト間の通信全体が暗号化されるため、情報窃取が大幅に減少します。OCIは、VPN IPSecのトンネル・モードのみをサポートしており、Webコンソールを使用してセルフサービスとして提供されます。
ノート: OCIサイト間VPNは、OCIで使用可能な唯一のモードになるように、トンネル・モードのみをサポートしています。
アーキテクチャ
ECMPを使用したOCI IPSecは、次のリストで構成されています。
-
DRGv2は、デフォルト・ルート表および自動生成されたルート表RT2 "VCNアタッチメントの自動生成されたDrgルート表"を使用して、VCN1およびVCN2にアタッチされています(リージョン・フランクフルト)。
-
2つのトンネルを含むIPSec接続を持つ同じDRGv2:
- トンネル1、自動生成されたルート表RT1のOracle VPN IPアドレス193.122.x.x「RPC、VCおよびIPSecアタッチメント用の自動生成されたDrgルート表」
- トンネル2、自動生成されたルート表RT1「RPC、VCおよびIPSecアタッチメント用の自動生成されたDrgルート表」を含むOracle VPN IPアドレス158.101.x.x。
-
オンプレミスからのECMPサポート、プライベートCIDR範囲192.168.0.0/16、パブリックIP 143.47.48.219で実行されるIPSecクライアントとしてのOracle Linux VM。
-
Iperf3 (Oracle Linuxではクライアントとして、Oracle OCIではサーバーとして)
-
パブリックIP 143.47.x.xを使用してLibreswanとして構成されたCPE。
-
ECMP対応のOracle Linux 8およびOCI側。
タスク1: OCI設定の構成
このチュートリアルでは、1つのOracle Linux 7 VMインスタンスを作成し、それにLibreswan 3.25をインストールしました。LibreswanをLinuxにインストールするには、OracleドキュメントLibreswanを使用した他のクラウドへのアクセスに従ってください。Libreswanは、選択した環境にインストールできます。このチュートリアルでは、OCIの別のリモート・リージョンをLibreswanクライアントおよびトンネル・イニシエータとして選択しました。
(まだ構成していない) Libreswanをインストールしたら、Linux 7 VMのパブリックIPと、LibreswanをインストールしたプライベートIPv4 CIDRの範囲をメモします。
次に、OCI設定を構成します
-
OCIコンソールにログインし、「ネットワーキング」タブに移動して、次のようにVCN1およびVCN2を作成します: VCNの作成。
-
CIDR 10.0.0.0/16および2つのサブネット(サブネットA 10.0.1.0/24およびサブネットB 10.0.0.0/24)を含むVCN1を作成します。
-
CIDR 172.20.0.0/16および2つのサブネット(サブネットC 172.20.1.0/24およびサブネットD 172.20.2.0/24)を含むVCN2を作成します。
-
IPSecトンネルをテストするために、OCIのターゲット・サブネットにVMを作成します。このチュートリアルでは、3つのVM (origin1、origin2およびorigin3)を作成しました。
-
次に、「ネットワーキング」、「顧客接続」、「Dynamic Routing Gateways」のDRGを作成します。
-
DRGが作成されたら、VCN1とVCN2の両方にVirtual Cloudネットワーク・アタッチメントを作成する必要があります。
-
作成後、VCNアタッチメント(メイン・アーキテクチャのRT2ルーティング表)のAutoGenerated DRGルーティング表を使用して、両方のVCNをDRGに接続する2つのネットワーク・アタッチメント(VCNごとに1つ)が作成されます。
-
このルーティング表は、DRGに、接続されたばかりのVCNからの受信トラフィックへの送信/ルーティングを指示します: 「宛先CIDR」宛のトラフィックはすべて、次のように「次のホップ・アタッチメント」に送信/ルーティングされます:
-
その後、IPSecトンネルを作成する際、IPSecトンネルを介したオンプレミスからの受信トラフィックに対して、同様の自動生成されたルーティング表が作成されます。
-
-
次に、IPSec接続を作成します。IPSecを作成する前に、IPSec、ネットワーキング、顧客接続、顧客構内機器、CPEの作成の下、IPSecを介してOCIに接続するオンプレミス・デバイスを表す顧客構内機器(CPE)を作成する必要があります:
-
X.X.X.Xは、オンプレミス・デバイスの接続元のPUBLIC IPアドレスである必要があります。これを、前のステップでインストールしたLibreswan Oracle Linuxマシンに割り当てられたプライベートIPアドレスと混同しないでください。Oracle Linux VMがNATの背後になる可能性が非常に高くなります(パブリックIPを直接所有していません)。パブリックIPアドレスがわからない場合は、Linuxコンソールからいつでも次のコマンドを実行して確認できます:
curl ifconfig.co
。 -
このチュートリアルでは、ベンダーLibreswanバージョン3.18以降を選択します。
-
-
ネットワーキング、顧客接続、サイト間VPN、IPSec接続の作成に移動し、次の詳細を指定します。
ノート: VPNウィザードを使用できますが、このチュートリアルでは対象外です。
-
IPSec構成の名前
-
コンパートメントに作成: コンパートメント
-
コンパートメント内の顧客構内機器: 前のステップで作成したCPEを選択します
- このCPEはNATデバイスの背後にある: これは、オンプレミスからOCIにInternet Key Exchange (IKE) IDをどのように提示するかに直接影響します。LibreswanがNATの背後に実行されている場合、LibreswanがIKE IDとして実行されているプライベートIPを使用する場合は、このオプションをマークしてください。それ以外の場合は、Libreswanの接続元のパブリックIPを使用する場合は、このオプションをマークしないでください。このIKE IDは、後でLibreswan構成から構成します。
-
動的ルーティング・ゲートウェイ・コンパートメント: 前のステップで構成したDRGを選択します。
-
オンプレミス・ネットワークへのルート: 動的ルーティングは、このチュートリアルの範囲外です。ルート・ベースのIPSec構成を使用したロード・バランシングおよび冗長性のためのECMPに重点を置きます。ここには、OCIからオンプレミスにリーチしたいオンプレミスのルート/CIDRSを手動/統計で追加します。このチュートリアルでは、192.168.0.0/16をオンプレミスCIDRとして使用します。
-
トンネル1:
- 名前
- 顧客共有シークレットの指定: 独自のIKE事前共有キー(パスワード)を使用するか、空白のままにして、OCIでこれを選択できます(後からLibreswanの設定時に使用します)
- IKEバージョン: このチュートリアルでは、IKEv1を使用します
- ルーティング・タイプ: このチュートリアルでは、ルート・ベースのIPSec構成に静的ルーティングを使用するため、「静的ルーティング」を選択します
- トンネル・インタフェース内のIPv4 - CPEおよびOracle: このオプションは空白のままにします
- IPv6アドレス指定: このチュートリアルではIPv6の範囲外であるため、空白のままにします
-
トンネル2: トンネル1 (IKEバージョン、ルーティング・タイプなど)とまったく同じ方法でトンネル2に入力します。
-
-
「IPSec接続の作成」をクリックします。すべてがうまくいった場合は、数分後に、冗長性のために2つのトンネルを使用してIPSec構成を実行する必要があります。
-
DRGとIPSecが導入されたので、OCIのVCNからオンプレミスへのすべてのトラフィックがDRGへの道を見つけることを確認する必要があります。トラフィックがDRGに到達すると、最近構成された2つのIPSecトンネルを介してオンプレミスにトンネルされます。そのためには、VCN内のすべてのサブネット・ルート表のルート・ルールとしてオンプレミスCIDRを追加する必要があります(チュートリアルでデフォルトのルート表を選択)、ターゲット・タイプ「Dynamic Routing Gateway」、宛先タイプ「CIDRブロック」、次にオンプレミス・ルート(この場合は192.168.0.0/16)を追加します。
ノート: このルートを追加する必要がある理由は、OCIにVCNレルム外のCIDRアドレスの暗黙的なルーティングがないためです。そのため、トラフィックがDRGに到達するように、CIDRブロックを手動で追加する必要があります。
-
タスク2: LinuxおよびLibreswanの設定の構成
チュートリアルのこの部分は、Linux OSおよびLibreswanの構成ステップに焦点を当てます。以前にインストールしたLibreswanは、サイト間トンネル・イニシエータとして、OCI DRGはトンネル・レスポンダとして動作します。
-
SSH経由でOracle Linux OSにアクセスします。重要な(admin)コマンドを実行するための権限を高めます。
-
sudo su
: rootユーザーになります。 -
Libreswanが正しいバージョン(ipsec -version)でインストールされていることを確認します。Libreswanバージョン3.25以上が表示されます。そうでない場合は、タスク1: OCI設定の構成に移動し、指示に従ってLibreswanをインストールします。
-
構成フォルダ
cd /etc
に移動します。 -
Libreswanでは、すべてのトンネル構成が
ipsec.conf
ファイルに格納されます。お気に入りのファイル・エディタを使用します。「vi」は適切なオプションです:vi ipsec.conf
-
Libreswan ipsec.conf:
-
conn [TunnelName1}: トンネル名
-
type= トンネル(Tunnel mode)
-
authby=secret (認証はシークレットパスフレーズを使用します)
-
pfs=yes (Perfect Forward Secrecy enabled)
-
keyexchange=ike
-
leftid= n.n.n.n (これは、Libreswanの接続元のパブリックIPアドレスです。これは、IPSecの作成時にオプション「CPE is behind NAT」を選択していないかぎり、IKE ID識別子として使用されます。その場合、任意のIPアドレスまたは完全修飾ドメイン名(FQDN)を識別子として設定できます)
-
leftsourceip= m.m.m.m (これはLibreswanに割り当てられたプライベートIP、つまり192.168.1.1)
-
leftsubnet= x.x.x.x/x (これはLibreswanに割り当てられたCIDRブロック、つまり192.168.0.0/16)
-
right= y.y.y.y (これは、ネットワーキング、顧客接続、サイト間VPN、YourIPSECでのIPSec作成中にtunnel1に割り当てられたOCI VPNのパブリックIPアドレスです)
-
rightid= y.y.y.y (これはOCIから送信されるIKE IDです。通常はOCI VPNのパブリックIPアドレスで、通常は右のパラメータと同じです)
-
leftsubnet=0.0.0.0/0 (これは、SA Traffic SelectorネゴシエーションのInternet Key Exchange (IKEv2)プロトコル2.2.9の一部としてOCIに送信されるCIDRブロックです。これは、OCIからのすべてのトラフィックがオンプレミスにルーティングされることを意味するわけではありません。かわりに、このCIDRブロックによって、IPSecトンネルを介して受け入れ、暗号化およびトンネリングされる特定のトラフィックが決まります。ここで説明するIPSecトンネルは、トンネル自体を表す仮想ネットワーク・インタフェース(仮想ネットワーク・カードなど)として機能する仮想トンネル・インタフェース(VTI)と呼ばれる仮想インタフェースによって表されます。VTIがvti01という名前であるとします。vti01インタフェースにルーティングされるトラフィックは、IPSecトンネルの一部になり、接続の他方の端にセキュアに送信されます。このアプローチは、ルーティングの決定が特定のIPSecトンネルとそれに関連付けられたVTIに基づいて行われるもので、IPSecルートベースのルーティングと呼ばれます)
-
rightsubnet=0.0.0.0/0 (オンプレミスからOCIに受け入れられるトラフィックの場合と同じ)
-
mark=n/0xffffffff (このVTIインタフェースに関連付けられた IPSecトンネル内にカプセル化されたパケットをマークするために、VTIインタフェースで使用する必須オプション。すべてのトンネル間で一意である必要があります。つまり、5/0xffffffff*)
-
VTI-interface=vtinn (*VTIインタフェースの名前、つまり vti01*)
-
VTI-routing=no (ルートをVTIデバイスに自動的に作成するかどうか。0.0.0.0/0ルートを自動的に作成しないため、「いいえ」を選択します)。
-
encapsulation= yes/auto (yesはNAT検出コードを強制的に嘘をつき、リモートピアに RFC-3948カプセル化(ポート4500 UDPパケットのESP)を通知します。自動により、NAT自動検出が強制されます)
-
aggrmode= なし
-
IKE=aes_cbc256-sha2_384;modp1536 (接続に使用されるIKE暗号化/認証アルゴリズム(フェーズ1 aka ISAKMP SA)。形式は「cipher-hash;modpgroup、 cipher-hash;modpgroup、 ...」です。)
-
esp=aes_gcm256;modp1536 (子 SAネゴシエーションに対して提供または承認されるアルゴリズムを指定します。ESPの形式はENC-AUTHで、そのあとに1つのオプションの PFSgroupが続きます。たとえば、"aes_gcm256"、"aes256-sha2_512-dh14"または"aes-sha2_512+sha2_256"です)
-
ikev2= no (IKEv2を使用するには、ikev2=insistに変更)
-
-
-
構成フォルダ
cd /etc/ipsec.d
に移動します。 -
Libreswanでは、すべてのトンネルがシークレット(パスワード)を共有する
shared.secrets
ファイルに格納されます。-
Libreswan shared.secrets形式: 左右: PSK "secret"
-
leftid: IPSec.conf (左)で構成されたIKE ID。通常、LibreswanパブリックIPアドレス。
-
right: OCIトンネルのパブリックIPアドレス。
-
secret: OCIで構成されている現在のトンネルの共有シークレット/パスワード。この情報は、ネットワーキング、顧客接続、サイト間VPN、YourIPSEC、TunnelName、トンネル情報、共有シークレット、表示のOCIコンソールから取得できます。
-
-
-
-
このチュートリアルでは、次の
ipsec.conf
およびshared.secrets
を作成しました(パブリックIPは非表示です):ipsec.conf
shared.secrets
-
次に、OCIに対して2つのHAトンネルを確立します。
-
Libreswanサービスを再起動します。rootとして、
ipsec restart
を実行します。すべてが正常な場合、エラーは表示されません。それ以外の場合は、次のように表示されます。制御プロセスがエラー・コードで終了したため、ipsec.serviceのジョブが失敗しました。詳細は、「systemctl status ipsec.service」および「journalctl -xe」を参照してください。
-
次に、IPSecトンネルの現在のステータスを確認します:
ipsec status
を実行します。現在のトンネルについて、ESP(データ・プレーン)やIKE(シグナリング・プレーン)、許可されるサブネットなどについて多くの情報が表示されます。ここでは、接続リストに焦点を当てます。000接続リスト:
000
000合計 IPSec接続数: *loaded 0、 active 0
-
現在、ロードされたトンネル構成はありません。どちらもアクティブではありません。
-
ipsec auto --add ConnName1
(ipsec auto --add home_liftvti
など)を実行します。- 002は接続の説明"home_liftvti"を追加しました<- これで、接続はまだアクティブではありません"loaded"になりました。ipsecステータスでチェックします。
-
ipsec auto --up ConnName1
を実行して、トンネル1 (ipsec auto --up home_liftvti
)を開始します。すべてがうまくいった場合は、IPSec SA確立されたトンネル・モードが表示されます。そうしないと、トラブルシューティングに必要な様々なIKE/IPSecエラーが表示されます。 -
次に、2番目のトンネルの方向を示します。ipsec auto -add ConnName2を実行します。つまり、ipsec auto -add home_liftvti2を実行します。
- 002は接続の説明"home_liftvti2"を追加しました<- これで、接続はまだアクティブではありません"loaded"になりました。ipsecステータスで確認
-
ipsec auto -up ConnName2を実行してトンネル1 (つまり、ipsec auto -up home_liftvti2)を開始します。エバースが正常に終了すると、「IPSec SA確立されたトンネル・モード」が表示されます。そうしないと、トラブルシューティングが必要になる様々なIKE/IPSecエラーが表示されます
-
タスク3: IPルーティングおよびトンネル・トラフィックの構成
このチュートリアルのこの部分は、IPルーティングとトンネルトラフィックに焦点を当てます。
-
両方のトンネルが稼働しているので、LibreswanからOCIの一部のマシンにpingして、トンネルをテストしてみましょう。たとえば、origin1にIP 10.0.0.109をpingします。失敗することがわかります。
PING 10.0.0.109 (10.0.0.109) 56(84) bytes of data. 10.0.0.109 ping statistics 26 packets transmitted, 0 received, 100% packet loss,
-
IPSecトンネルがOCIに対して稼働していても、なぜ動作しないのか疑問に思われるかもしれません。答えは、OCIに対して確立した2つのトンネルがルート・ベースであり、すべてのトンネルが仮想インタフェース(VTI)で表されるためです。すべてのVTIを、IPSecトンネルを表す仮想ネットワークインタフェースカード(NIC)として表示できます。VTIにルーティングされるトラフィックは、ESP (Encapsulating Security Payload)プロトコルを使用してカプセル化され、トンネルのもう一方の端に送信されます。VTIは、IPSecトンネルを介してセキュリティー保護および送信する必要があるトラフィックのゲートウェイとして機能します。
-
テスト・シナリオでは、2つのVTIインタフェースvti01およびvti02があり、それぞれがOCI DRGに対するhome_liftvtiおよびhome_liftvti02を表します。Linuxコマンド
ifconfig
を実行して、簡単に確認できます。 -
ここでは、これらのVTIインタフェースにLinux OSルートを追加して、トラフィックが2つのトンネルを介してOCIに到達するようにします。VTIインタフェースに送信されるトラフィックは、関連するIPSecトンネルにカプセル化され、OCIにルーティングされることに注意してください。
-
ルートを追加するコマンドの形式は次のとおりです:
ip route add {vcnCidrBlock} nexthop dev {vti1} weight {priority}nexthop dev {vti2} weight {priority}
` -
テスト・ケースでは、CIDR 10.0.0.0/16でOCI VCN1に到達できるようにしたいと考えています。ip route add 10.0.0.0/16 nexthop dev vti01 weight 1 nexthop dev vti02 weight 1
-
-
これでpingはすぐに動作します。
ping 10.0.0.109 PING 10.0.0.109 (10.0.0.109) 56(84) bytes of data. 64 bytes from 10.0.0.109: icmp_seq=1 ttl=61 time=29.0 ms 64 bytes from 10.0.0.109: icmp_seq=2 ttl=61 time=29.4 ms 64 bytes from 10.0.0.109: icmp_seq=3 ttl=61 time=29.0 ms
-
現在、2つのトンネルが動作しています。
タスク4: ECMPロード・バランシングおよび冗長性の構成
このチュートリアルのこの部分は、ECMPのロード・バランシングと冗長性に焦点を当てます。
-
チュートリアルのこの時点で、現在、OCIとの間に2つのIPSecトンネルが確立され、動作しています。どちらのトンネルも、テスト・ケース192.168.0.0/16で指定されたオンプレミス・ネットワークへの同一のルートを使用しています。
-
トンネル1 192.168.0.0/16 ->オンプレミス
-
トンネル2 192.168.0.0/16 ->オンプレミス
-
-
両方のトンネルが同じオンプレミス・ルート(192.168.0.0/16)を使用しているため、このルートは残りのDRGネットワーク・アタッチメントに伝播され、他のネットワーク要素(VCN、サブネットなど)がIPSecを介してオンプレミスに到達できるようになります。次の図に示すように、VCNアタッチメントの自動生成DRG表の2つのIPSecトンネルで同じになる、ルート192.168.0.0/16で競合が発生します。
-
この構成では、一方のトンネルのみを使用し、もう一方のトンネルは無視されます。このチュートリアルの目的は、高可用性(アクティブ/アクティブ)を達成し、2つのトンネル・スループットを追加することでパフォーマンスを2倍にするために、両方のトンネルを同時に使用できるようにすることです。ここでECMPが登場します。ECMPをアクティブ化するには、まず、すべてのVCNアタッチメント(ネットワーキング、顧客接続、動的ルーティング・ゲートウェイ、DRGName、DRGルート表の詳細、「編集ボタン」)に対して自動生成DRG表で有効化する必要があります(すべてのDRGアタッチメント表でこれを実行する必要があります)。
-
VCNアタッチメントの自動生成DRGルート表でのルートの競合が解決されたことがわかります。
-
LinuxおよびLibreswanでECMPをアクティブ化します。均等コストのマルチパス・ルーティング(ECMP)をサポートするために、Linuxでは、マルチパス・ルートに使用するハッシュ・ポリシーを制御する新しい
sysctl
設定であるfib_multipath_hash_policy
を使用したハッシュ・ポリシーの選択が導入されています。fib_multipath_hash_policy
が1に設定されている場合、カーネルはL4ハッシュを実行します。これは、5タプル(ソースIP、ソース・ポート、宛先IP、宛先ポート、IPプロトコル・タイプ)の値セットに従って、IPv4パケットのマルチパス・ハッシュです。fib_multipath_hash_policy
が0 (デフォルト)に設定されている場合、L3ハッシュのみが使用されます(ソースおよび宛先IPアドレス)。Linuxコンソールで、rootとして次を実行します。sysctl -w net.ipv4.fib_multipath_hash_policy=1
-
これでECMPが両端でアクティブ化されました。そのため、両方のトンネルがアクティブ/アクティブ・モードで使用され、2つのIPSecトンネルの合計スループットが追加されます。テストでは、
iperf3
コマンドを使用してトラフィックを検査し、次の結果を取得しました。From Libreswan: iperf3 -c 10.0.0.109 -b 1100Mb -P 8 -t 300 From OCI Origin1: iperf3 -s [SUM] 0.00-1.75 sec 249 MBytes 1.20 Gbits/sec 7122 sender
関連リンク
承認
著者 - LuisCatalán Hernández(OCI Cloud Network Specialist and Multi Cloud)、Antonio Gamir(OCI Cloud Network Specialist)
その他の学習リソース
docs.oracle.com/learnで他のラボをご覧いただくか、Oracle Learning YouTubeチャネルでより無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Use Oracle Cloud Infrastructure Site-to-Site VPN service in HA mode with ECMP routing from Linux and Libreswan
F84216-01
July 2023
Copyright © 2023, Oracle and/or its affiliates.