YAHAMA RTX830を使用したOCI IPSec VPN接続例(IKEv2)

# 概要
YAHAMA RTX830を使用してOCIにIPSec VPNで接続する設定例を以前に投稿しました。
[YAHAMA RTX830を使用したOCI IPSec VPN接続例](https://qiita.com/tktk2712/items/03c3360173135e0a702b)
この記事はIKEv1で設定しましたが今回はIKEv2を使用しています。
# 何がいいの?

[公式ガイド](https://docs.oracle.com/ja-jp/iaas/Content/Network/Reference/yamahartx.htm)ではIKEv1を使った設定例が紹介されておりますがIKEv2を使った設定例の情報はありません。将来IKEv1サポート終了した場合においてもIKEv2に設定することにより資産の有効活用が可能です。

# 構成
<img width="700" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/35f5a5c2-b10a-3d71-cd1a-f84adba4a234.png">

# 設定例
* OCI
OCIコンソール　ナビゲーションメニューからネットワーキング>>サイト間VPNを選択します。
作成については以下のサイトをご参照ください。
サイト間VPNの設定
https://docs.oracle.com/ja-jp/iaas/Content/Network/Tasks/settingupIPsec.htm

ここでは作成済みの設定となります。
OCIコンソール　ナビゲーションメニューからネットワーキング>>サイト間VPNから対象のVPNを選択
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/1f094a8c-ac75-c78f-6e32-bbc66eb3a650.png">
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/bf39b6ef-d026-0daa-b9ba-0a262bbdf7ff.png">

<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/9c5ce520-909a-6474-8d76-1525ede37a31.png">
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/2d8e1c61-f766-cee4-35ef-c5c985377294.png">
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/e2fca5d5-416c-f783-839a-d8a1fef5dcd6.png">
<img width="600" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/56a17a31-eff3-ef74-6f51-453647321eac.png">

* RTX830
ファームウェアバージョンはRev.15.02.30です。
AccesslistやVRRPは環境に応じて設定が必要です。

Config
```config
login password *
administrator password encrypted *
login user admin *
user attribute connection=serial,telnet,remote,ssh,sftp,http gui-page=dashboard
,lan-map,config login-timer=300
user attribute admin connection=serial,telnet,remote,ssh,sftp,http gui-page=das
hboard,lan-map,config login-timer=2678400
console character en.ascii
login timer 3600
ip route default gateway 【LAN GW】
ip lan1 address 192.168.100.1/24
ip lan2 address 【LAN IP】
tunnel select 1
 description tunnel OCI-VPN1
 ipsec tunnel 1
  ipsec sa policy 1 1 esp aes256-cbc sha256-hmac
  ipsec ike version 1 2
  ipsec ike duration child-sa 1 3600
  ipsec ike duration ike-sa 1 28800
  ipsec ike encryption 1 aes256-cbc
  ipsec ike group 1 modp1536
  ipsec ike hash 1 sha256
  ipsec ike keepalive log 1 off
  ipsec ike keepalive use 1 on rfc4306 5 4
  ipsec ike local address 1 【LAN IP】
  ipsec ike local name 1 【LAN IP】 ipv4-addr
  ipsec ike nat-traversal 1 on
  ipsec ike pfs 1 on
  ipsec ike proposal-limitation 1 on
  ipsec ike pre-shared-key 1 text 【PreSharedKey】
  ipsec ike remote address 1 【OCI_Global_IP1】
  ipsec ike remote name 1 【OCI_Global_IP1】 ipv4-addr
  ipsec ike negotiation receive 1 off
 ip tunnel address 192.168.0.9/30
 ip tunnel remote address 192.168.0.10
 ip tunnel mtu 1340
 ip tunnel tcp mss limit 1300
 tunnel enable 1
tunnel select 2
 description tunnel OCI-VPN2
 ipsec tunnel 2
  ipsec sa policy 2 2 esp aes256-cbc sha256-hmac
  ipsec ike version 2 2
  ipsec ike duration child-sa 2 3600
  ipsec ike duration ike-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 rfc4306 5 4
  ipsec ike local address 2 【LAN IP】
  ipsec ike local name 2 【LAN IP】 ipv4-addr
  ipsec ike nat-traversal 2 on
  ipsec ike pfs 2 on
  ipsec ike proposal-limitation 2 on
  ipsec ike pre-shared-key 2 text 【PreSharedKey】
  ipsec ike remote address 2 【OCI_Global_IP1】
  ipsec ike remote name 2 【OCI_Global_IP1】 ipv4-addr
  ipsec ike negotiation receive 2 off
 ip tunnel address 192.168.0.13/30
 ip tunnel remote address 192.168.0.14
 ip tunnel mtu 1340
 ip tunnel tcp mss limit 1300
 tunnel enable 2
bgp use on
bgp autonomous-system 64512
bgp log neighbor
bgp neighbor 1 31898 192.168.0.10 hold-time=180 local-address=192.168.0.9 ignore-capability=on
bgp neighbor 2 31898 192.168.0.14 hold-time=180 local-address=192.168.0.13 ignore-capability=on
bgp import filter 1 include 192.168.100.0/24
bgp import 31898 static filter 1
ipsec auto refresh on
syslog notice on
syslog debug off
telnetd service off
sshd service on
sshd host key generate *
sftpd host any
statistics traffic on
```

<font color="Red">IKEv1からIKEv2に変更した場合の考慮事項です</font>

IKEバージョンを2に指定します。
```
ipsec ike version 1 2
```

Phase1のライフタイムは28800秒、Phase2のライフタイムは3600秒を設定します。

```
ipsec ike duration child-sa 1 3600
ipsec ike duration ike-sa 1 28800
```

キープアライブはRFC4306(IKEv2 標準)を設定します。
```
ipsec ike keepalive use 1 on rfc4306 5 4
```

自分側のセキュリティ・ゲートウェイの名前を設定します。
```
ipsec ike local name 1 【LAN IP】 ipv4-addr
```

相手側のセキュリティ・ゲートウェイの名前を設定します。
```
ipsec ike remote name 1 【OCI_Global_IP1】 ipv4-addr
```

以下はipsec ike remote nameからIPアドレスが特定できれば不要とのことですが一旦設定しました。
```
ipsec ike remote address 1 【OCI_Global_IP1】
```
提案するアルゴリズムをipsec sa policyで設定したアルゴリズムに限定します。
このコマンドが設定されていない場合サポートするすべてのアルゴリズムを同時に提案するとのことです。
```
ipsec ike proposal-limitation 1 on
```
詳細内容については以下も合わせてご参照下さい。
[ヤマハルーターに搭載されているIKEv2の機能](https://www.rtpro.yamaha.co.jp/RT/docs/ipsec/ike2.html)

# 結果

- IPSec状況
```
# show ipsec sa
Total: isakmp:2 send:2 recv:2

sa    sgw isakmp connection    dir  life[s] remote-id
----------------------------------------------------------------------------
1     1    -     ike           -    28790   【OCI_Global_IP1】
2     2    -     ike           -    28790   【OCI_Global_IP2】
3     1    1     tun[0001]esp  send 3590    【OCI_Global_IP1】
4     1    1     tun[0001]esp  recv 3590    【OCI_Global_IP1】
5     2    2     tun[0002]esp  send 3590    【OCI_Global_IP2】
6     2    2     tun[0002]esp  recv 3590    【OCI_Global_IP2】

tunnel2#
```
- ルートテーブル
```
# show ip route  
Destination         Gateway          Interface       Kind  Additional Info.
default             【LAN GW】             LAN2    static  
10.105.1.0/24       192.168.0.10      TUNNEL[1]       BGP  path=31898
10.105.2.0/24       192.168.0.10      TUNNEL[1]       BGP  path=31898
192.168.0.8/30      -                 TUNNEL[1]  implicit  
192.168.0.12/30     -                 TUNNEL[2]  implicit  
192.168.100.0/24    192.168.100.1          LAN1  implicit  
【LANセグメント】/24   【LAN IP】　　        LAN2  implicit  
# 
```

- Pingテスト
OCIサーバーからオンプレへのping結果
``` 
[user@linux ~]$ ping 192.168.100.102
PING 192.168.100.102 (192.168.100.102) 56(84) bytes of data.
64 bytes from 192.168.100.102: icmp_seq=1 ttl=125 time=178 ms
64 bytes from 192.168.100.102: icmp_seq=2 ttl=125 time=187 ms
64 bytes from 192.168.100.102: icmp_seq=3 ttl=125 time=188 ms
64 bytes from 192.168.100.102: icmp_seq=4 ttl=125 time=188 ms
64 bytes from 192.168.100.102: icmp_seq=5 ttl=125 time=198 ms
64 bytes from 192.168.100.102: icmp_seq=6 ttl=125 time=194 ms
64 bytes from 192.168.100.102: icmp_seq=7 ttl=125 time=186 ms
^C
--- 192.168.100.102 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6000ms
rtt min/avg/max/mdev = 177.923/188.524/198.271/5.940 ms
```

オンプレからOCIサーバーへのping結果
``` 
C:\Path\to>ping 10.105.2.100 -t

10.105.2.100 に ping を送信しています 32 バイトのデータ:
10.105.2.100 からの応答: バイト数 =32 時間 =192ms TTL=60
10.105.2.100 からの応答: バイト数 =32 時間 =185ms TTL=60
10.105.2.100 からの応答: バイト数 =32 時間 =198ms TTL=60
10.105.2.100 からの応答: バイト数 =32 時間 =190ms TTL=60
10.105.2.100 からの応答: バイト数 =32 時間 =198ms TTL=60

10.105.2.100 の ping 統計:
    パケット数: 送信 = 5、受信 = 5、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 185ms、最大 = 198ms、平均 = 192ms
```