高可用性・高パフォーマンスな「Accelerated サイト間VPN」を試してみた #reinvent

2019.12.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

re:Invent2019 で Accelerated サイト間VPNが発表されました。

[速報] AWS Accelerated Site to site VPN Connectionsがリリースされました! #reinvent

東京リージョンでも利用可能とのことなので、早速触ってみましょう。

目次

  1. Global Accelerator と Accelerated サイト間VPN
  2. やってみた
  3. いろいろ確認
  4. おわりに
  5. 参考

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 アドレス を提供します。

– 引用:https://aws.amazon.com/jp/global-accelerator/

上にあるとおり、 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インスタンス部分は割愛して、以下の手順を説明します。

  1. Customer Gateway 作成
  2. Transit Gateway 作成
  3. VPN接続作成
  4. 疎通確認

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 を介して作成することはできません

– 引用:https://aws.amazon.com/jp/vpn/faqs/

と、あるとおり 現在 AWS Global Accelerator コンソール/API からのサイト間VPN作成は想定していないとのこと。 設定の確認や変更なども おそらく同じ理由かと思います。

おわりに

Accelerated サイト間VPNを構築して色々と確認してみました。

VPNの構成として

  • アクティブに DirectConnect、
  • スタンバイに インターネットVPN(今までのサイト間VPN)

の環境がよく採用されている印象です。

今回の Accelerated サイト間VPNのアップデートで、 より高可用性・高パフォーマンスなインターネットVPN構築が可能になりました。

コストと信頼性を考慮すると、これからは Accelerated サイト間VPNのみの採用も視野に入ってきそうですね。

参考