いつも記事を読んでいただきありがとうございます!
モブエンジニア(@mob-engineer)です!
個人的に気になっているCloud WANに関するハンズオンを触ってみましたので備忘のため記事として残しました。
Cloud WANとは
AWS公式ドキュメントによれば以下のように示されています。
AWS Cloud WAN は、クラウド環境とオンプレミス環境の両方で稼働するリソースを接続する統合グローバルネットワークを構築、管理、監視できるマネージドワイドエリアネットワーク (WAN) サービスです。AWS クラウド WAN は、AWS グローバルネットワーク全体にわたってオンプレミスのブランチオフィス、データセンター、Amazon Virtual Private Cloud (VPC) に接続できる中央ダッシュボードを提供します。シンプルなネットワークポリシーを使用して、ネットワーク管理とセキュリティタスクを一元的に設定および自動化し、グローバルネットワークの全体像を把握できます。
利用するうえでグローバルネットワークとコアネットワークの概念をおさえておく必要がありますが、実際に操作しないと理解が難しいと思います。また、実務で触ることがあるかと言われたらそこまで多くないサービスだと考えていますので、自発的にハンズオンを活用しながら触る必要があると考えています。
ハンズオンについて
今回利用するハンズオンは次のものになります。
尺の都合上Lab1のみの対応となります。
そのうえで、Lab1のみを触るだけでもCloud WANの概念を理解することが出来ると思います。
Transit Gateway・Site-to-Siteを含むネットワーク通信をCloud WANを用いて管理する方法をキャッチアップすることを目的とした内容となります。
本ハンズオン用にOrganizationsを開設した方が管理が楽です。
また、解説したOrganizationsのVPC上限を緩和させる必要があります。
事前準備(Organizations作成、IAM Identity Centerへの紐づけ、VPC上限緩和、CloudFormation実行)は割愛します。
なお、今回のハンズオンを実施することで以下構成を実現することが出来ます。
Lab1(basic): AWS Cloud WAN を介して、インターネットと通信する
Cloud WAN経由でインターネット通信を行います。
- リージョンが東京リージョンになっていることを確認してください
- 画面上部の検索ボックスに[Network Manager]を入力
- 検索結果より[Network Manager]をクリック
- Network Managerの設定画面が表示されます
- 左ペインの[グローバルネットワーク]をクリック
- グローバルネットワーク欄に表示されているリンクをクリック
- グローバルネットワークの設定画面が表示されます
- 左ペインの[ポリシーのバージョン]をクリック
- ポリシーバージョンID欄に表示されているリンクをクリック
- 設定されている内容(エッジロケーションなど)が表示されます
- 左ペインの[アタッチメント]をクリック
- アタッチメント一覧画面が表示されます
- 右上の[アタッチメントの作成]ボタンをクリック
- 以下の通りアタッチメント設定を入力します
設定方法についてはTransit Gatewayと近い印象を持ちました
- 最下部の[アタッチメントの作成]ボタンをクリック
- 同じよう要領で[prod]用の設定も行います
- 作成したアタッチメントが[Avariable]になっていることを確認します
- CloudShell上で設定確認コマンドを実行します
~ $ export GLOBAL_NETWORK_ID=`aws networkmanager list-core-networks --no-cli-pager | jq .CoreNetworks[].GlobalNetworkId | sed s/\"//g`
~ $ export CORE_NETWORK_ID=`aws networkmanager list-core-networks --no-cli-pager | jq .CoreNetworks[].CoreNetworkId | sed s/\"//g`
~ $
~ $ aws networkmanager get-network-routes --global-network-id $GLOBAL_NETWORK_ID --route-table-identifier "CoreNetworkSegmentEdge={CoreNetworkId=$CORE_NETWORK_ID,SegmentName=share,EdgeLocation=ap-northeast-1}" --query NetworkRoutes --output yaml
- DestinationCidrBlock: 10.1.0.0/16
Destinations:
- CoreNetworkAttachmentId: attachment-0779c036d0cefa0b2
ResourceId: vpc-0d8b495fdb84f2585
ResourceType: vpc
State: ACTIVE
Type: PROPAGATED
- DestinationCidrBlock: 10.0.0.0/16
Destinations:
- CoreNetworkAttachmentId: attachment-0ad6adc479ef494d9
ResourceId: vpc-0c8555205d615ff32
ResourceType: vpc
State: ACTIVE
Type: PROPAGATED
~ $ aws networkmanager get-network-routes --global-network-id $GLOBAL_NETWORK_ID --route-table-identifier "CoreNetworkSegmentEdge={CoreNetworkId=$CORE_NETWORK_ID,SegmentName=prod,EdgeLocation=ap-northeast-1}" --query NetworkRoutes --output yaml
- DestinationCidrBlock: 10.1.0.0/16
Destinations:
- CoreNetworkAttachmentId: attachment-0779c036d0cefa0b2
ResourceId: vpc-0d8b495fdb84f2585
ResourceType: vpc
State: ACTIVE
Type: PROPAGATED
- DestinationCidrBlock: 10.0.0.0/16
Destinations:
- CoreNetworkAttachmentId: attachment-0ad6adc479ef494d9
ResourceId: vpc-0c8555205d615ff32
ResourceType: vpc
State: ACTIVE
Type: PROPAGATED
~ $ aws ec2 describe-vpcs --filter "Name=tag-value,Values=wscwan-ap-northeast-1-BoundaryVpc" --region ap-northeast-1 | jq .Vpcs[].VpcId
"vpc-0c8555205d615ff32"
~ $ aws ec2 describe-vpcs --filter "Name=tag-value,Values=wscwan-ap-northeast-1-PrivateVpc" --region ap-northeast-1 | jq .Vpcs[].VpcId
"vpc-0d8b495fdb84f2585"
- スタティックルートの設定を行います
- 左ペインの[ポリシーのバージョン]をクリックします
- ポリシー左側のチェックボックスをクリック
- 上部の[編集]ボタンをクリック
- 下へスクロールし[セグメントアクション オプション]をクリック
- ルートセクションの[作成]ボタンをクリック
- セグメントルールを以下の通り設定
- 設定後、[セグメントルールの作成]ボタンをクリック
- 最下部までスクロールし[ポリシーの作成]ボタンをクリック
- [Ready to execute]が表示されたら[変更セットの表示または適用]ボタンをクリック
- [変更セットの適用]ボタンをクリック
- Boudary VPCのルートテーブルにCloud WAN向けのルートテーブルを設定します
- 画面上の検索ボックスに[VPC]と入力
- 検索結果より[VPC]をクリック
- VPC設定画面が表示されます
- 左ペインの[ルートテーブル]をクリック
- [wscwan-ap-northeast-1-RtbBoundaryVpcNatSubnet]を検索しクリック
- [ルート]タブをクリック
- [ルートを編集]ボタンをクリック
- 以下の通り設定します
- 設定後[変更を保存]ボタンをクリック
同様にwscwan-ap-northeast-1-RtbPrivateVpcPrivateSubnetもルートテーブルの修正を行います。
設定後、CloudFormation経由で構築したEC2インスタンスから疎通確認を行います。
sh-4.2$ bash -I
[ssm-user@ip-10-1-1-100 bin]$ ping aws.amazon.com
PING dr49lng3n1n2s.cloudfront.net (18.65.168.66) 56(84) bytes of data.
64 bytes from server-18-65-168-66.nrt57.r.cloudfront.net (18.65.168.66): icmp_seq=1 ttl=247 time=4.05 ms
64 bytes from server-18-65-168-66.nrt57.r.cloudfront.net (18.65.168.66): icmp_seq=2 ttl=247 time=1.68 ms
64 bytes from server-18-65-168-66.nrt57.r.cloudfront.net (18.65.168.66): icmp_seq=3 ttl=247 time=1.73 ms
64 bytes from server-18-65-168-66.nrt57.r.cloudfront.net (18.65.168.66): icmp_seq=4 ttl=247 time=1.86 ms
64 bytes from server-18-65-168-66.nrt57.r.cloudfront.net (18.65.168.66): icmp_seq=5 ttl=247 time=1.66 ms
64 bytes from server-18-65-168-66.nrt57.r.cloudfront.net (18.65.168.66): icmp_seq=6 ttl=247 time=1.64 ms
64 bytes from server-18-65-168-66.nrt57.r.cloudfront.net (18.65.168.66): icmp_seq=7 ttl=247 time=1.65 ms
64 bytes from server-18-65-168-66.nrt57.r.cloudfront.net (18.65.168.66): icmp_seq=8 ttl=247 time=1.66 ms
^C
--- dr49lng3n1n2s.cloudfront.net ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7012ms
rtt min/avg/max/mdev = 1.640/1.995/4.054/0.781 ms
[ssm-user@ip-10-1-1-100 bin]$ curl http://checkip.amazonaws.com
18.179.168.199
[ssm-user@ip-10-1-1-100 bin]$ ^C
[ssm-user@ip-10-1-1-100 bin]$
とりあえず、インターネット抜けしていることは確認取れました。
所感
Cloud WANのハンズオンをLab1まで触ってみましたが初学者が使いこなすのはかなり厳しいといった印象を持ちました。理由としていくつかありますが、
- Transit Gatewayなどのネットワークサービスについて理解しないといけない
- Cloud WANでサポートしている分析機能が他SDNサービスより不足している
- ポリシーの概念が難解
があると思います。
そのうえで、機能を活用することでAWSネットワークの幅を広げることが出来ると思いますので、ハンズオンを活用して触りながら理解するのはよいと思います。
最後まで記事をお読みいただきありがとございます。
参考サイト
PS
アップデート件数として11件なのでそこまで多くない印象ですね。
(分析機能は強化してもらいたいですね)