|
クラウド活用の広がりとともに、オンプレミスとクラウドのネットワークをつなぐニーズが年々高まっています。それを実現する手段の一つとして、「VPN」があります。
AWSも「AWS VPN」というVPNソリューションを提供しています。本記事では、そのAWS VPNの一つである「AWS Site-to-Site VPN」を主題として概要、実装等について解説します。
\ AWS環境の構築支援サービスが必要な方はこちら /
Index
本章では、AWS Site-to-Site VPNについて理解するための基礎となる、VPNおよびAWS VPNの概要について解説します。
<参考>
AWS Client VPNに関する解説記事も公開しております。ご興味のある方はぜひそちらもご一読ください。
AWS VPNについてよく理解するためには、まずVPNという技術自体の理解を深めることが有効です。そのため、本項ではVPNの定義やどのような分類があるのかについて解説します。
なお、VPNに関する一般的な知識を既にお持ちの方は、本項は飛ばして「AWS VPNとは?」からお読みいただいてもかまいません。
VPNは、Virtual Private Network(直訳:仮想プライベートネットワーク)の略です。「仮想的なプライベートネットワーク」の言葉どおり、異なるネットワーク同士をプライベートに接続し、安全な通信を行うための技術を意味します。
近年では、多くの企業が自社システムをオンプレミス、クラウド(IaaS, PaaS, SaaS)など異なる複数のプラットフォームに展開しています。しかし、異なるプラットフォーム同士は当然所属するネットワークも異なるため、インターネット経由の通信がデフォルトであるケースが多いです。
VPNは、そのような所属ネットワークが異なるサービスを複数利用しながらも、ネットワーク間通信の安全性を確保できるソリューションであると言えます。
VPNと一口で言っても、実際にはいくつかの観点での分類があります。分類ごとに、実装技術や用途が異なります。本項目ではVPNの主な分類について解説します。
以下に大まかな分類をツリー形式で表します。左側のオレンジ枠は、分類の観点を示します。
今回は、「基盤となるネットワーク」および「実装するプロトコル」という観点で分類します。より上位の分類として、「基盤となるネットワーク」という観点で、インターネットVPNとIP-VPNの2つに分けられます。
インターネットを基盤として実装するVPNです。異なるネットワーク間において、インターネットを介したグローバルIP同士の通信を基盤として安全な通信を確立します。
そして、「実装するプロトコル」という観点では、インターネットVPNには2つの分類があります。それは、「SSL-VPN」と「IPsec-VPN」の2つです。
SSL-VPN
SSL-VPNは、TLSを用いて実装するVPNのことを指します。主に、クライアントとネットワーク間の安全なリモート接続に使われます。IPsec-VPN
IPsec-VPNは、IPsecというプロトコル群を用いて実装するVPNのことを指します。IPsecは、主に拠点間ネットワークの安全な接続に使われます。なお、IPsec-VPNは、インターネットVPNとしてだけではなく、IP-VPNでも利用するケースがあります。
※IP-VPNとAWS VPNの関わりについては本記事では掘り下げませんが、IP-VPNとインターネットVPNはよく並べて語られるため簡単に紹介します。
通信事業者の閉域網を基盤として実装するVPNです。そのため、インターネットVPNに比べてネットワークの通信品質およびセキュリティ面の信頼性は高いです。一方、利用コストは高くなります。
そして、「実装するプロトコル」という観点では、MPLSプロトコルを用いた「MPLS-VPN」を用いることが一般的です。なお、MPLSは通信の暗号化は行いません。セキュリティを強化するために、IPsecを組み合わせて暗号化を行うケースもあります。
※その意味で、上記のツリーではIP-VPNとIPsec-VPNを点線でつないでいます。
AWSが提供するVPNサービスの総称を「AWS VPN」と言います。「AWS VPN」には、AWS Site-to-Site VPNとAWS Client VPNの2種類があります。それぞれ、概要と位置付けを解説します。
AWS Site-to-Site VPNは、VPCとVPC以外のネットワーク間のサイト間VPN接続に利用できるAWSサービスです。
VPNの実装手段としては、IPsecのみサポートしています。そのため、AWS Site-to-Site VPNは先ほどの分類における「IPsec-VPN」を実装する手段の一つと言えます。
AWS Client VPNは、特定クライアントとVPC間のリモートアクセスVPN確立に利用できるAWSサービスです。
VPNの実装手段としては、OpenVPNベースのVPNクライアントを使用します。OpenVPNはSSL/TLSを利用するものであるため、AWS Client VPNは先ほどの分類でいう「SSL-VPN」を実装する手段の一つと言えます。
本章では、AWS Site-to-Site VPNを適切な用途で活用いただくために、AWS Site-to-Site VPNの利用メリットおよび利用パターンについて解説します。
AWS Site-to-Site VPNは、VPNの確立にIPsecを利用します。IPsecでは、通信の暗号化および通信する機器間で相互に認証を行います。そのため、インターネットを基盤とする接続でも、強固なセキュリティの通信が可能になります。
AWS Site-to-Site VPNは、オンプレミスとクラウド間のプライベート接続の手段として、閉域網を実装する場合に比べ安価なコストで利用できます。理由2点あります。1点は、インターネット通信を基盤に実装できるため、ネットワーク料金が閉域網に比べて安価なことです。2点目に、AWS利用料においても、AWS Site-to-Site VPNの固定料金が閉域網接続に利用するAWS Direct Connectより安価なことです。
AWS Site-to-Site VPNを構成するAWSリソースは、全てAWSマネジメントコンソールから簡単に作成、削除することができます。AWSリソースを展開するまでのリードタイムはありません。そのため、IPsecをサポートするネットワーク機器さえ用意できれば、VPNの確立を素早く行えます。
本項では、AWS Site-to-Site VPNの利用パターンをいくつかご紹介します。
ご紹介する利用パターンは以下の3つです。
AWS Site-to-Site VPNをインターネットVPNとして実装するパターンです。
このパターンでは、VPCとVPC以外のネットワーク間のプライベート接続を安価なコストで実現できます。一方、インターネットがベースになるため、通信の安定性は期待できません。そのため、高品質な通信を必要としない場合や、とにかくコストを抑えたい場合に利用できます。
メイン回線とするAWS Direct Connectのバックアップ回線としてAWS Site-to-Site VPNを利用するパターンです。
まず、AWS Direct ConnectというAWSサービスについて簡単に説明します。AWS Direct Connectは、VPCと高品質なプライベート接続を確立するための専用ネットワークサービスです。AWS Site-to-Site VPNと同様、オンプレミスとVPC間のプライベート接続を実現する選択肢の一つとして挙げられます。AWS Site-to-Site VPNよりも安定性が高く、かつ高速な通信を実現したい場合に選択されます。ただし、費用はAWS Site-to-Site VPNを利用する場合より高価になります。
このパターンでは、可用性の高いプライベートネットワークを実現できます。平常時はメイン回線として通信品質の高いAWS Direct Connectで通信を行い、メイン回線障害時は、通信経路をAWS Site-to-Site VPNに切り替えることで、通信不可となることを防ぎます。そのため、重要度の高いシステム間通信等の実現手段として有効です。ただし、メイン回線障害時には通信性能は低下する、という点は認識しておく必要があります。
AWS Direct Connect通信のセキュリティを強化する利用パターンです。
通常は暗号化されないAWS Direct Connectの通信を、AWS Site-to-Site VPN(厳密にはIPsec)を用いて暗号化します。下図の紫背景の箇所が、AWS Site-to-Site VPNによる通信の暗号化範囲です。
このパターンでは、AWS Direct Connectの通信のセキュリティをより高めることができます。システムのセキュリティ要件が高く、通信の暗号化が必須である場合等に利用できます。
ただし、本構成を取るためにはAWS Transit GatewayというAWSサービスの利用も必要になり、構成の複雑化と利用料の増加は避けられないため、接続のセキュリティとコストのトレードオフを考慮する必要はあります。
\ AWS環境の構築支援サービスが必要な方はこちら /
本章では、AWS Site-to-Site VPNの実装について解説します。まずはAWS Site-to-Site VPNの構成要素、次にAWS Site-to-Site VPNの実装手順、という順番でご案内します。
AWS Site-to-Site VPNの構成要素は、
の4つです。
カスタマーゲートウェイデバイスは、VPN接続対象ネットワークにおいて、VPNゲートウェイの役割を果たすネットワーク機器自体のことを指します。なお、Site-to-Site VPNの構成を理解するために便宜上そのような呼称で表しているだけであり、AWS上で作成するリソースではありません。
カスタマーゲートウェイは、AWS上で作成するリソースの一つです。オンプレミス側のカスタマーゲートウェイデバイスにあたるネットワーク機器の情報を、AWS側に読み込ませるために作成します。
ターゲットゲートウェイは、AWS側のVPNゲートウェイとして利用するエンドポイントの総称です。ターゲットゲートウェイとして指定できるのは、仮想プライベートゲートウェイとAWS Transit Gatewayの2つです。なお、どちらもAWS Site-to-Site VPN専用のエンドポイントというわけではなく、AWS Direct Connectの接続ターゲットとしても指定できます。
※図は、ターゲットゲートウェイとして仮想プライベートゲートウェイを利用する場合の構成イメージです。
1.仮想プライベートゲートウェイ
仮想プライベートゲートウェイは、VPCと外部ネットワークをプライベート接続する際の出入口の役割を果たします。VPCごとに一つのみ関連付けることができます。
2.AWS Transit Gateway
AWS Transit Gatewayは、VPCや様々なネットワークをハブ&スポーク構成で接続できるAWSサービスです。相互接続したいネットワークが多数になる場合に、メッシュ構成を取る場合と比較してネットワーク構成を簡素にできます。
VPN接続は、オンプレミス側のVPNゲートウェイと、AWS側のターゲットゲートウェイ間でIPsec-VPNを確立させるためのリソースです。このリソースが、AWS Site-to-Site VPNの本体と捉えることもできます。
先ほどの「AWS Site-to-Site VPNの利用パターン」で紹介した「安価なプライベート接続」構成を実現する手順をご案内します。AWS Site-to-Site VPNによるVPN接続を確立し、オンプレミス側の接続確認用端末からAWS側のEC2への疎通確認が成功するところまで実施します。
ネットワークセグメントの情報を含めた全体構成のイメージを示します。
まずは、AWSマネジメントコンソール上の設定作業を実施します。インターネット接続できる端末であればなんでもかまいません。ただし、後の手順でルーター上で実行するコマンドが記述された設定ファイルを取得するため、ルーター管理用端末から実施するとスムーズです。
なお、VPC、サブネット、EC2インスタンス等のリソースは既に作成済みとし、以降ではAWS Site to Site VPN特有の設定のみ案内します。
1 カスタマーゲートウェイの作成
1.1 カスタマーゲートウェイのコンソールにアクセスします。
URL:
https://ap-northeast-1.console.aws.amazon.com/vpc/home?region=ap-northeast-1#CustomerGateways:
「カスタマーゲートウェイを作成」をクリックします。
1.2 赤枠内項目に入力し、「カスタマーゲートウェイを作成」をクリックします。
1.3カスタマーゲートウェイが作成されたことを確認します。
2 仮想プライベートゲートウェイの作成
2.1 仮想プライベートゲートウェイのコンソールにアクセスします。
URL:
https://ap-northeast-1.console.aws.amazon.com/vpc/home?region=ap-northeast-1#VpnGateways:
「仮想プライベートゲートウェイを作成」をクリックします。
2.2 赤枠内項目に以下のとおり入力し、「仮想プライベートゲートウェイを作成」をクリックします。
2.3 仮想プライベートゲートウェイが作成され、状態が「デタッチ済み」となっていることを確認します。
2.4 test-vgwを選択し、右上「アクション」から、「VPCへアタッチ」をクリックしてVPCにアタッチしておきます。
2.5 VPN接続に利用するVPCを選択し、「VPCへアタッチ」をクリックします。
2.6 test-vgwの状態が「アタッチ済み」となったことを確認します。
3 ルーター設定
3.1 VPCのルートテーブルにて、test-vgw向けのルーティング設定を入れておきます。
赤枠内項目に以下のとおり入力し、「変更を保存」をクリックします。
4 VPN接続の作成
4.1 VPN接続のコンソールにアクセスします。
URL:
https://ap-northeast-1.console.aws.amazon.com/vpc/home?region=ap-northeast-1#VpnConnections:
「VPN接続を作成する」をクリックします。
4.2 赤枠内項目に以下のとおり入力し、「VPN接続を作成する」をクリックします。
4.3 test-vpnconnectionが表示され、状態が「利用可能」となっていることを確認します。
4.4 「トンネルの詳細」タブを確認し、この時点では「ダウン」となっていることを確認します。
なお、AWS Site to Site VPNは、冗長性確保のためデフォルトで2本のIPsecトンネルを作成する仕様となっています。
5 Configファイルのダウンロード
5.1 作成完了したVPN接続から、Configファイルをダウンロードします。このConfigファイルには、VPN確立予定のオンプレミス側のネットワーク機器で実行するコマンド群が記述されています。コマンドの中身には、ここまでで作成したカスタマーゲートウェイやVPN接続作成時の入力情報、IPsec-VPN確立に使用する各プロトコル情報などが含まれています。
オンプレミス側の作業に移ります。この工程では、ルーター設定の実施、接続確認等を行います。
以下に、オンプレミス側の配線イメージを示します。
なお、オンプレ側ルータ―にはYAMAHAのルーター RTX830を使用します。
1 ネットワーク機器への設定ファイル内のコマンド群実行
1.1 ルーター管理用端末から、Teraterm等のターミナルエミュレータを用いてルーターの管理コンソールにアクセスします。
1.2 不要な設定が入るのを避けるため、設定を初期状態に戻しておきます。
> administrator # cold start
1.3 先ほどダウンロードした設定ファイルの内容を全てコピーし、そのまま実行します。
※AWSサービスの設定が正しければ、ファイルの加工等は一切必要ないため、ここでは内容は割愛します。
2 ルーティング設定
2.1 VPN接続確立および通信を成功させるためのルーティング設定コマンドを実行します。
※以降のコマンドは、YAMAHAルーター特有のものです。使用するルーターの機種で利用可能なコマンドに適宜読み替えてください。
login timer clear ip route default gateway x.x.x.1 ※デフォルトゲートウェイIPアドレス ip route 10.0.0.0/16 gateway tunnel 1 hide gateway tunnel 2 hide ip lan1 address 192.168.200.254/24 ip lan2 address x.x.x.x/24 ※WAN側パブリックIPアドレス
3 接続確認用端末へのIP付与設定
3.1 接続確認用端末にIPアドレスを割り当てるコマンドを実行します。
dhcp service server dhcp server rfc2131 compliant except remain-silent dhcp scope 1 192.168.200.1-192.168.200.10/24 statistics traffic on
4 接続ステータスの確認
4.1 ルートテーブルの設定確認
VPNが確立されたVPC(CIDR:10.0.0.0/16)宛の通信が、TUNNEL[n]へルーティングされるよう設定されていることを確認します。 # show ip route 宛先ネットワーク ゲートウェイ インタフェース 種別 付加情報 default 150.249.252.1 LAN2 static 10.0.0.0/16 - TUNNEL[1] static 10.0.0.0/16 - TUNNEL[2] static x.x.x.0/24 x.x.x.x LAN2 implicit 169.254.18.220/30 - TUNNEL[2] implicit 169.254.184.60/30 - TUNNEL[1] implicit
4.2 IPsecの状態確認
IPsecが有効になっていることを確認します。具体的には、connection列が「isakmp」、または「tun[000n]esp」となっており、かつremote-idがAmazonが保有するパブリックIP(35、あるいは52から始まるもの)となっている情報が出力されていることを確認します。
# show ipsec sa Total: isakmp:2 send:2 recv:2 sa sgw isakmp connection dir life[s] remote-id ---------------------------------------------------------------------------- 1 1 - isakmp - 28788 35.75.105.20 2 2 - isakmp - 28788 52.199.233.227 3 1 1 tun[0001]esp send 3590 35.75.105.20 4 1 1 tun[0001]esp recv 3590 35.75.105.20 5 2 2 tun[0002]esp send 3590 52.199.233.227 6 2 2 tun[0002]esp recv 3590 52.199.233.227
4.3 BGPの状態確認
「BGP state = Established」となっていることを確認します。 # show status bgp neighbor BGP neighbor is 169.254.184.61, remote AS 64512, local AS 65000, external link BGP version 4, remote router ID 169.254.184.61 BGP state = Established, up for 00:00:10 Last read 00:00:09, hold time is 30, keepalive interval is 10 seconds Received 3 messages, 0 notifications, 0 in queue Sent 5 messages, 0 notifications, 0 in queue Connection established 1; dropped 0 Last reset never Local host: 169.254.184.62, Local port: 179 Foreign host: 169.254.184.61, Foreign port: 42333 BGP neighbor is 169.254.18.221, remote AS 64512, local AS 65000, external link BGP version 4, remote router ID 169.254.18.221 BGP state = Established, up for 00:00:05 Last read 00:00:04, hold time is 30, keepalive interval is 10 seconds Received 3 messages, 0 notifications, 0 in queue Sent 5 messages, 0 notifications, 0 in queue Connection established 1; dropped 0 Last reset never Local host: 169.254.18.222, Local port: 179 Foreign host: 169.254.18.221, Foreign port: 40371
4.4 VPN接続の状態確認
test-vpnconnectionのステータスが「アップ」になっていることを確認します。
5 疎通確認
5.1 接続管理用端末からpingによる通信確認を行います。
※以降は、Windows端末のコマンドプロンプト上での操作です。
C:\Users\xxxxx> C:\Users\xxxxx>ping 10.0.134.243 10.0.134.243 に ping を送信しています 32 バイトのデータ: 10.0.134.243 からの応答: バイト数 =32 時間 =5ms TTL=127 10.0.134.243 からの応答: バイト数 =32 時間 =6ms TTL=127 10.0.134.243 からの応答: バイト数 =32 時間 =8ms TTL=127 10.0.134.243 からの応答: バイト数 =32 時間 =6ms TTL=127 10.0.134.243 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 5ms、最大 = 8ms、平均 = 6ms
無事、EC2インスタンスと疎通確認ができました。
※ひとつ前のステップの確認結果に問題がなかったにも関わらず疎通失敗する場合は、EC2側でセキュリティグループの通信許可設定が足りていない、あるいはルートテーブルの設定が不足している等の可能性が考えられます。
AWS Site-to-Site VPNの実装手順の例は以上です。
最後に、AWS Site-to-Site VPNの料金について解説します。
AWS Site-to-Site VPNの料金は、接続ごとの固定料金と、処理した通信パケット量に応じた従量費用の2つで決まります。それぞれの料金は以下のとおりです。なお、料金は東京リージョンでの利用を前提としています。
VPN接続1つあたり USD 0.048/時間 発生します。
※「VPN接続」はAWS Site-to-Site VPNの構成要素で紹介したものです。
インターネットVPNとしてAWS Site-to-Site VPNを実装する場合、インターネット向けのアウトバウンド通信の転送量に応じて料金が発生します。転送量ごとに単価が安くなっていく仕様です。詳細は以下表をご確認ください。
合計容量 | 単価 |
最初の 10 TB/月 | USD 0.114/GB |
次の 40 TB/月 | USD 0.089/GB |
次の 100 TB/月 | USD 0.086/GB |
150 TB/月以上 | USD 0.084/GB |
※従量課金は、厳密にはAWS Site-to-Site VPNの料金ではなく、EC2料金に設定されているものです。
以下を前提として算出
項目 | 単価 | 数量(時間、データ量) | 料金(USD) | 料金(円) |
VPN接続料金 | 0.048 | 720時間 | $35 | 5,075 |
データ転送料金 | 0.114 | 500GB | $57 | 8,265 |
合計 | 13,340 |
参考:AWS VPN の料金
https://aws.amazon.com/jp/vpn/pricing/
参考:Amazon EC2 オンデマンド料金
https://aws.amazon.com/jp/ec2/pricing/on-demand/
ここまでで、AWS Site-to-Site VPNの概要、特徴、実装例、料金について解説しました。
本記事を通して、AWS VPNおよびAWS Site-to-Site VPNの基本を理解いただき、より良いクラウドネットワーク構成の検討につなげていただければ幸いです。
なお、弊社でも、AWS Site-to-Site VPNを含むAWSネットワークの設計および実装のご支援が可能です。オンプレミスネットワークとAWSを組み合わせたハイブリッド構成を組みたいご要望がありましたら、ぜひ弊社にご相談ください。
\ AWS環境の構築支援サービスはこちら /
2017年入社。DWH製品のサポート業務に従事し、2020年頃からクラウド分野を担当。AWS関連の提案活動から技術支援、セミナー登壇等幅広く対応。それらの活動が認められ、 2021年にアシストで初めて「APN AWS Top Engineers」 に選出される。週末は「雰囲気がいいから」という理由で購入したレコードプレーヤーで音楽を聞くが、音質の違いは一切わからない。...show more
■本記事の内容について
本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。
■商標に関して
・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
この記事では 、AWS Skill Builder のログイン手段として代表的なAWS Builder IDを使用した AWS Skill Builderへのログイン方法についてご紹介します。
AWS IAM Identity Centerを利用することで、AWSアカウントやアプリケーションをアクセス先とするIDアクセス制御を一元的に管理できます。本記事では、役割が似ているAWS Identity and Access Management(IAM)との違いも含めて概要や設定例を解説します。