$Date: 2023/07/06 20:22:18 $
クラウドサービスとの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接続をサポートしています。
機種 | ファームウェア |
---|---|
RTX3510 | すべてのリビジョン |
RTX1300 | |
RTX1220 | |
RTX830 | |
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 コマンドで使用するリージョンを設定してください。
2023/04/04 現在、Amazon VPC のリージョン名、およびリージョンは次の通りです。
リージョン名 | リージョン |
---|---|
アジアパシフィック (ソウル) | ap-northeast-2 |
アジアパシフィック (大阪) | ap-northeast-3 |
アジアパシフィック (香港) | ap-east-1 |
アジアパシフィック (ムンバイ) | ap-south-1 |
アジアパシフィック (ハイデラバード) | ap-south-2 |
アジアパシフィック (シンガポール) | ap-southeast-1 |
アジアパシフィック (シドニー) | ap-southeast-2 |
アジアパシフィック (ジャカルタ) | ap-southeast-3 |
アジアパシフィック (メルボルン) | ap-southeast-4 |
米国東部(バージニア北部) | us-east-1 |
米国東部(オハイオ) | us-east-2 |
米国西部 (北カリフォルニア) | us-west-1 |
米国西部 (オレゴン) | us-west-2 |
カナダ (中部) | ca-central-1 |
欧州 (フランクフルト) | eu-central-1 |
欧州 (チューリッヒ) | eu-central-2 |
欧州 (アイルランド) | eu-west-1 |
欧州 (ロンドン) | eu-west-2 |
欧州 (パリ) | eu-west-3 |
欧州 (ミラノ) | eu-south-1 |
欧州 (スペイン) | eu-south-2 |
欧州 (ストックホルム) | eu-north-1 |
南米 (サンパウロ) | sa-east-1 |
アフリカ (ケープタウン) | af-south-1 |
中東 (アラブ首長国連邦) | me-central-1 |
中東 (バーレン) | me-south-1 |
# 米国東部(バージニア北部)を指定する場合 cloud vpn option 1 region=us-east-1
AWS から設定を取得する方法として、以下の 2 通りがあります。
コンソールから cloud vpn set go コマンドを実行してAWS へ接続し、設定を取得します。
手動実行では、1回だけAWS にアクセスし、設定の取得を試みます。接続に失敗した場合でもリトライしません。
以下の条件をすべて満たしている状態でルーターを起動したとき、 AWS へ接続し、設定を取得します。
自動実行によって生成した CONFIG は保存されません。
また、AWS への接続に失敗した場合は、リトライを繰り返します。
既に Amazon VPC との VPN 接続設定がされている場合、AWS から取得した設定値と該当するコマンドの設定値を比較し、次の処理を行います。
→ 設定を上書きし、更新日時を description tunnel コマンドに記録します。
→ 設定を変更しません。
ルーター起動時の自動実行で 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サーバーと時刻を同期することを推奨いたします。
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 コマンドで設定される文字列に反映されます。
description tunnel NAME_amazon-api_日時
description tunnel amazon-api_日時
Amazon VPC と VPN接続できるように、デフォルトゲートウェイになっているインターフェース(トンネルインターフェースを除く)に IPフィルターや静的 IP マスカレードを自動的に設定します。また、ルーターが NAT の配下にあるか否かに関わらず、NATトラバーサルを設定し、NAT トラバーサルで使用する UDP/4500 のパケットを通す設定をします。
自動的に設定される CONFIG の例は、こちらをご覧ください。
設定値 | 説明 |
---|---|
1-3 | クラウド設定番号 |
設定値 | 説明 |
---|---|
amazon-api | API を用いた Amazon VPC との接続設定 |
VPN 接続するクラウドサービスを指定する。
設定値 | 説明 |
---|---|
1-3 | クラウド設定番号 |
Amazon VPC とのVPN接続を行う場合、次の順番で PARAMETER に指定する。これらの情報は、事前に AWS の管理画面で設定しておく必要がある。
Amazon VPC との VPN 接続を行う場合。
cloud vpn parameter 1 abcdefghij ABCDEFGHIJKLM vpn-01234567
設定値 | 説明 |
---|---|
1-3 | クラウド設定番号 |
NAME に指定した名称は、設定を取得したときに自動的に設定される tunnel description コマンドの文字列に反映される。
設定値 | 説明 |
---|---|
1-3 | クラウド設定番号 |
クラウドサービスとの VPN 接続を設定するトンネルインターフェースを指定する。
本コマンドを事前に設定した場合、指定したトンネルインターフェースにクラウドサービスとの VPN 接続を設定する。
Amazon VPC との VPN 接続設定を行う場合、トンネルインターフェースを2つ指定する必要がある。
本コマンドを設定していない状態で、クラウドサービスから設定値を取得した場合、使用していないトンネルインターフェースを検索して自動的に設定する。
設定値 | 説明 |
---|---|
1-3 | クラウド設定番号 |
OPTION | VALUE | 説明 |
---|---|---|
region | リージョン | Amazon VPC のインスタンスを生成したリージョン(半角 32 文字以内) |
クラウドサービスとの VPN 接続設定に使用するオプションを設定する。
region には、Amazon VPC のインスタンスを生成したリージョンを設定する。初期値は ap-northeast-1 で、アジアパシフィック (東京) のリージョンである。
設定値 | 説明 |
---|---|
1-3 | クラウド設定番号 |
設定値 | 説明 |
---|---|
save | 生成した CONFIG を保存する。 |
no-save | 生成した CONFIG を保存しない。 |
クラウドサービスとの VPN 接続設定を実行する。
クラウドサービスから取得した設定値を基に、クラウドサービスとの VPN 接続を行うための CONFIG を生成し、VPN 接続する。
OPTIONを省略した場合、クラウドサービスとの VPN 接続設定が完了すると、設定を保存するか否か (Y/N) の問い合わせを表示する。Y を入力すると設定を保存し、N を入力すると設定を保存しない。
Web GUI でのコマンド実行やスケジュール実行、Lua スクリプトなど、対話型の入力ができない場合、OPTION は必ず指定する必要がある。
本コマンドを実行して手動で設定値を取得する場合、リトライは行わない。
# cloud vpn set go 1 ................ クラウドサービスとの VPN 接続設定が完了しました。 設定を保存しますか? (Y/N)
設定値 | 説明 |
---|---|
on | クラウドサービス接続時の詳細情報を SYSLOG に表示する |
off | クラウドサービス接続時の詳細情報を SYSLOG に表示しない |
クラウドサービス接続時の詳細情報を SYSLOG に表示する。
以下の機種およびファームウェアで使用可能。
RTX1210 は Rev.14.01.34 以降。
NVR700W は Rev.15.00.16 以降。
RTX830 は Rev.15.02.10 以降。
設定値 | 説明 |
---|---|
1-3 | クラウド設定番号 |
クラウドサービスとの VPN 接続設定の状態を表示する。
ID を省略すると、設定されているすべてのクラウドサービスとの VPN 接続設定の状態を表示する。
# show status cloud vpn 1 クラウド設定[1] サービス名: Amazon(API方式) 設定名: yamaha # cloud vpn name コマンドの設定値 ステータス: 設定済み 最終取得日時: 2017/01/25 10:11:22 CONFIGの更新日時: 2017/01/24 12:00:00 TUNNELの接続状態: TUNNEL[01]: 接続されています TUNNEL[02]: 接続されています #
本機能において出力される SYSLOG メッセージの一覧を以下に示します。[ID] には、コマンドで設定したクラウド設定番号が入ります。
[CLOUD_VPN_DETAIL]の SYSLOG は cloud vpn syslog コマンドが on の場合に表示されます。
レベル | 出力メッセージ | 内容 |
---|---|---|
INFO | [CLOUD_VPN][ID] Connecting to (クラウドサーバー) | (クラウドサーバー)への接続を開始した |
[CLOUD_VPN][ID] Created VPN config successfully | CONFIG の生成に成功した | |
[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 canceled | cloud vpn set go コマンドの実行を中止した | |
[CLOUD_VPN_DETAIL][ID] Setting error: エラーコード1 - エラーコード2 | クラウドサービス設定中にエラーが発生した | |
[CLOUD_VPN_DETAIL][ID] Parse error (Tunnel): エラーコード | 受信したXMLデータを解析した結果、Tunnel関連の設定でエラーが発生した | |
[CLOUD_VPN_DETAIL][ID] Parse error (Gateway): エラーコード | 受信したXMLデータを解析した結果、Gateway関連の設定でエラーが発生した | |
[CLOUD_VPN_DETAIL][ID] Parse error (Ike): エラーコード | 受信したXMLデータを解析した結果、Ike関連の設定でエラーが発生した | |
[CLOUD_VPN_DETAIL][ID] Parse error (IPsec): エラーコード | 受信したXMLデータを解析した結果、IPsec関連の設定でエラーが発生した | |
[CLOUD_VPN_DETAIL][ID] Startup: Cloud service amazon | ルーター起動時にAWSとの接続を開始した | |
DEBUG | [CLOUD_VPN][ID] Received response message, Starting parse XML data. | レスポンスを受信した。受信したXMLデータの解析を開始する。 |
[CLOUD_VPN][ID] Success to parse XML data | XML データの解析に成功した | |
[CLOUD_VPN][ID] Comparing the existing config and recevied data | 受信した設定情報と既存の CONFIG との比較を行う | |
[CLOUD_VPN][ID] Configure VPN command | VPN 接続の設定を開始する | |
[CLOUD_VPN][ID] Failed to resolve a server name | クラウドサーバーの名前解決ができなかった | |
[CLOUD_VPN][ID] Cannot add a neighbor for BGP connection | BGP のネイバーをこれ以上設定できない | |
[CLOUD_VPN][ID] SSL initialization error | SSL の初期化に失敗した | |
[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 | すべてのトンネルインターフェースが使用されている(トンネルインターフェースに空きがない) |
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 local id 1 0.0.0.0/0 # (※) ipsec ike pfs 1 on ipsec ike pre-shared-key 1 text <共有鍵> ipsec ike remote address 1 203.0.113.1 ipsec ike remote id 1 0.0.0.0/0 # (※) 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 local id 2 0.0.0.0/0 # (※) ipsec ike pfs 2 on ipsec ike pre-shared-key 2 text <共有鍵> ipsec ike remote address 2 203.0.113.2 ipsec ike remote id 2 0.0.0.0/0 # (※) 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
(※) 以下の機種で自動生成されます
機種 | ファームウェア |
---|---|
RTX3510 | すべてのリビジョン |
RTX1300 | |
RTX1220 | |
RTX830 | Rev.15.02.20以降 |
NVR700W | Rev.15.00.22以降 |
RTX1210 | Rev.14.01.40以降 |
[EOF]