目的・やりたいこと
後述の参考URLの「4) North-South: Transit GatewayとNLB/ALBまたはリバースプロキシによるインターネットからの通信の一元化」の構成図において、Central Ingress VPCとCentral Egress VPCが分かれているが、IGWのコストを節約するためにもできれば一つのVPCに集約したい。
Goal:Spoke VPCのEC2からインターネット接続しつつ、外部からWebアクセスされる
対象者
AWS Network Firewallを導入して、インバウンドトラフィックもアウトバウンドトラフィックも検査VPC経由で検査させたい構成を考えている方
対象となる技術
- Transit Gateway
参考URL
注意事項
- このモデルでは、クライアントのソースIPアドレスが保持されず、ソースIPアドレスは通信を終端するアプライアンスのIPアドレスとなります。そのため、送信元IPアドレスベースで制御するセキュリティ機能を利用する場合は注意が必要です。
- ALB/NLBのターゲットはインスタンスIDではなくIPアドレス指定になります。
作業の流れ
概要図
- 参考構成
AWSの外部から流入するトラフィックを一元化することが可能です。このシナリオでは、Web Application Firewall(WAF)やサードパーティのLoad Balancer(LB)などのマーケットプレイスのネットワークアプライアンスが、Ingress VPCに展開されます。このアプライアンスは、通信を終端し、バックエンドインスタンスへの新しい接続を確立します(リバースプロキシとも呼ばれます)。この方法では、クライアントとサーバーの間にアプリケーションロジックを導入することができ、また、セキュリティ目的で使用することもできます。ALBやNLBなどのAWSサービスをこの構成で導入することも可能です。
図は、集約管理型の導入モデルにおいて、Ingress VPCとNetwork Firewallを組み合わせた場合のアーキテクチャを示しています。 - 検証した構成
ここからInspection VPCを割愛して、Inspection VPCを経由せず、離れたVPCにあるEC2へのインバウンドとからのアウトバウンドを、インバウンドとアウトバウンドを兼ねた1つのCentral VPC経由でやるだけのシンプルな構成にした。
事前作業
- Spoke VPCにあるEC2に入る必要があるため、パブリックサブネットに踏み台EC2を設置
- Spoke EC2やその他必要なVPCやそのサブネット、ルーティングテーブル、NATGW、IGWなどはVPC作成時にリソースマップを使って事前一括作成済み
検証手順
1.ターゲットグループの作成
ここでそういえば異なる離れたVPCにあるインスタンスをターゲットにするにはどうすればいいんだろう?という根本的な疑問に気づいた
しかしそれにはしっかり実現する方法があった
ALBのターゲットに別VPCにあるインスタンスを指定する
この通りに「Other private IP address」でターゲットインスタンスのIPを指定し、「Include as pending below」をクリックすればOK
サイトはピアリングを使用しているが、こちらはTGWでルーティングするのでOK
2.ALBの作成
1.で作成したターゲットグループを指定してALBを作成
AZを2つ指定するために、1つ空のAZを作成しました。当然IGWがないと注意されますが気にしない
3.TGWの作成
ASNは適当(65000)
4.続いて2つのTGWアタッチメント(TGW Attach1とTGW Attach2)の作成
– TGW Attach1
– TGW Attach2
5.TGWルートテーブルはデフォルト生成のままでOK
6.ルートテーブルのルート追加
Central pubsub RTとCentral TGW sub RTで、Spoke VPC(10.1.0.0/16)へのルートを追加
・Central pubsub RT
・Central TGW sub RT
Spoke privatesub1 RTとRTSpoke privatesub2 RTで、TGWへのデフォルトルートを追加
・Spoke privatesub1 RT
・Spoke privatesub2 RT
このままではTGWルートテーブルにデフォルトルートがなく、EC2が外に出れないため、デフォルトルートを追加
とここで本来ならターゲットグループのターゲットへのヘルスチェックが通るはずが、何をしてもUnhealthyのまま
何かヘルスチェックの設定ミスってるかもしれないと思いつつ、今回の目的は達成できるのでこれは一旦保留に
確認
- Spoke VPCのEC2から外にping OK
[ec2-user@ip-10-1-154-125 ~]$ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=49 time=3.68 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=49 time=2.49 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=49 time=2.46 ms
- 外部からALB DNS(Central-ALB-1430243037.ap-northeast-1.elb.amazonaws.com)を指定してEC2にインターネットWebアクセスもOK
所要時間
2時間
ユースケース
3) North-Southのトラフィック保護:インターネットゲートウェイの集約
4) North-South: Transit GatewayとNLB/ALBまたはリバースプロキシによるインターネットからの通信の一元化
この3)と4)の統一化をしたいケース、すなわち、
3) Transit Gatewayに接続されたVPCからのインターネットトラフィックを集約
+
4) AWSの外部から流入するトラフィックを一元化
において、IGWを2台ではなく1台にして節約したいケースで活用できる