Oracle Cloud Infrastructureドキュメント

Libreswanによるその他のクラウドへのアクセス

このトピックでは、Libreswan VMをCPE (Customer Premises Equipment)として使用するIPSec VPNを使用して、Oracle Cloud Infrastructure仮想クラウド・ネットワーク(VCN)を別のクラウド・プロバイダに接続する方法を示します。

ここに示す例では、もう一方のクラウド・プロバイダはAmazon Web Services (AWS)です。 この接続は、Oracle環境とAmazon環境の間で安全かつ暗号化されたサイト間IPSec VPNです。 2つのクラウド内のリソースは、同じネットワーク・セグメント内にあるかのように、プライベートIPアドレスを使用して互いに通信できます。

この構成は、Libreswanバージョン3.23を使用して検証されました。

Libreswanによるルート・ベースのVPN

Libreswanは、ルーティング・ベースおよびポリシーベースのトンネルの両方をサポートします。 トンネル・タイプは、互いに干渉せずに共存できます。 Oracle VPNのヘッド・ポイントでは、ルーティング・ベースのトンネルが使用されます。 Oracleでは、「仮想トンネル・インタフェース(VTI)の構成構文」を使用してLibreswanを構成することをお勧めします。

アーキテクチャ

次の図は、接続の一般的なレイアウトを示しています。

このイメージは、IPSec VPNとLibreswan CPEで接続された2つのクラウドの一般的なレイアウトを示しています。

必要な人材と知識

通常、次のタイプの人員がOracle Cloud Infrastructureを使用してIPSec VPNを設定します:

  • 仮想ネットワークとIPSec VPNに必要なクラウド・コンポーネントを設定するためにOracle Cloud Infrastructure コンソールを使用する「Dev Opsチーム・メンバー」 (または同様の機能)。
  • 「ネットワーク・エンジニア」 (または同様の機能)。Dev Opsチーム・メンバーから提供された情報でオンプレミス・ルーターを構成します。

ヒント

Dev Opsチーム・メンバーは、クラウド・コンポーネントの作成と管理に必要な権限を持っている必要があります。
Oracle Cloud Infrastructureテナンシのデフォルトの管理者であるか、「管理者グループ」のメンバーである場合は、必要な権限が付与されています。 ネットワーク・コンポーネントへのアクセスを制限する方法については、「アクセス制御」を参照してください。

担当者は、以下の概念と定義に精通している必要があります:

クラウド・リソース
クラウド・プラットフォームでプロビジョニングするもの。 たとえば、Oracle Cloud Infrastructureを使用すると、クラウド・リソースは、プラットフォーム上のVCN、コンピュート・インスタンス、ユーザー、コンパートメント、ロード・バランサ、またはその他のサービス・コンポーネントを参照できます。
サードパーティのクラウド・プロバイダ
AWSなどの別のクラウド・プロバイダ。 クラウド・プロバイダのプロビジョニングと構成プロセスを理解して、サードパーティのクラウドとOracle Cloud Infrastructure VCNの間でIPSec VPNを確立するために必要なリソースを作成できるようにする必要があります。
オンプレミス
従来のデータセンター環境を指す、クラウド・テクノロジで広く使用されている用語。 オンプレミスとは、ロケーションのシナリオ、専用のフロア・スペース、専用のデータセンター・ビルディング、またはデスクの下にあるデスクトップのことです。
オラクル・クラウド識別子(ocid)
Oracle Cloud Infrastructureでプロビジョニングする各リソースに割り当てられた一意の識別子。 OCIDは、Oracleが自動的に生成する長い文字列です。 OCIDの値を選択することも、リソースOCIDを変更することもできません。 詳細は、「リソース識別子」を参照してください。

収集する情報

次の表は、Oracle Cloud Infrastructure VCNとAWS VPC間の接続を設定するために必要な基本的なネットワーク値を示しています。 次の表では、ユーザーはあなたまたはあなたの会社の誰かです。

構成ファイル・テンプレートで使用される値と変数 ソース 値と注釈の例

Oracle VCN CIDRブロック

${VcnCidrBlock}

ユーザー(Oracle)

172.0.0.0/16

Oracle Cloud Infrastructure VCNに選択したCIDR。

AWS VPC CIDRブロック

ユーザー(AWS)

