既に他のVPNが確立しているYAMAHA RTX1210とMicrosoft AzureをVPN接続した(IKE SA)

ネットワーク初心者です。
社内オンプレのActive Directoryセカンダリサーバが経年で、Microsoft Azureに置き換えることにしました。
RTX1210とAzureのVPN接続方法は[YAMAHAの公式ページ](https://network.yamaha.com/setting/router_firewall/cloud/microsoft_azure/setup_rt_ikev2)にちゃんと記載がありますが、私の経験不足のためか、数日間ハマってしまったのでメモしておきます。

結論から書くと、__既にVPN（社内RTX⇄各社員の自宅にある仕事用PC）が確立している場合は、ipsecのgateway_idを変えないといけなかった__、という話です。

## 環境
|  設定項目  |  設定値  |
| ---- | ---- |
|  ルータのローカルIPアドレス |  192.168.1.1  |
|  ルータのグローバルIPアドレス |  XXX.XXX.XXX.XXX  |
|  接続先Azureの仮想ネットワークアドレス空間  |  172.16.0.0/16  |
|  接続先AzureのグローバルIPアドレス  |  YYY.YYY.YYY.YYY  |
|  接続先Azureの事前共有鍵  |  ABCdef123GHI456  |
|  RTX1210で今回設定するトンネルのgateway_id  |  35  |


## コマンド

```
ip route 172.16.0.0/16 gateway tunnel 35
ip lan2 secure filter in [すでに設定しているフィルタの番号たち] 200003 200020 200021 200022 200023 200024 200025 200030 200032 200080 200081 200082
ip lan2 secure filter out [すでに設定しているフィルタの番号たち] 200013 200020 200021 200022 200023 200024 200025 200026 200027 200099 dynamic 200080 200081 200082 200083 200084 200085 200098 200099
ip lan2 nat descriptor 200
tunnel select 35
ipsec tunnel 35
ipsec sa policy 35 35 esp aes256-cbc sha256-hmac anti-replay-check=off
ipsec ike version 35 2
ipsec ike duration child-sa 35 27000
ipsec ike duration ike-sa 35 28800
ipsec ike group 35 modp1024
ipsec ike keepalive log 35 on
ipsec ike keepalive use 35 on rfc4306
ipsec ike local address 35 192.168.1.1
ipsec ike local name 35 XXX.XXX.XXX.XXX ipv4-addr
ipsec ike nat-traversal 35 on
ipsec ike message-id-control 35 on
ipsec ike child-exchange type 35 2
ipsec ike pre-shared-key 35 text ABCdef123GHI456
ipsec ike remote address 35 YYY.YYY.YYY.YYY
ipsec ike remote name 35 YYY.YYY.YYY.YYY ipv4-addr
ipsec ike negotiation receive 35 off
ip tunnel tcp mss limit auto
tunnel enable 35
ipsec auto refresh 35 on

ip filter 200000 reject 10.0.0.0/8 * * * *
ip filter 200001 reject 172.16.0.0/12 * * * *
ip filter 200002 reject 192.168.0.0/16 * * * *
ip filter 200003 reject 192.168.1.0/24 * * * *
ip filter 200010 reject * 10.0.0.0/8 * * *
ip filter 200011 reject * 172.16.0.0/12 * * *
ip filter 200012 reject * 192.168.0.0/16 * * *
ip filter 200013 reject * 192.168.1.0/24 * * *
ip filter 200020 reject * * udp,tcp 135 *
ip filter 200021 reject * * udp,tcp * 135
ip filter 200022 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 200023 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 200024 reject * * udp,tcp 445 *
ip filter 200025 reject * * udp,tcp * 445
ip filter 200026 restrict * * tcpfin * www,21,nntp
ip filter 200027 restrict * * tcprst * www,21,nntp
ip filter 200030 pass * 192.168.1.0/24 icmp * *
ip filter 200031 pass * 192.168.1.0/24 established * *
ip filter 200032 pass * 192.168.1.0/24 tcp * ident
ip filter 200033 pass * 192.168.1.0/24 tcp ftpdata *
ip filter 200034 pass * 192.168.1.0/24 tcp,udp * domain
ip filter 200035 pass * 192.168.1.0/24 udp domain *
ip filter 200036 pass * 192.168.1.0/24 udp * ntp
ip filter 200037 pass * 192.168.1.0/24 udp ntp *
ip filter 200080 pass * 192.168.1.1 udp * 500
ip filter 200081 pass * 192.168.1.1 esp * *
ip filter 200082 pass * 192.168.1.1 udp * 4500
ip filter 200098 reject-nolog * * established
ip filter 200099 pass * * * * *
ip filter dynamic 200080 * * ftp
ip filter dynamic 200081 * * domain
ip filter dynamic 200082 * * www
ip filter dynamic 200083 * * smtp
ip filter dynamic 200084 * * pop3
ip filter dynamic 200085 * * submission
ip filter dynamic 200098 * * tcp
ip filter dynamic 200099 * * udp

nat descriptor type 200 masquerade
nat descriptor address outer 200 XXX.XXX.XXX.XXX
nat descriptor masquerade static 200 101 192.168.1.1 udp 500
nat descriptor masquerade static 200 102 192.168.1.1 esp
nat descriptor masquerade static 200 103 192.168.1.1 udp 4500
```

## つまずいたポイント

### ip routeの設定
* `ip route 192.168.16.0/23 gateway tunnel 35` → `ip route`ではVPN接続先（今回の場合は、Azure）のローカルIPアドレス空間を入れる必要があった。このローカルIPアドレス空間を確認するには、Azureにサインインして、「ホーム」から、今回接続する「仮想ネットワーク」を選んで、そこの「概要」に表示されている「アドレス空間」(ZZZ.ZZZ.ZZZ.ZZZ/ZZZ)を入力する。また、tunnel番号(gateway_id)は、1番が既存のVPNで使用されていたので、上書きしてしまうことになった。config.txtを見て、未使用のtunnelを利用する。
* このgateway_idは、公式リファレンス（[http://www.rtpro.yamaha.co.jp/RT/manual/rt-common/ipsec/ipsec_ike_version.html](http://www.rtpro.yamaha.co.jp/RT/manual/rt-common/ipsec/ipsec_ike_version.html)）には「セキュリティ・ゲートウェイの識別子」と書いてある。今回の場合、この「セキュリティ・ゲートウェイの識別子」＝「tunnel番号、トンネルインタフェース番号」となる。

### トンネルフィルタ番号の設定
* `ip lan2 secure filter in`や`ip lan2 secure filter out`のフィルタ番号は、既に設定されているフィルタ番号も併せて入れないと、適用されなくなってしまう。つまり、YAMAHAの公式リファレンスにて記載されているフィルタ番号に加えて、既存のフィルタ番号も入れる必要がある。

### ipsecの設定
* `ipsec sa`や`ipsec ike`の35は、公式ページでは1になっているが、ここではtunnel番号(gateway_id)を入れる。そのため、__既に1を利用している場合は、別の番号を指定しないといけない__。公式リファレンスにもちゃんと書いてあるが、公式リファレンスの意図を試行錯誤しているうちにようやく理解した。
* `ipsec ike local address 35 192.168.1.1`はルータのローカルIPアドレス、`ipsec ike local name 35 XXX.XXX.XXX.XXX ipv4-addr`はルータのグローバルIPアドレスを入れる。
* 一方、`ipsec ike remote address 35 YYY.YYY.YYY.YYY`と`ipsec ike remote name 35 YYY.YYY.YYY.YYY ipv4-addr`は、Azure側のグローバルIPアドレスを入れる。このAzure側のグローバルIPアドレスを確認するには、Azureにサインインして、「ホーム」から、「仮想ネットワークゲートウェイ」を選んで、そこの概要に表示されている「パブリックIPアドレス」を入力する。

## 接続確立の確認
* YAMAHAのRTX1210側からは、「かんたん接続」→「VPN」→「拠点間接続」で、今回設定したtunnel番号の矢印「⇔」が、緑色になっていればOK。
* Azure側は、「ホーム」→「接続」の「状態」が**接続済み**になっていればOK。