【AWS】試して理解するサイト間VPN(YAMAHA RTX830利用)
こんにちは。川名(亮)です。
AWSにはVPNサービスがあり、外部からAWSへVPNを利用した安全な接続が可能です。Client VPNとサイト間VPNの2つが用意されており、本記事ではYAMAHA RTX830のVPNルータを利用したサイト間VPNの接続方法を記載します。
Client VPNの接続方法については弊社の他のメンバーが記載していますので以下の記事をご参考下さい。
2つのVPNの使い分け
VPNは公開されているインターネットを利用しながら、あたかも専用のプライベートネットワークを利用しているかのように安全に通信するための技術です。VPNは主にClient VPNとサイト間VPNの2つに分けられます。これらの使い分けについて説明します。
■ Client VPN
Client VPNはリモートアクセスVPNとも呼ばれ、VPNエンドポイントに対して端末ごとにVPN接続します。VPN接続にはVPN Clientソフトウェアを利用します。また、暗号化にはSSL/TLSが利用されます。
Client VPN接続例
現在はHTTPSやSFTPのようにVPNを利用しなくとも通信は暗号化されるケースがほとんどです。そのため、Client VPNは暗号化のためというより「インターネットから内部ネットワークに入ること」や「Client VPN接続後に割り当てされるClient CIDRによる接続元アクセス制限」を目的に利用されることが多いと思われます。
サイト間VPNと違いVPN接続元が固定されません。これは外出先や自宅からVPNを利用して内部ネットワークに接続することができることを意味します。逆にVPN Clientソフトウェアがインストールできない(あるいはサーバなど運用上認められない)機器はVPN接続できないというデメリットもあります。
■ サイト間VPN
サイト間VPNは拠点間VPNとも呼ばれ、VPNエンドポイントに対してネットワーク単位でVPN接続します。VPN接続にはVPNルータ(あるいはそれに相当する機器)が必要となります。また、暗号化にはIPsecが利用されます。
サイト間VPN接続例
Client VPNと違い個々の端末にVPN Clientソフトウェアをインストールし、端末起動毎にVPN接続の認証を行うといった作業が不要です。VPN接続するネットワークに設置されているだけで利用できます。デメリットとしてはIPsecが利用可能なVPNルータ(比較的高価)が必要であること、固定のグローバルIPアドレスが必要となることです。そのため、外出先や自宅からVPN接続という用途には向きません。一般的にはオフィスネットワーク、データセンター、クラウドサービス内のプライベートネットワークを接続するために利用されます。
本記事の構成
想定構成図
本記事は上記の構成を想定しています。
また以下の通りVPN以外の設定は完了しているものとします。
設定 | 概要 |
---|---|
AWS環境 | サイト間VPN以外の設定が完了(VPC、サブネットなど) |
AWS環境のリージョン | ap-northeast-1(Tokyo) |
オンプレミス環境 | サイト間VPN以外の設定が完了(内部ネットワーク設定、プロバイダ接続設定など) |
ルータの外部IPアドレス | 固定のグローバルIPアドレス |
ルータの内部IPアドレス | 192.168.100.1 (RTX830のデフォルト設定) |
疎通確認用端末(AWS) | 10.0.11.154 (Linux) |
疎通確認用端末(オンプレミス) | 192.168.100.2 (Windows) |
注意
概要
- カスタマーゲートウェイの作成
- 仮想プライベートゲートウェイの作成
- 仮想プライベートゲートウェイをVPCへアタッチ
- サイト間VPNの設定
- RTX830用VPN設定ファイルのダウンロード
- RTX830用VPN設定ファイルの修正
- ルートテーブル設定
- RTX830の設定
- VPN接続の確認
- VPN疎通確認
- さいごに
カスタマーゲートウェイの作成
構成図にある通りカスタマーゲートウェイのデバイス(RTX830)はオンプレミス側にあります。これから作成する「カスタマーゲートウェイ」は「カスタマーゲートウェイ リソース」と呼ばれるAWS側の設定です。
「カスタマーゲートウェイ リソース」には「カスタマーゲートウェイ デバイス(RTX830)」のグローバルIPアドレスなどデバイスに関する情報が保存されます。AWSのサイト間VPN接続設定時に「カスタマーゲートウェイ(カスタマーゲートウェイ リソース)」を指定することで、接続先となる「カスタマーゲートウェイ デバイス(RTX830)」の情報を毎回1つ1つ入力する必要がなくなります。
■ カスタマーゲートウェイの作成作業
- AWSマネジメントコンソールでVPCのページへ移動
- 左メニューから「Customer gateways」をクリック
- 「Create customer gateway」をクリックして、以下の項目を入力または選択する
カスタマーゲートウェイ設定
項目名 | 値 |
---|---|
Name tag | example-prod-cgw |
BGP ASN | 65000 |
IP address | ルータの外部IPアドレス(Global IP Address)を入力する |
Certificate ARN | *** 空欄 *** |
Device | *** 空欄 *** |
- 入力や選択が完了したら「Create customer gateway」をクリック
- カスタマーゲートウェイが作成されることを確認する
仮想プライベートゲートウェイの作成
仮想プライベートゲートウェイ(Virtual Private Gateway)の役割について説明します。
VPC - 仮想プライベートゲートウェイ
仮想プライベートゲートウェイはVPN接続でオンプレミスと通信する際に利用されるVPC側の出入り口となるゲートウェイです。特定のVPCへアタッチすることで「VPC - 仮想プライベートゲートウェイ」が接続されます。
サイト間VPN設定で仮想プライベートゲートウェイをターゲット指定
サイト間VPN接続作成時に「仮想プライベートゲートウェイ - サイト間VPN」のターゲット設定を行います。これにより「VPC - 仮想プライベートゲートウェイ - サイト間VPN」の通信が可能となります。
AWSサイト間VPNがオンプレミスとVPN接続確立
オンプレミスとのサイト間VPN接続が確立すると「VPC - 仮想プライベートゲートウェイ - サイト間VPN - オンプレミス」という形でAWSとオンプレミスとの間で通信が可能となります。
■ 仮想プライベートゲートウェイの作成作業
- AWSマネジメントコンソールでVPCのページへ移動
- 左メニューから「Virtual private gateways」をクリック
- 「Create virtual private gateway」をクリックして、以下の項目を入力または選択する
仮想プライベートゲートウェイ設定
項目名 | 値 |
---|---|
Name tag | example-prod-vgw |
BGP ASN | Amazon default ASN(64512) |
- 入力や選択が完了したら「Create virtual private gateway」をクリック
- 仮想プライベートゲートウェイが作成されることを確認する
仮想プライベートゲートウェイをVPCへアタッチ
先ほど作成した仮想プライベートゲートウェイをVPCにアタッチして、VPCがサイト間VPNによる通信ができるようにします。
■ 仮想プライベートゲートウェイのアタッチ作業
VPCへアタッチ
- AWSマネジメントコンソールでVPCのページへ移動
- 左メニューから「Virtual private gateways」をクリック
- 先ほど作成した「example-prod-vgw」にチェックを入れる
- 右上の「Actions」をクリック
- 「Attach to VPC」をクリック
- 使用可能なVPCからVPNを利用するVPCを選択
- 「Attach to VPC」をクリック
- 数分後、「example-prod-vgw」の状態が「Attached」となっていることを確認する
サイト間VPNの設定
サイト間VPNの設定ではVPCへの接続先として「仮想プライベートゲートウェイ」を指定します。また、オンプレミスへの接続先として「カスタマーゲートウェイ」を指定します。このVPN接続が確立すれば「仮想プライベートゲートウェイ」を介してVPCとオンプレミスの通信が可能となります。
■ サイト間VPNの設定作業
- AWSマネジメントコンソールでVPCのページへ移動
- 左メニューから「Site-to-Site VPN connections」をクリック
- 「Create VPN connection」をクリックして、以下の項目を入力または選択する
サイト間VPNの設定
項目名 | 値 |
---|---|
Name tag | example-prod-vpn |
Target gateway type | Virtual private gateway |
Virtual private gateway | example-prod-vgw |
Customer gateway | Existing |
Customer gateway ID | example-prod-cgw |
Routing options | Dynamic(requires BGP) |
Local IPv4 network CIDR | *** 空欄 *** |
Remote IPv4 network CIDR | *** 空欄 *** |
Tunnel 1 options | *** デフォルト設定を利用する *** |
Tunnel 2 options | *** デフォルト設定を利用する *** |
- 「Create VPN connection」をクリック
- サイト間VPN接続設定が追加されることを確認する
RTX830用VPN設定ファイルのダウンロード
RTX830用VPN設定ファイルをAWSマネジメントコンソールからダウンロードすることができます。この設定ファイルにはVPN接続に利用する認証情報も含まれています。本記事の環境ではほぼそのまま利用可能ですが、サンプルファイルなので自身の環境にあわせて修正する必要があります。
■ 設定ファイルのダウンロード
- AWSマネジメントコンソールでVPCのページへ移動
- 左メニューから「Site-to-Site VPN connections」をクリック
- 「Download configuration」をクリック
- 以下の項目を選択する
項目名 | 値 |
---|---|
Vendor | Yamaha |
Platform | RTX Routers |
Software | Rev.10.01.16+ |
IKE version | Ikev1 |
- 「Download」をクリックしてRTX830用の設定ファイルをローカルに保存する
RTX830用VPN設定ファイルの修正
ダウンロードしたRTX830用VPN設定ファイル修正を行います。RTX830のグローバルIPアドレスが記載されている部分をプライベートIPアドレスに書き換えます。
■ 変更部分(1)
1つ目のVPNトンネルの「local address」をルータのグローバルIPアドレスからプライベートIPアドレスに変更します。
ipsec ike local address 1 xxx.xxx.xxx.xxx
ipsec ike local address 1 192.168.100.1
※「xxx.xxx.xxx.xxx」には「Create customer gateway」の際に指定したルータの外部IPアドレス(Global IP Address)が記載されています
※「192.168.100.1」はRTX830のデフォルトの内部IPアドレス(Private IP Address)です
■ 変更部分(2)
2つ目のVPNトンネルの「local address」をルータのグローバルIPアドレスからプライベートIPアドレスに変更します。
ipsec ike local address 2 xxx.xxx.xxx.xxx
ipsec ike local address 2 192.168.100.1
※「xxx.xxx.xxx.xxx」には「Create customer gateway」の際に指定したルータの外部IPアドレス(Global IP Address)が記載されています
※「192.168.100.1」はRTX830のデフォルトの内部IPアドレス(Private IP Address)です
ルートテーブルの設定
今回はプライベートサブネットのみVPN接続を利用してオンプレミス環境と通信できるようにします。オンプレミス環境へのルート設定が必要になりますが、その経路情報はBGPを利用してオンプレミス環境のルータであるRTX830とやり取りします。(そのためVPN設定作成時に「Routing options」で「Dynamic(requires BGP)」を指定しています)
「Route propagation(ルート伝播)」を有効にすると、VPN接続先となるオンプレミス環境のルータ(RTX830)から経路情報を受け取りルートテーブルに追加します。
■ ルートテーブルの設定作業
ルートテーブルの設定
- AWSマネジメントコンソールでVPCのページへ移動
- 左メニューから「Route tables」をクリック
- サイト間VPNを利用するプライベートサブネットのルートテーブルを選択
- 下に表示されるルートテーブル設定から「Route propagation(ルート伝播)」をクリック
- 「Edit route propagation(ルート伝播の編集)」をクリック
- 「Propagation(伝播)」の「Enable(有効化)」にチェックを入れる
- 「Save」をクリック
RTX830の設定
■ RTX830にVPN設定を追加
- RTX830の管理画面(GUI)へアクセスする
- 上部メニューの「管理」をクリック
- 「保守」->「コマンドの実行」
- RTX830用VPN設定ファイル内容(テキスト)を「コマンドの入力」のフォームに貼り付ける
- 「実行」をクリック
- VPN設定が追加される
■ RTX830のVPN設定を確認
RTX830のVPN設定
- 上部メニューの「簡単設定」をクリック
- 「VPN」->「拠点間接続」をクリック
- 「接続設定の一覧」に2つのVPN設定が追加されていること、VPN接続が確立されていることを確認する(「接続状況」が緑の矢印になっていればOK)
■ RTX830のConfig確認
- ルータの管理画面(GUI)の右上の「config」をクリック
- 「ブラウザで表示」をクリック
- 「tunnel select 1」、「tunnel select 2」の設定が追加され、AWSマネジメントコンソールからダウンロードしたRTX用のVPN設定ファイルの設定値と同じであることを確認する
VPN接続確認
VPN接続確認
- AWSマネジメントコンソールでVPCのページへ移動
- 左メニューから「Site-to-Site VPN connections」をクリック
- 「example-prod-vpn」のVPN接続にチェックを入れる
- 下部メニューの「Tunnel details」->「Tunnel state」->「Status」が「UP」となっていることを確認する
VPN疎通確認
「AWS -> オンプレミス」と「オンプレミス -> AWS」の双方向で疎通確認を行います。
■ AWSからオンプレミスへの疎通確認
- プライベートサブネットに設置されたEC2インスタンス「10.0.11.154」へBastion経由でSSHログインする
- 「10.0.11.154」からオンプレミスのClient「192.168.100.2」へpingで疎通確認する(「192.168.100.2」側でICMPのEcho Requestを許可しておく)
$ ping 192.168.100.2
PING 192.168.100.2 (192.168.100.2) 56(84) bytes of data.
64 bytes from 192.168.100.2: icmp_seq=1 ttl=127 time=8.14 ms
64 bytes from 192.168.100.2: icmp_seq=2 ttl=127 time=7.40 ms
64 bytes from 192.168.100.2: icmp_seq=3 ttl=127 time=7.74 ms
64 bytes from 192.168.100.2: icmp_seq=4 ttl=127 time=7.87 ms
64 bytes from 192.168.100.2: icmp_seq=5 ttl=127 time=7.69 ms
※疎通OK
■ オンプレミスからAWSへの疎通確認
- オンプレミスのClient「192.168.100.2」にログイン
- 「192.168.100.2」からオンプレミスのClient「10.0.11.154」へpingで疎通確認する(「10.0.11.154」側でICMPのEcho Requestを許可しておく)
> ping 10.0.11.154
10.0.11.154 に ping を送信しています 32 バイトのデータ:
10.0.11.154 からの応答: バイト数 =32 時間 =7ms TTL=126
10.0.11.154 からの応答: バイト数 =32 時間 =7ms TTL=126
10.0.11.154 からの応答: バイト数 =32 時間 =8ms TTL=126
10.0.11.154 からの応答: バイト数 =32 時間 =7ms TTL=126
10.0.11.154 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 7ms、最大 = 8ms、平均 = 7ms
※疎通OK
さいごに
サイト間VPNは安価に導入できる拠点間通信として広く使われています。YAMAHA RTX830はサイト間VPNが利用できるVPNルータとしてはお手頃価格なので、興味のある方は本記事を参考にサイト間VPNをぜひ試してみて下さい。
ご覧いただきありがとうございました。
Discussion