Amazon VPCとのVPN接続(API方式) 技術資料

$Date: 2017/10/11 12:06:55 $

  1. 概要
  2. 注意事項
  3. 対応機種とファームウェアリビジョン
  4. 詳細
  5. コマンド仕様
  6. SYSLOGメッセージ
  7. 自動的に設定される CONFIG

概要

クラウドサービスとのVPN接続設定機能を利用し、Amazon VPC とVPN接続します。
Amazon EC2 API を使用して、Amazon Web Services(以下、AWS)からAmazon VPC とのVPN接続に必要な設定値を取得し、取得した値を基にルーターの CONFIG を生成します。また、CONFIG を生成した後、Amazon VPC に自動的に接続します。
AWS との通信には、HTTPSを使用します。

Amazon VPC とVPN接続する前に、AWS の管理画面で Amazon VPC の設定とアクセスキー(アクセスキーID とシークレットアクセスキーのペア)の発行を行います。
AWS の管理画面で、上記の設定を行ったときに得られる以下の情報が必要になります。


注意事項


対応機種とファームウェアリビジョン

以下の機種およびファームウェアで Amazon VPC とのVPN接続をサポートしています。

機種 ファームウェア
RTX830 Rev.15.02.01以降
NVR700W Rev.15.00.10以降
RTX1210 Rev.14.01.20以降

詳細

事前設定

Amazon VPC とVPN接続する前に、AWS の管理画面で、Amazon VPC の設定およびアクセスキーを発行します。 それぞれの手順は以下のサイトをご覧ください。

AWSの管理画面での操作で保存した各情報を用いて、AWSから設定値を取得するための設定を行います。

cloud vpn service 1 amazon-api  ... (1)
cloud vpn name 1 yamaha ... (2)
cloud vpn parameter 1 abcdefghij ABCDEFGHIJKLM vpn-01234567 ... (3)
(1) 接続するクラウドサービスとして amazon-api (API を用いた Amazon VPC との接続設定) を指定します。
(2) Amazon VPC との接続設定の名称を指定します。本コマンドは、省略可能です。
(3) アクセスキーID、シークレットアクセスキー、VPN ID の順に指定します。
※アクセスキーID、シークレットアクセスキーは自動生成される任意の文字列です。

Amazon VPC のインスタンスを生成するリージョンに「アジアパシフィック (東京)」以外を使用する場合は、vpn cloud option コマンドで使用するリージョンを設定してください。
2017/06/02 現在、Amazon VPC のリージョン名、およびリージョンは次の通りです。

リージョン名 リージョン
アジアパシフィック (東京) ap-northeast-1
米国東部(バージニア北部) us-east-1
米国東部(オハイオ) us-east-2
米国西部 (北カリフォルニア) us-west-1
米国西部 (オレゴン) us-west-2
カナダ (中部) ca-central-1
アジアパシフィック (ムンバイ) ap-south-1
アジアパシフィック (ソウル) ap-northeast-2
アジアパシフィック (シンガポール) ap-southeast-1
アジアパシフィック (シドニー) ap-southeast-2
欧州 (フランクフルト) eu-central-1
欧州 (アイルランド) eu-west-1
欧州 (ロンドン) eu-west-2
南米 (サンパウロ) sa-east-1
# 米国東部(バージニア北部)を指定する場合
cloud vpn option 1 region=us-east-1

設定値取得

AWS から設定を取得する方法として、以下の 2 通りがあります。

既に Amazon VPC との VPN 接続設定がされている場合、AWS から取得した設定値と該当するコマンドの設定値を比較し、次の処理を行います。

ルーター起動時の自動実行で AWS への接続に失敗した場合、以下のインターバルを置いた後、AWS への接続をリトライします。リトライまでのインターバルはリトライした回数に比例して徐々に長くなっていき、最長で10分前後になります。AWS の名前解決に失敗した、AWS から応答がないなど、AWS へ接続できない場合にリトライします。AWS へ接続し、AWS からエラーレスポンスを受信した場合は、リトライしません。SYSLOG に出力されるエラー理由を確認し、設定を変更するなどの対応を行ってください。
また、リトライが続いている状態で cloud vpn set go コマンドを実行した場合、以降のリトライは行いません。

リトライまでのインターバルは以下の通りです。

