高可用性・高パフォーマンスな「Accelerated サイト間VPN」を試してみた #reinvent
re:Invent2019 で Accelerated サイト間VPNが発表されました。
[速報] AWS Accelerated Site to site VPN Connectionsがリリースされました! #reinvent
東京リージョンでも利用可能とのことなので、早速触ってみましょう。
目次
Global Accelerator と Accelerated サイト間VPN
Accelerated サイト間VPNはバックグラウンドで Global Accelerator を使用しています。
先にこちら Global Accelerator を簡単に説明します。
Global Accelerator
AWS Global Accelerator は、ローカルまたは世界中のユーザーに提供するアプリケーションの 可用性とパフォーマンスを改善する サービスです。
Application Load Balancer、Network Load Balancer、Amazon EC2 インスタンスなど、 単一または複数の AWS リージョンのアプリケーションエンドポイントへの 固定エントリポイントとして機能する スタティック IP アドレス を提供します。
上にあるとおり、 Global Acceleratorの利用で、 スタティックIP が付与されます。 このスタティックIPは エニーキャストアドレス です。 参考: IP Anycast(atmarkIT)
このスタティックIPへの通信は、まずネットワーク的に 最も近い AWSのエッジロケーション へルーティングされます。 その後 AWSが持つ AWS グローバルネットワーク を横断してエンドポイントへ通信が向かいます。
一般のパブリックインターネットでは混雑することがあり、可用性・パフォーマンスが安定 しませんが、 Global Acceleratorは 膨大なAWS グローバルネットワークを経由するため、 可用性が高く、混雑がない 恩恵が受けられます。
Accelerated サイト間VPN
Accelerated サイト間VPNは Global Accelerator を利用したサイト間VPN です。
サイト間VPNではデフォルトで 2本 VPNトンネルが貼られます。 Accelerated サイト間VPNでは、 1本のVPNトンネルにつき 1つのアクセラレータ が使用され、 そのスタティックIPでセッションを張ります。
VPNの通信は AWS グローバルネットワークを経由して接続されるため、 高可用性・高パフォーマンスが維持されます。 もちろん ネットワーク範囲が 国内(1リージョン)に収まっていても この恩恵を受けられます。
やってみた
シンプルですが以下の環境を構築します。
IPアドレス範囲はオンプレ側 192.x.x.x
、AWS側 10.x.x.x
です。
- VPCとオンプレ(自宅)をVPN接続します
- Accelerated サイト間VPNに対応している Transit Gateway(TGW) を使います
VPC, EC2インスタンス部分は割愛して、以下の手順を説明します。
- Customer Gateway 作成
- Transit Gateway 作成
- VPN接続作成
- 疎通確認
1. Customer Gateway 作成
まず、Customer Gatewayを作成します。
オンプレ側ルータの情報を登録します。 今回は BGPは使用せず、静的ルーティングで構成します。
2. Transit Gateway 作成
次にTGWを作成します。全てデフォルト設定です。
Transit Gateway アタッチメント
画面にて、
TGW を EC2インスタンスを配置しているサブネットにアタッチします。
サブネットのルートテーブルを編集します(よく忘れます…)。 デフォルトルートを TGWに向けましょう。
3. VPN接続作成
今回のメイン、 Accelerated な VPN接続を作成します。
作成したTGW/CGWを指定、そして Enable Acceleration にチェックを入れて VPN接続作成します。
VPN接続のリソースが作成されると、Transit Gateway アタッチメントにその項目が追加されます。
Transit Gateway ルートテーブル
の画面にて、
VPN接続に向けるルートを作成します。
サイト間のVPN接続
の画面にて、
オンプレルーターに投入するConfigを取得して、
ルーターの設定をしましょう。
4. 疎通確認
VPN接続の 2トンネルが全て アップ
になっているか確認します。
オンプレ(自宅)側から pingも無事通りました。
$ ping 10.100.49.152 PING 10.100.49.152 (10.100.49.152): 56 data bytes 64 bytes from 10.100.49.152: icmp_seq=0 ttl=252 time=17.878 ms 64 bytes from 10.100.49.152: icmp_seq=1 ttl=252 time=17.895 ms 64 bytes from 10.100.49.152: icmp_seq=2 ttl=252 time=16.981 ms 64 bytes from 10.100.49.152: icmp_seq=3 ttl=252 time=22.275 ms 64 bytes from 10.100.49.152: icmp_seq=4 ttl=252 time=16.986 ms
いろいろ確認
IPアドレス レンジ
各トンネルの 外部IPアドレス 、これらが Global Accelerator から払い出されたものか確認します。
こちら にAWSが保有する IPレンジ 情報があります。
Global Accelerator から払い出される IPレンジには "service": "GLOBALACCELERATOR"
が含まれます。
(参考: IP Address Ranges of Global Accelerator Edge Servers)
▼ 1つ目
▼ 2つ目
どちらも Global Accelerator から払い出されたIPアドレスでした。
IPアドレス 逆引き
When you create an accelerator, Global Accelerator provisions two static IP addresses for you.
It also assigns a default Domain Name System (DNS) name to your accelerator, similar to
a1234567890abcdef.awsglobalaccelerator.com
, that points to the static IP addresses.– 引用:https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.dns-addressing.html
と、あるとおり Accelerator作成時に
- Accelerator 1つにつき 2つのスタティックIP
- それらIPアドレスに向く
xxx.awsglobalaccelerator.com
といった DNS名
が提供されます。
▼ VPNトンネルに使用されている IPアドレスを逆引きしてみましょう。
$ nslookup 99.83.xx.xx Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: 45.235.xx.xx.in-addr.arpa name = adcaxxxxxxxxxxxxx.awsglobalaccelerator.com. Authoritative answers can be found from:
確かに xxx.awsglobalaccelerator.com
がアサインされていました。
▼ このドメイン名で正引きしてみましょう。
$ nslookup adcaxxxxxxxxxxxxx.awsglobalaccelerator.com. Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: adcaxxxxxxxxxxxxx.awsglobalaccelerator.com. Address: 75.2.xx.xx Name: adcaxxxxxxxxxxxxx.awsglobalaccelerator.com. Address: 99.83.xx.xx
Global Acceleratorのドキュメント通り、 2つのIPアドレスが登録されています。
オンプレルーターに投入した 1VPNトンネルのConfigでは、 これら 2つのIPアドレスの内 1つを使っていました。
マネジメントコンソール
マネジメントコンソールでは (2つ作成されているはずの) Acceleratorは見ることはできませんでした。
Q: Accelerated サイト間 VPN は AWS Global Accelerator のオプションにありますか?
A: いいえ、現在 Accelerated サイト間 VPN は、AWS サイト間 VPN を介してのみ作成できます。 Accelerated サイト間 VPN は、 AWS Global Accelerator コンソールまたは API を介して作成することはできません 。
と、あるとおり 現在 AWS Global Accelerator コンソール/API からのサイト間VPN作成は想定していないとのこと。 設定の確認や変更なども おそらく同じ理由かと思います。
おわりに
Accelerated サイト間VPNを構築して色々と確認してみました。
VPNの構成として
- アクティブに DirectConnect、
- スタンバイに インターネットVPN(今までのサイト間VPN)
の環境がよく採用されている印象です。
今回の Accelerated サイト間VPNのアップデートで、 より高可用性・高パフォーマンスなインターネットVPN構築が可能になりました。
コストと信頼性を考慮すると、これからは Accelerated サイト間VPNのみの採用も視野に入ってきそうですね。