OCI と VPN(IPsec) 接続する YAMAHA RTX810 の設定

## はじめに
OCI に VPN(IPsec) 接続したいという要望がありました。公式のサイトに記載の無かった **YAMAHA RTX810** で接続できましたので、ここに手順を示します。

・公式のサイト
　Title: **Oracle Cloud InfrastructureとVPN(IPsec)接続するルーターの設定 : コマンド設定**
　URL: https://network.yamaha.com/setting/router_firewall/cloud/oracle_cloud/setup_rt

:::note warn
◆抜粋
本機能の対応機種は、RTX5000、RTX3510、RTX3500、RTX1300、RTX1220、RTX1210、RTX830、NVR700Wです。
:::

## 前置き
OCI 側の設定の記載はありません。OCI 側の設定は完了していることが前提となります。
OCI 側で必要な情報は [**ネットワーキング**] - [**顧客接続性**] - [**サイト間VPN**] の「**IPsecの接続情報**」から、トンネル１と２の【**Oracle VPN IPアドレス**】および各トンネルの【**共有シークレット**】となります。

ルータ(YAMAHA RTX810)は VPN の接続設定のみの記載となります。

## 構成例

| 項目 | 設定内容 | 備考 |
|:------------:|:------------:|:------------:|
| 拠点 CIDR | 192.168.100.0/24 |  |
| OCI VCN CIDR | 10.0.0.0/16 |  |
| 拠点 VPN 装置のIPアドレス | 203.0.113.130/28 |  |
| OCI VPN IP アドレス (トンネル1) | 198.51.100.77 |  |
| OCI VPN IP アドレス (トンネル2) | 198.51.100.88 |  |

## 設定手順

**1. NATの設定**
```
ip lan2 nat descriptor 200
nat descriptor type 200 masquerade
nat descriptor address outer 200 primary
nat descriptor masquerade static 200 1 192.168.100.1 udp 500
nat descriptor masquerade static 200 2 192.168.100.1 esp
nat descriptor masquerade static 200 3 192.168.100.1 udp 4500
```
* * *

**2. トンネルインタフェースの設定**
```
tunnel select 1
 ipsec tunnel 1
```
* * *

**3. SAポリシーを定義**
```
  ipsec sa policy 1 1 esp aes256-cbc sha-hmac
```
* * *

**4. IKEの暗号アルゴリズム、ハッシュアルゴリズム、グループ、寿命の設定**
```
  ipsec ike duration ipsec-sa 1 3600
  ipsec ike duration isakmp-sa 1 28800
  ipsec ike encryption 1 aes256-cbc
  ipsec ike group 1 modp1536
  ipsec ike hash 1 sha256
```
* * *

**5. キープアライブの設定**
```
  ipsec ike keepalive log 1 off
  ipsec ike keepalive use 1 on dpd 5 4
```

:::note warn
注意
キープアライブの方式ですが公式のサイトにある heartbeat ではトンネルのアップダウンが頻繁に繰り返されました(追記参照)。DPD(Dead Peer Detection) にしております。
:::
* * *

**6. OCI で取得した【共有シークレット】の設定**
```
  ipsec ike pre-shared-key 1 text 7BxgJNkZ0bBZZ5yIH7wVsypRUm9n9CnLhVgsmog7ztF94NzOHyy9Tqdacm5
```
:::note alert
警告
このキーは記事掲載用に ChatGPT にて生成したランダムな文字列です。実際に使われているものではありません。
:::
* * *

**7. ルータ(YAMAHA RTX810)側のグローバル IP アドレスを設定**
```
  ipsec ike local address 1 203.0.113.130
  ipsec ike local id 1 203.0.113.128/28
```
:::note info
参考
この IP アドレス(203.0.113.128/28)は、RFC 5737 によりドキュメンテーション目的で予約されています。この IP アドレスを使用して公開情報を作成しても、他のネットワークに影響を与えることは無いため記事掲載用に使用しています。
:::
* * *