リトライ回数 インターバル
1回目 30秒前後
2回目 60秒前後
3回目 90秒前後
4回目 150秒前後
5回目 210秒前後
6回目 300秒前後
7回目 390秒前後
8回目以降 600秒前後

<<注意事項>>
AWS へのリクエストには、リクエストを発行した日時(秒まで)を記載します。
リクエストに記載の日時と、AWS がリクエストを受信した日時とが15分以上離れている場合、AWS はエラーを返します。 そのため、ルーターの時刻は正しい時刻にあわせておく必要があります。
ntpdate コマンドをスケジュールの設定に追加し、定期的にNTPサーバーと時刻を同期することを推奨いたします。

CONFIG 設定

AWS から取得した設定値を基に、Amazon VPC と VPN接続するための CONFIG を生成します。

Amazon VPC との VPN接続では 2 本のトンネルを使用するため、2 つのトンネルインターフェースと、BGP による経路を設定します。
使用していないトンネルインターフェースのうち、若番から 2 つのトンネルインターフェースを Amazon VPC との VPN 接続用に設定します。設定したトンネルインターフェース番号は、cloud vpn bind コマンドに設定されます。また、CONFIG を生成した後、bgp configure refresh コマンドを実行し、BGP の設定を有効にします。

description tunnel コマンドに、設定した日時を記録します。Amazon VPC との接続用のトンネルインターフェースかの判定や、show status cloud vpn コマンド、および GUI での更新日時の表示に使用しますので、設定を変更しないでください。
事前に、cloud vpn name コマンドでクラウド設定の名称を指定しておくと、description tunnel コマンドで設定される文字列に反映されます。

Amazon VPC と VPN接続できるように、デフォルトゲートウェイになっているインターフェース(トンネルインターフェースを除く)に IPフィルターや静的 IP マスカレードを自動的に設定します。また、ルーターが NAT の配下にあるか否かに関わらず、NATトラバーサルを設定し、NAT トラバーサルで使用する UDP/4500 のパケットを通す設定をします。

自動的に設定される CONFIG の例は、こちらをご覧ください。


コマンド仕様


SYSLOGメッセージ

本機能において出力される SYSLOG メッセージの一覧を以下に示します。[ID] には、コマンドで設定したクラウド設定番号が入ります。

レベル 出力メッセージ 内容
INFO [CLOUD_VPN][ID] Connecting to (クラウドサーバー)(クラウドサーバー)への接続を開始した
[CLOUD_VPN][ID] Created VPN config successfullyCONFIG の生成に成功した
[CLOUD_VPN][ID] Existing config and received data is matched既存の CONFIG と受信した設定情報の内容が一致した
[CLOUD_VPN][ID] Config not change受信した設定情報で CONFIG を変更しない
[CLOUD_VPN][ID] Setting failed設定値の取得に失敗した
[CLOUD_VPN][ID] Setting is canceledcloud vpn set go コマンドの実行を中止した
DEBUG [CLOUD_VPN][ID] Received response message, Starting parse XML data.レスポンスを受信した。受信したXMLデータの解析を開始する。
[CLOUD_VPN][ID] Success to parse XML dataXML データの解析に成功した
[CLOUD_VPN][ID] Comparing the existing config and recevied data受信した設定情報と既存の CONFIG との比較を行う
[CLOUD_VPN][ID] Configure VPN commandVPN 接続の設定を開始する
[CLOUD_VPN][ID] Failed to resolve a server name クラウドサーバーの名前解決ができなかった
[CLOUD_VPN][ID] Cannot add a neighbor for BGP connectionBGP のネイバーをこれ以上設定できない
[CLOUD_VPN][ID] SSL initialization errorSSL の初期化に失敗した
[CLOUD_VPN][ID] Can't create socketソケットを生成できなかった
[CLOUD_VPN][ID] Setting Non-blocking failed ノンブロッキングモードの設定に失敗した
[CLOUD_VPN][ID] Connection errorクラウドサーバーへの接続でエラーが発生した
[CLOUD_VPN][ID] Connection timeoutクラウドサーバーへの接続タイムアウト
[CLOUD_VPN][ID] SSL connection errorクラウドサーバーとの SSL 接続でエラーが発生した
[CLOUD_VPN][ID] Can't connect to serverクラウドサーバーへの接続に失敗した
[CLOUD_VPN][ID] Send errorリクエストの送信でエラーが発生した
[CLOUD_VPN][ID] Receive errorレスポンスの受信でエラーが発生した
[CLOUD_VPN][ID] Receive timeoutレスポンス受信待ちタイムアウト
[CLOUD_VPN][ID] HTTP error response (エラーコード)(エラーコード)の HTTP エラーを受信した
[CLOUD_VPN][ID] Received illegal HTTP message不正な HTTP レスポンスを受信した
[CLOUD_VPN][ID] Received error response from serverエラーレスポンスを受信した
[CLOUD_VPN][ID] Received error message from AWS: (エラー)AWS から(エラー)を受信した
[CLOUD_VPN][ID] Received illegal XML data不正な XML データを受信した
[CLOUD_VPN][ID] Received illegal response不正なレスポンスを受信した
[CLOUD_VPN][ID] Failed to create a commandコマンドの生成に失敗した
[CLOUD_VPN][ID] Required command is missing or illegal必要な設定がないか不正である
[CLOUD_VPN][ID] Already other setting at the specified interface指定したインターフェースには既に他の設定がされている
[CLOUD_VPN][ID] All TUNNEL interfaces are usedすべてのトンネルインターフェースが使用されている(トンネルインターフェースに空きがない)

