

# RDS Custom for Oracle プライマリインスタンスとレプリカインスタンス間の VPN トンネルの設定
<a name="cfo-standby-vpn-tunnel"></a>

VPN トンネルは、ネットワーク上の 2 つ以上のデバイス間の暗号化された接続です。RDS Custom for Oracle で Oracle Data Guard インスタンスのセキュリティを最高レベルまで高めるために、プライマリインスタンスとスタンバイインスタンス間に VPN トンネルを実装し、通信を暗号化するすることを強くお勧めします。VPN トンネルは、インスタンス間で機密データがネットワークを移動する際のにセキュリティを保護します。この設定はオプションですが、データを保護し、規制に準拠するためのベストプラクティスとしてお勧めします。

次の前提条件を満たしていることを確認します。
+ プライマリホストとスタンバイホストへのルートアクセスがあること。
+ `ipsec` コマンドを実行するための技術的な専門知識があること。

**RDS Custom for Oracle でプライマリとレプリカ間に VPN トンネルを設定するには**

1. 次のルールを使用して、プライマリインスタンスとスタンバイインスタンスの両方のセキュリティグループを許可リストに追加します。

   ```
   ACTION FLOW SOURCE PROTO PORT
   
   ALLOW ingress this-SG 50 (ESP) all (N/A)
   ALLOW egress this-SG 50 (ESP) all (N/A)
   
   ALLOW ingress this-SG 17 (UDP) 500 (IKE)
   ALLOW egress this-SG 17 (UDP) 500 (IKE)
   ```

1. root ユーザーに切り替えます。

   ```
   $ sudo su – root
   ```

1. プライマリインスタンスとスタンバイインスタンスの両方で次のコマンドを実行して、`root` ユーザーのネットワークセキュリティサービス (NSS) データベースを初期化します。

   ```
   ipsec initnss --nssdir /etc/ipsec.d
   ```

1. 次のように RSA キーを生成します。

   1. プライマリインスタンスで、OS のバージョンに応じて次のいずれかの `ipsec` コマンドを使用し、キーを生成します。

      ```
      ipsec newhostkey --nssdir /etc/ipsec.d       ## for Oracle Linux Version 8
      ipsec newhostkey --output /etc/ipsec.secrets ## for Oracle Linux version 7.9
      ```

   1. 構成を作成するために必要なパブリックキーを取得します。次の `ipsec` の例では、`left` が設定中のデバイスを参照し、`right` がトンネルの他方の終端にあるデバイスを参照するため、プライマリインスタンスは `left` になります。

      ```
      ipsec showhostkey --left --ckaid ckaid-returned-in-last-statement
      ```

   1. スタンバイインスタンスで、スタンバイインスタンスのキーを生成します。

      ```
      ipsec newhostkey --nssdir /etc/ipsec.d       ## for Oracle Linux Version 8
      ipsec newhostkey --output /etc/ipsec.secrets ## for Oracle Linux version 7.9
      ```

   1. スタンバイ インスタンスの構成を作成するために必要なパブリックキーを取得します。次の例では、トンネルの他方の終端にあるデバイスを参照している `right` がスタンバイインスタンスになります。

      ```
      ipsec showhostkey --right --ckaid ckaid-returned-in-last-statement
      ```

1. 取得した RSA キーに基づいて、構成を生成します。構成は、プライマリインスタンスとスタンバイインスタンスで同じになります。プライマリインスタンスの IPv4 アドレスも、スタンバイインスタンスの IPv4 アドレスも、AWS コンソールで確認できます。

   プライマリインスタンスとスタンバイインスタンスの両方で、次の構成をファイル `/etc/ipsec.d/custom-fb-tunnel.conf` に保存します。

   ```
   conn custom-db-tunnel
    type=transport
    auto=add
    authby=rsasig
    left=IPV4-for-primary 
    leftrsasigkey=RSA-key-generated-on-primary
    right=IPV4-for-standby
    rightrsasigkey=RSA-key-generated-on-standby
   ```

1. プライマリインスタンスとスタンバイインスタンスの両方のホストで `ipsec` デーモンを起動します。

   ```
   ipsec setup start
   ```

1. プライマリインスタンスまたはスタンバイインスタンスでトンネルを起動します。出力は以下の例のようになります。

   ```
   [root@ip-172-31-6-81 ~]# ipsec auto --up custom-db-tunnel
   181 "custom-db-tunnel" #1: initiating IKEv2 connection
   181 "custom-db-tunnel" #1: sent IKE_SA_INIT request to 172.31.32.196:500
   182 "custom-db-tunnel" #1: sent IKE_AUTH request {cipher=AES_GCM_16_256 integ=n/a prf=HMAC_SHA2_512 group=DH19}
   003 "custom-db-tunnel" #1: initiator established IKE SA; authenticated peer '3584-bit PKCS#1 1.5 RSA with SHA1' signature using preloaded certificate '172.31.32.196'
   004 "custom-db-tunnel" #2: initiator established Child SA using #1; IPsec transport [172.31.6.81-172.31.6.81:0-65535 0] -> [172.31.32.196-172.31.32.196:0-65535 0] {ESP/ESN=>0xda9c4815 <0xb742ca42 xfrm=AES_GCM_16_256-NONE DPD=passive}
   [root@ip-172-31-6-81 ~]#
   ```