Compnet

仕事とか遊びとか、日々折々

2017-07-15(土)

続:YAMAHA RTX で Azure と VPN 接続する

Posted by Nakane, R. in technical   

Note

本記事には後日改めて検証した記事があります。

半年ほど前に本ブログで、YAMAHA RTX ルーターで Azure と VPN 接続をするための設定に関する記事を公開しました。 そこでは、RTX ルーターと Azure の仮想ネットワーク ゲートウェイとで IPsec の VPN トンネルを確立するための RTX ルーターの設定を紹介しています。 また、RTX 側からの SA の更新 (再作成) の失敗により、VPN トンネルを通じた通信ができなくなる現象に対する回避策を紹介しました。

最近になって、とある方々とのやりとりの中で以下のようなご指摘を頂戴しました。

SA のライフタイムは IKEv2 ではネゴシエーションされないので、たとえば RTX 側がデフォルトの 28800 秒の場合だと、recv (Azure -> RTX) 方向の鍵は RTX が 28800 にセットしても、Azure 側が 27000 秒なので、先に更新がかかり問題なく使えるけれど、send (RTX -> Azure) 方向の鍵は、Azure 側で 27000 秒で無効になってしまうので、Azure 側で復号できなくなりトンネルが落ちるのでしょう。

一言でいえば、Azure の SA の有効期間よりも RTX の SA の有効期間が短くなるようにすれば、VPN トンネルを強制的に切断・再接続しなくてもつながり続けている。 という指摘です。

百聞は一見にしかずということで、早速試してみます。

とりあえず試してみる