<ご参考>自動的に設定される CONFIG

Amazon VPC 側のグローバルIPアドレスには、例示用のIPアドレスとして RFC6890 で規定されている 203.0.113.0/24の範囲のIPアドレスを使用しています。

tunnel select 1
 description tunnel amazon-api_20170110112233  # 設定した日時を記録します。
 ipsec tunnel 201
  ipsec sa policy 201 1 esp aes-cbc sha-hmac
  ipsec ike duration ipsec-sa 1 3600
  ipsec ike encryption 1 aes-cbc
  ipsec ike group 1 modp1024
  ipsec ike hash 1 sha
  ipsec ike keepalive use 1 on dpd 10 3
  ipsec ike local address 1 192.168.100.1
  ipsec ike pfs 1 on
  ipsec ike pre-shared-key 1 text <共有鍵>
  ipsec ike remote address 1 203.0.113.1
 ipsec tunnel outer df-bit clear
 ip tunnel address 169.254.0.34/30
 ip tunnel remote address 169.254.0.33
 ip tunnel tcp mss limit 1387
 tunnel enable 1
tunnel select 2
 description tunnel amazon-api_20170110112233
 ipsec tunnel 202
  ipsec sa policy 202 2 esp aes-cbc sha-hmac
  ipsec ike duration ipsec-sa 2 3600
  ipsec ike encryption 2 aes-cbc
  ipsec ike group 2 modp1024
  ipsec ike hash 2 sha
  ipsec ike keepalive use 2 on dpd 10 3
  ipsec ike local address 2 192.168.100.1
  ipsec ike pfs 2 on
  ipsec ike pre-shared-key 2 text <共有鍵>
  ipsec ike remote address 2 203.0.113.2
 ipsec tunnel outer df-bit clear
 ip tunnel address 169.254.0.126/30
 ip tunnel remote address 169.254.0.125
 ip tunnel tcp mss limit 1387
 tunnel enable 2
bgp use on
bgp autonomous-system 65000
bgp neighbor 1 10124 169.254.0.33 hold-time=30 local-address=169.254.0.34
bgp neighbor 2 10124 169.254.0.125 hold-time=30 local-address=169.254.0.126
bgp import filter 1 equal 0.0.0.0/0
bgp import 10124 static filter 1
ipsec auto refresh on

# IP フィルター
ip filter 200080 pass * 192.168.100.1 udp * 500
ip filter 200081 pass * 192.168.100.1 esp * *
ip filter 200082 pass * 192.168.100.1 udp * 4500

#   デフォルトゲートウェイになっているインターフェースのIN方向にIPフィルターを適用します。
ip pp secure filter in 200080 200081 200082

# 静的 IP マスカレード
nat descriptor masquerade static 1000 1 192.168.100.1 udp 500
nat descriptor masquerade static 1000 2 192.168.100.1 esp
nat descriptor masquerade static 1000 3 192.168.100.1 udp 4500

# NATトラバーサル
ipsec ike nat-traversal 1 on type=2
ipsec ike nat-traversal 2 on type=2

# BGP の設定を有効にします。(実行コマンド)
bgp configure refresh


[EOF]