10.0.0.0/16

AWS VPCに対して会社が選択したCIDR。

AWS LibreswanパブリックIP

${cpePublicIpAddress}

ユーザー(AWS)

AWS VMパブリックIP - 34.200.255.174

LibreswanホストのパブリックIPアドレス。

AWS LibreswanローカルIP

${cpeLocalIP}

ユーザー(AWS)

AWS VMプライベートIP - 10.1.2.3

Libreswanホストに直接構成されたIPアドレス。 ホストが1-1 NATの背後に存在しない場合、この値はLibreswan publicインタフェース(34.220.255.174)と同じになります。

Oracle VPNヘッド・エンドIPSecトンネル・エンドポイント(トンネル当たり1つ)

${ipAddress1}

${ipAddress2}

OracleコンソールまたはAPI

トンネル1: 129.146.12.53

トンネル2: 129.146.13.53

IPSec接続をDRGとCPEの間で作成するときに、Oracleが各トンネルに割り当てるIPアドレス(「Oracle Cloud Infrastructure DRGとCPEの構成」を参照)。

Oracle VPNトンネル共有シークレット(トンネル当たり1つ)

${psk1}

${psk2}

OracleコンソールまたはAPI

トンネル1: EXAMPLEDPfAMkD7nTH3SWr6OFabdT6exXn6enSlsKbE

トンネル2: EXAMPLEDfeSD6VNe7OfelTIKfjbxWfejPniQkNDpfjh7dwL

DRGとCPE間のIPsec接続を作成するときに各トンネルにOracleが割り当てるIPSec IKE事前共有キー(「Oracle Cloud Infrastructure DRGとCPEの構成」を参照)。

Libreswan VTIラベル(トンネル当たり1つ)

${vti1}

${vti2}

ユーザー

トンネル1: vti01

トンネル2: vti02

各トンネル仮想トンネル・インタフェースに割り当てる名前。 それぞれの値は、Libreswanホストで一意である必要があります。