**8. OCI で取得した【Oracle VPN IPアドレス】を設定**
```
  ipsec ike remote address 1 198.51.100.77
  ipsec ike remote id 1 192.168.100.0/24
```
:::note info
参考
この IP アドレス(198.51.100.77)は、RFC 5737 によりドキュメンテーション目的で予約されています。この IP アドレスを使用して公開情報を作成しても、他のネットワークに影響を与えることは無いため記事掲載用に使用しています。
:::
* * *

**9. IPsec NAT トラバーサルを利用するための設定**
```
  ipsec ike nat-traversal 1 on
```
* * *

**10. PFS を用いるか否かの設定**
```
  ipsec ike pfs 1 on
```
* * *

**11. TCP セッションの MSS 制限の設定**
```
 ip tunnel tcp mss limit auto
```
* * *

**12. トンネルインターフェースを有効化**
```
 tunnel enable 1
```
* * *

**13. 拠点 VPN 装置側から IKE を開始する設定**
```
ipsec auto refresh on
```
* * *

**14. トンネル２の設定**
```
tunnel select 2
 ipsec tunnel 2
  ipsec sa policy 2 2 esp aes256-cbc sha-hmac
  ipsec ike duration ipsec-sa 2 3600
  ipsec ike duration isakmp-sa 2 28800
  ipsec ike encryption 2 aes256-cbc
  ipsec ike group 2 modp1536
  ipsec ike hash 2 sha256
  ipsec ike keepalive log 2 off
  ipsec ike keepalive use 2 on dpd 5 4
  ipsec ike pre-shared-key 2 text KakcHSJob0jy4XMZZP2yIH7wVsypRUm9n9CnihVgsmog7ztF94NzOHyy9Tq
  ipsec ike local address 2 203.0.113.130
  ipsec ike local id 2 203.0.113.128/28
  ipsec ike remote address 2 198.51.100.88
  ipsec ike remote id 2 192.168.100.0/24
  ipsec ike nat-traversal 2 on
  ipsec ike pfs 2 on
 ip tunnel tcp mss limit auto
 tunnel enable 2
```
* * *

**15. ゲートウェイの設定**
```
ip route 10.0.0.0/16 gateway tunnel 1 hide gateway tunnel 2 hide
```
:::note warn
注意
この IP アドレス(10.0.0.0/16) は OCI の VCN の【**IPv4 CIDRブロック**】です。
:::
* * *

## ルータ(YAMAHA RTX810)の接続画面

![YAMAHA_RTX810.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521649/83fe40d2-2c63-90b5-097f-6f30d2060ce0.png)


## 終わり
設定は以上となります。

## 追記
(2023/12/28)
・キープアライブの設定を修正しました。

```修正前.txt
ipsec ike keepalive use 1 on heartbeat 10 4
```

```修正後.txt
ipsec ike keepalive use 1 on dpd 5 4
```

**heartbeat** を設定した場合、トンネルのアップダウンが頻繁に繰り返されました(show log.txt 参照)。YAMAHA RTX810 の場合は **DPD(RFC3706)** を使用した方が良さそうです。

```show log.txt
[IKE] heartbeat: dead peer detection SA[1] 198.51.100.77
[IKE] initiate ISAKMP phase to 198.51.100.77 (local address 203.0.113.130)
[IKE] initiate informational exchange (delete)
IP Tunnel[1] Down
[IKE] initiate IPsec phase to 198.51.100.77
IP Tunnel[1] Up
[IKE] initiate informational exchange (delete)
```

:::note info
参考
キープアライブの方式としては、heartbeat、ICMP Echo、DPD(RFC3706) の 3 種類から選ぶことができます。
:::

## 追記
(2024/06/21) 
本記事は「IPoE 接続」で検証したものでした。
「PPPoE 接続」で実施しようとしたところ、設定が足りていませんでした。更新致しますのでしばらくお待ち下さい。

(2024/10/28)
上記の更新はまだです（忘れていました）。
微修正を行いました。