最初は思い切って短い時間で SA を更新するように、以下のように設定します。 もちろん、前の記事で設定していた schedule at 1 */* 01:00 * ipsec sa delete allschedule at 1 */* 01:00 * no ipsec ike pre-shared-key 100schedule at 5 */* 01:00 * ipsec ike pre-shared-key 100 は全て削除します。

    :
tunnel select 100
 ipsec tunnel 1100
  ipsec sa policy 1100 100 esp anti-replay-check=off
  ipsec ike version 100 2
  ipsec ike duration ipsec-sa 100 3600
  ipsec ike duration ike-sa 100 3600
  ipsec ike keepalive log 100 off
  ipsec ike keepalive use 100 on
  no ipsec ike local address 100
  ipsec ike local name 100 <LAN側IPアドレス> ipv4-addr
  ipsec ike nat-traversal 100 on
  ipsec ike pre-shared-key 100 text <事前共有鍵>
  no ipsec ike remote address 100
  ipsec ike remote name 100 <AzureゲートウェイIPアドレス> ipv4-addr
  ipsec auto refresh 100 on
 ip tunnel tcp mss limit 1350
 tunnel enable 100
tunnel select none
    :

SA の有効期間は 3600 秒 (= 1 時間) にしてみました。 VPN トンネルの確立を確認したら、このまま 1 時間ほど放置します。

1 時間を過ぎたころに SA の状態を見たところ、問題無く SA が更新されていることが確認できました。 VPN トンネルを通じた通信も問題なさそうです。

改めて設定しなおして評価

それでは、RTX 側の SA の有効期間は最長でどのくらいまで引き延ばせるのでしょうか。 以前の記事からすると、Azure 側の有効期間より長くはできなさそうです。 そこで、Azure 側の有効期間と同じにして試してみます。

  :
ipsec ike duration ipsec-sa 100 27000
ipsec ike duration ike-sa 100 28800
  :

RTX 側の SA の有効期間を Azure 側と同じにしたときの、RTX のログは以下の通りです。 IPsec トンネルの確立から有効期間を越えるまでのログです。

2017/07/13 15:01:21: [IKE2] SA:1/IKE temporarily assigned
2017/07/13 15:01:21: [IKE2] SA:1/IKE established
2017/07/13 15:01:21: [IKE2] SA:3/CHLD_SEND temporarily assigned
2017/07/13 15:01:21: [IKE2] SA:4/CHLD_RECV temporarily assigned
2017/07/13 15:01:21: [IKE2] SA:3/CHLD_SEND established
2017/07/13 15:01:21: [IKE2] SA:4/CHLD_RECV established
2017/07/13 15:01:22: IP Tunnel[100] Up
    :
2017/07/13 20:39:17: [IKE2] SA:2/CHLD_SEND temporarily assigned
2017/07/13 20:39:17: [IKE2] SA:9/CHLD_RECV temporarily assigned
2017/07/13 20:39:17: [IKE2] SA:2/CHLD_SEND established
2017/07/13 20:39:17: [IKE2] SA:9/CHLD_RECV established
    :
2017/07/13 21:01:37: [IKE2] SA:10/IKE temporarily assigned
2017/07/13 21:01:37: [IKE2] SA:10/IKE established
    :
2017/07/13 22:08:51: [IKE2] SA:3/CHLD_SEND deleted
2017/07/13 22:08:51: [IKE2] SA:4/CHLD_RECV deleted
    :
2017/07/13 23:01:52: [IKE2] SA:1/IKE deleted
    :
2017/07/14 02:17:10: [IKE2] SA:1/CHLD_SEND temporarily assigned
2017/07/14 02:17:10: [IKE2] SA:5/CHLD_RECV temporarily assigned
2017/07/14 02:17:10: [IKE2] SA:1/CHLD_SEND established
2017/07/14 02:17:10: [IKE2] SA:5/CHLD_RECV established
    :
2017/07/14 03:01:46: [IKE2] SA:6/IKE temporarily assigned
2017/07/14 03:01:46: [IKE2] SA:6/IKE established
    :
2017/07/14 03:46:47: [IKE2] SA:2/CHLD_SEND deleted
2017/07/14 03:46:47: [IKE2] SA:9/CHLD_RECV deleted
    :
2017/07/14 05:02:07: [IKE2] SA:10/IKE deleted
    :
2017/07/14 07:55:06: [IKE2] SA:3/CHLD_SEND temporarily assigned
2017/07/14 07:55:06: [IKE2] SA:4/CHLD_RECV temporarily assigned
2017/07/14 07:55:06: [IKE2] SA:3/CHLD_SEND established
2017/07/14 07:55:06: [IKE2] SA:4/CHLD_RECV established
    :
2017/07/14 09:01:55: [IKE2] SA:10/IKE temporarily assigned
2017/07/14 09:01:55: [IKE2] SA:10/IKE established
2017/07/14 09:24:40: [IKE2] SA:1/CHLD_SEND deleted
2017/07/14 09:24:40: [IKE2] SA:5/CHLD_RECV deleted
    :
2017/07/14 11:02:17: [IKE2] SA:6/IKE deleted
    :
2017/07/14 13:33:01: [IKE2] SA:2/CHLD_SEND temporarily assigned
2017/07/14 13:33:01: [IKE2] SA:6/CHLD_RECV temporarily assigned
2017/07/14 13:33:01: [IKE2] SA:2/CHLD_SEND established
2017/07/14 13:33:01: [IKE2] SA:6/CHLD_RECV established
    :
2017/07/14 15:02:06: [IKE2] SA:7/IKE temporarily assigned
2017/07/14 15:02:06: [IKE2] SA:7/IKE established
    :
2017/07/14 15:02:36: [IKE2] SA:3/CHLD_SEND deleted
2017/07/14 15:02:36: [IKE2] SA:4/CHLD_RECV deleted
    :
2017/07/14 17:02:26: [IKE2] SA:10/IKE deleted
    :
2017/07/14 19:10:55: [IKE2] SA:1/CHLD_SEND temporarily assigned
2017/07/14 19:10:55: [IKE2] SA:5/CHLD_RECV temporarily assigned
2017/07/14 19:10:55: [IKE2] SA:1/CHLD_SEND established
2017/07/14 19:10:55: [IKE2] SA:5/CHLD_RECV established
    :
2017/07/14 20:40:31: [IKE2] SA:2/CHLD_SEND deleted
2017/07/14 20:40:31: [IKE2] SA:6/CHLD_RECV deleted
    :
2017/07/14 21:02:18: [IKE2] SA:2/IKE temporarily assigned
2017/07/14 21:02:18: [IKE2] SA:2/IKE established
    :
2017/07/14 23:02:37: [IKE2] SA:7/IKE deleted
    :
2017/07/15 00:48:48: [IKE2] SA:3/CHLD_SEND temporarily assigned
2017/07/15 00:48:48: [IKE2] SA:4/CHLD_RECV temporarily assigned
2017/07/15 00:48:48: [IKE2] SA:3/CHLD_SEND established
2017/07/15 00:48:48: [IKE2] SA:4/CHLD_RECV established
    :
2017/07/15 02:18:26: [IKE2] SA:1/CHLD_SEND deleted
2017/07/15 02:18:26: [IKE2] SA:5/CHLD_RECV deleted
    :
2017/07/15 03:02:30: [IKE2] SA:1/IKE temporarily assigned
2017/07/15 03:02:30: [IKE2] SA:1/IKE established
    :
2017/07/15 05:02:50: [IKE2] SA:2/IKE deleted
    :
    :

SA の ID の変化を時間順にみてみます。 IKE SA を見ると、15 時 01 分の IPsec トンネル確立から順に 21 時 01 分、3 時 01 分、9 時 01 分とほぼ 6 時間毎に新しい IKE SA が作成されています。 さらに、作成から 8 時間後に削除されていることもわかります。 同様に IPsec SA も、15 時 01 分から順に 20 時 39 分、2 時 17 分、7 時 55 分とほぼ 5 時間 38 分毎に作成され、作成から 7 時間 07 分後に削除されています。

  IKE SA IPsec SA
[SEND] [RECV]
15:01:21 1   3   4  
20:39:17 2 9
21:01:37 10
22:08:51 X X
23:01:52 X    
02:17:10   1 5
03:01:46 6
03:46:47 X X
05:02:07 X    
07:55:06   3 4
09:01:55 10
09:24:40 X X
11:02:17 X    
13:33:01   2 6
15:02:06 7
15:02:36 X X
17:02:26 X    
19:10:55   1 5
20:40:31 X X
21:02:18 2    
23:02:37 X
00:48:48   3 4
02:18:26 X X
03:02:30 1    
05:02:50 X

まだ、設定を施してから 36時間強しか動かしてはいませんが、VPN トンネルを通じた通信も問題無くできています。 どうやら、Azure の SA の有効期間を越えないように RTX の SA の有効期間を設定すれば、Azure の仮想ネットワーク ゲートウェイとの間で IPsec VPN トンネルを維持できると考えて良さそうです。

[改訂版] RTX による Azure (ルート ベース) との VPN 接続

前の記事と同様に、ここまでで得た最終的な RTX の設定を以下にまとめます。 前の記事から変わったのは、ipsec ike duration ipsec-saipsec ike duration ike-sa の二つのコマンドで設定する値を Azure 側の値に揃えたことと、トンネルを切断・再確立のためのスケジュールのコマンドを削除した 2 点です。

ipsec ike duration ipsec-saipsec ike duration ike-sa に設定する値は、Azure の Web サイトの「VPN Gateway 接続の VPN デバイスについて」の Web ページの「IPsec パラメーター」の章にある SA の有効期間以下であれば、VPN トンネルが途絶することも、VPN トンネルを通る通信ができなくなるようなこともなさそうです。

なお、例の如く、経路情報などのトンネル確立に直接関係ない箇所は省略します。

    :
tunnel select 100
 ipsec tunnel 1100
  ipsec sa policy 1100 100 esp anti-replay-check=off
  ipsec ike version 100 2
  ipsec ike duration ipsec-sa 100 27000
  ipsec ike duration ike-sa 100 28800
  ipsec ike keepalive log 100 off
  ipsec ike keepalive use 100 on
  no ipsec ike local address 100
  ipsec ike local name 100 <LAN側IPアドレス> ipv4-addr
  ipsec ike nat-traversal 100 on
  ipsec ike pre-shared-key 100 text <事前共有鍵>
  no ipsec ike remote address 100
  ipsec ike remote name 100 <AzureゲートウェイIPアドレス> ipv4-addr
  ipsec auto refresh 100 on
 ip tunnel tcp mss limit 1350
 tunnel enable 100
tunnel select none
    :

Comments