AWS Libreswan構成を開始

  1. AWS ConsoleまたはAPIを使用して、プロビジョニング・プロセスを使用してLibreswan VMを作成します。 メインのオペレーティング・システムとしてOracle Linux、CentOS、またはRed Hatを使用してください。
  2. 新しいインスタンスが起動したら、SSHで接続し、Libreswanパッケージをインストールします:

    sudo yum -y install libreswan
  3. AWS Consoleで、インスタンスを右クリックし、Networkingをクリックし、Change Source/Destをクリックして、Libreswan VMインスタンスのソースと宛先のチェックを無効にします。 Check. プロンプトが表示されたら、「はい、無効にします」をクリックします。

    このイメージは、Libreswan VMインスタンスのソース/宛先チェックを無効にするための「AWS Console」ダイアログ・ボックスを示しています。

  4. Libreswan VMでは、IP_forwardを構成して、AWSクライアントがLibreswan VM経由でトラフィックを送受信できるようにします。 /etc/sysctl.confファイルで、次の値を設定し、sudo sysctl -pで更新を適用します。

    net.ipv4.ip_forward=1
    net.ipv4.conf.all.accept_redirects = 0
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.eth0.send_redirects = 0
    net.ipv4.conf.default.accept_redirects = 0
    net.ipv4.conf.eth0.accept_redirects = 0
  5. AWSコンソールで、AWSルート表を編集します。 宛先としてVCN CIDR (172.0.0.0/16)を、AWS LibreswanインスタンスID (この例ではi-016ab864b43cb368e)をターゲットとしてルールを追加します。

    このイメージには、ルート・ルールを編集するための「AWS Console」ダイアログ・ボックスが表示されます。

  6. AWSコンソールで、ポート4500とポート500のインバウンドTCPとUDPトラフィックを有効にし、AWS Libreswan VMとのOracle Cloud Infrastructure IPSec VPN通信を許可します。 このタスクには、AWSセキュリティ・グループとネットワークACLの両方の編集が含まれます。 ソース値は、0.0.0.0.0ではなくOracleパブリックIP (Oracle VPNヘッド・エンドIPSecトンネル・エンドポイント)に設定できます。

    セキュリティ・グループの場合:

    このイメージには、セキュリティ・グループのルールを編集するための「AWS Console」ダイアログ・ボックスが表示されます。

    ネットワークACLの場合:

    このイメージは、ネットワークACLを編集するための「AWS Console」ダイアログ・ボックスを示しています。

  7. Libreswan IPSec構成ファイルを作成します:

    sudo mv /etc/ipsec.conf /etc/ipsec.conf.bck
    sudo vi /etc/ipsec.conf and include the following:
    config setup
        plutoopts="--perpeerlog"
        protostack=auto
    include /etc/ipsec.d/*.conf
    include /etc/ipsec.d/*.secrets   
    

Oracle Cloud Infrastructure DRGとCPEの構成

  1. Oracle コンソールで、Libreswan AWSインスタンスのパブリックIPアドレス(34.200.255.174)をポイントするCustomer-Premises Equipment (CPE)オブジェクトを作成します。

    このイメージは、CPEを作成するためのOracleコンソールを示しています。

  2. VCNにDRGがまだアタッチされていない場合: Oracle コンソールでDRGを作成し、VCN (172.0.0.0/16)にアタッチします。

    このイメージは、DRGをVCNにアタッチするためのOracle Consoleを示しています。

  3. Oracle コンソールで、IPSec接続を作成し、AWS VPC CIDR (10.0.0.0/16)をポイントします。 言い換えれば、IPSec接続を作成するときは、静的ルートをAWS VPC CIDRに設定します。

    このイメージは、IPSec接続を作成するためのOracleコンソールを示しています。

    Oracleは、トンネルを作成して、それぞれに次のアイテムを割り当てます。

    • Oracle VPNヘッド・エンドIPSecトンネル・エンドポイント(次のイメージ内の129.146.13.53は、トンネルの1つのみを示します)
    • Oracle VPNトンネルの共有シークレット(次の図で修正されています)

    これらの値は、IPSec接続のアクション・アイコン(3つの点)をクリックしてから、「トンネル情報」をクリックして表示できます。 最初は、AWS Libreswan VMで後で実行するための追加構成があるため、各トンネルはDOWN状態(オフライン)になっています。

    このイメージは、Oracleコンソールとトンネル状態をDOWNとして示しています。

  4. Oracle コンソールでVCNセキュリティ・リストを編集し、AWSセキュリティ・グループとネットワークACLのように、ポート4500とポート500のイングレスTCPとUDPトラフィックを有効にします。 永続的なパブリックIPの場合は、0.0.0.0/0の代わりにAWS Libreswan VMパブリックIPアドレスを使用できます。 また、AWS VPC CIDR (10.0.0.0/16)からのイングレス・トラフィック用のすべてのプロトコルとポートを開きます。 忘れない: セキュリティ・リストはサブネットに関連付けられているため、AWS VPCと通信する必要がある各サブネットに関連付けられたセキュリティ・リストを編集します。

    このイメージは、Oracleコンソールおよびセキュリティ・リストのイングレス・ルールを示しています。

  5. Oracle コンソールで、VCNルート表を編集して、AWS VPC CIDR (10.0.0.0/16)を宛先CIDRブロックとして、前に作成したDRGをターゲットとして追加するルールを追加します。 忘れない: ルート表はサブネットに関連付けられているため、AWS VPCと通信する必要がある各サブネットに関連付けられたルート表を編集します。 次のスクリーンショットは、VCNのデフォルト・ルート表を示しています。

    このイメージは、Oracleコンソールとルート・ルールを示しています。

構成ファイルの設定: /etc/ipsec.d/oci-ipsec.conf

/etc/ipsec.d/oci-ipsec.confファイルには次のテンプレートを使用します。 このファイルは、IPSec接続を設定するときにOracleが作成する2つのトンネルを定義します。 ${ipAddress1}などの変数を特定の値に置き換えます(「収集する情報」の表を参照)。

重要

CPEが1-1 NATデバイスの背後に存在する場合は、rightidパラメータを検出し、${cpePublicIpAddress}と同じ値に設定します。

conn oracle-tunnel-1
     left=${ipAddress1}
     right=${cpeLocalIP}
     # rightid=${cpePublicIpAddress} # See preceding note about 1-1 NAT device
     authby=secret
     leftsubnet=0.0.0.0/0 
     rightsubnet=0.0.0.0/0
     auto=start
     mark=5/0xfffffff1 # Needs to be unique across all tunnels
     vti-interface=${vti1}
     vti-routing=no
     encapsulation=no
conn oracle-tunnel-2
     left=${ipAddress2} 
     right=${cpeLocalIP}
     # rightid=${cpePublicIpAddress} # See preceding note about 1-1 NAT device
     authby=secret
     leftsubnet=0.0.0.0/0
     rightsubnet=0.0.0.0/0
     auto=start
     mark=5/0xfffffff2 # Needs to be unique across all tunnels
     vti-interface=${vti2}
     vti-routing=no
     encapsulation=no

秘密ファイルの設定: /etc/ipsec.d/oci-ipsec.secrets

/etc/ipsec.d/oci-ipsec.secretsファイルには次のテンプレートを使用します。 IPSec接続ごとに2行が存在します(トンネルごとに1行ずつ)。

${cpePublicIpAddress} ${ipAddress1}: PSK "${psk1}"
${cpePublicIpAddress} ${ipAddress2}: PSK "${psk2}"

Libreswan構成の再ロード

構成ファイルおよびシークレット・ファイルを設定した後、Libreswanサービスを再起動する必要があります。

重要

Libreswanサービスを再起動すると、既存のトンネルに影響する場合があります。

次のコマンドは、構成ファイルを再スキャンし、Libreswanサービスを再起動します。 非特権ユーザー・アカウントを使用してログインしている場合は、コマンドの前にsudoを使用する必要があります。

service ipsec restart

Libreswanステータスの確認

次のコマンドを使用して、Libreswanトンネルの現在の状態を確認します。

ipsec status

トンネルは、次の行を含む行が表示された場合に確立されます。

STATE_MAIN_I4: ISAKMP SA established

将来、LibreswanトンネルについてOracleを指定してサポート・チケットを開く必要がある場合は、前述のipsec statusコマンドの出力を含めます。

トンネル・インタフェースのステータスを確認してください

仮想トンネル・インタフェースの位置を確認するには、ifconfigコマンドまたはip link showコマンドを使用します。 また、インタフェースを使用してtcpdumpなどのアプリケーションを使用することもできます。

次に、ifconfig出力の例を示します。

ifconfig
<output trimmed>
				
vti01: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
     inet6 fe80::5efe:a00:2 prefixlen 64 scopeid 0x20<link>
     tunnel txqueuelen 1000 (IPIP Tunnel)
     RX packets 0 bytes 0 (0.0 B)
     RX errors 0 dropped 0 overruns 0 frame 0
     TX packets 0 bytes 0 (0.0 B)
     TX errors 10 dropped 0 overruns 0 carrier 10 collisions 0

vti02: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
     inet6 fe80::5efe:a00:2 prefixlen 64 scopeid 0x20<link>
     tunnel txqueuelen 1000 (IPIP Tunnel)
     RX packets 0 bytes 0 (0.0 B)
     RX errors 0 dropped 0 overruns 0 frame 0
     TX packets 0 bytes 0 (0.0 B)
     TX errors 40 dropped 0 overruns 0 carrier 40 collisions 0

次に、ip link show出力の例を示します。

ip link show
<output trimmed>

9: vti01@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
   link/ipip 10.0.0.2 peer 129.146.12.53

10: vti02@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
   link/ipip 10.0.0.2 peer 129.146.13.53

また、Oracle Cloud Infrastructure Consoleでは、IPSecトンネルはそれぞれUP状態になります。

このイメージは、Oracleコンソールとトンネル状態をUPとして示しています。

IPルーティングの構成

次のipコマンドを使用して、IPSecトンネルを通してVCNにトラフィックを送信する静的ルートを作成します。 非特権ユーザー・アカウントを使用してログインしている場合は、コマンドの前にsudoを使用する必要があります。

ip route add ${VcnCidrBlock} nexthop dev ${vti1} nexthop dev ${vti2}
ip route show

接続のテスト

トンネルが起動したら、Oracle Cloud Infrastructure VMがIPSec接続上のAWS VMと通信できるかどうかをテストできます。 1つの簡単な方法は、pingコマンドです。 次の例は、接続の各側からの正常なpingを示しています。 両方のクラウド・プロバイダのVMは、互いに通信できます。

このイメージは、接続の各側からのpingテストの結果を示しています。