目次
Amazon VPC の特徴
- AWS クラウド内に論理的に分離された仮想ネットワーク
- IP アドレスの範囲の選択、サブネットの作成、ルートテーブルやネットワークゲートウェイの設定など仮想ネットワーク環境を構築管理できます。
■ネットワーク ACL の基本
- VPC には、変更可能なデフォルトのネットワーク ACL が自動的に設定されます。
- カスタムネットワーク ACL を作成し、サブネットと関連付けることができます。
- ネットワーク ACL はステートレス(Stateless)です。(ステートレスなのでアウトバウンドも考慮する必要があります)
※ネットワーク的にステートレス(Stateless)とは、今までの状態を持たないという意味です。
※ステートフル(Steteful)とは、今までの状態を保持してコンテキストに沿って動作をするという意味です。
■ネットワーク ACL のルール
- ルールは、最も低い番号を持つルール番号から評価されます。
VPC ピアリング接続
■VPC ピアリング接続の特徴
- 接続したい VPC と直接 VPC ピアリング接続をする必要があります。
- 異なる AWS アカウントでも VPC ピアリング接続が可能です。
- 中国を除く全リージョンの VPC と VPC ピアリング接続が可能です。
- 通信の単一障害点や帯域幅のボトルネックはありません。
VPC エンドポイント
VPC エンドポイントについて以下のページを参照してください。
DNS hostnames(DNS ホスト名)オプション
- DNS hostnames(DNS ホスト名)オプションを有効化するとパブリック IP アドレスを持つインスタンスが、パブリック DNS ホスト名を取得できます。
オンプレミス環境からグローバルIPをAWSに移行することが可能
データセンターなどのオンプレ環境で利用しているグローバルIPをAWSに移行することが可能です。(グローバルIPアドレスを変更することなくそのままのグローバルIPをAWSに持ってこれます)
最近はないと思いますが、例えば非常に古いシステムだとFQDNやドメインではなくグローバルIPでサーバにアクセスをさせているようなシステムがあります。
その場合、グローバルIPが変わってしまうとクライアントからアクセスができなくなるので移行は難しかったのですが、AWSの場合はグローバルIPを地域インターネットレジストリ (RIR、Regional internet registry) に登録して、Registry Data Access Protocol(RDAP)を利用して自己署名付きの X.509証明書を発行することでグローバルIPをAWSに移行することが可能になります。
VPN 接続でオンプレと VPC 間で接続が可能
VPN 接続でデータセンターなどのオンプレと VPC 間で接続が可能になります。(DirectConnectでも可能になります。)
- オンプレ側のアンカー ← カスタマーゲートウェイ
- AWS 側のアンカー ← 仮想プライベートゲートウェイ
この構成を冗長化するためにはさらにもう1セット(カスタマーゲートウェイと仮想プライベートゲートウェイ)を構築します。
H/W 障害で通信ができなくなった場合、もう1つの VPN接続の方にフェイルオーバーします。
IPv6を利用する場合
IPv6 アドレスはグローバルに一意であるため、デフォルトではパブリックアドレスになっています。
インスタンスにインターネットにアクセスさせる場合で、インターネット上のインスタンスにインスタンスとの通信を開始させないようにする場合は、Egress-Only インターネットゲートウェイを使用できます。
NAT ゲートウェイ(NAT Gateway)
NAT Gateway は「どこへ送るかを決める装置」というより、ルートテーブルによって送られてきた通信の送信元 IP・ポートを変換し、プライベートリソースの代理として通信する装置です。NAT ゲートウェイを使用するということは、内側からインターネットに出ていくことだけを想定しており、インターネットから例えば EC2 インスタンスへアクセスするという方向は想定していません。
そもそも、なぜ NAT が必要なのか
プライベートサブネットの EC2 インスタンスが、次の IP アドレスを持っているとします。
EC2-A
10.0.2.10
この EC2 からインターネット上の Web サーバーへ通信します。
送信元:10.0.2.10
宛先:203.0.113.50
ところが、10.0.2.10はプライベート IPv4 です。プライベート IPv4 は、インターネット上では経路制御(ルーティング)されません。別の会社や別の VPC にも同じ10.0.2.10が存在できるため、インターネット側から返信先を特定できないからです。
会社A:10.0.2.10
会社B:10.0.2.10
VPC-X:10.0.2.10
VPC-Y:10.0.2.10
そこで、インターネットで利用できるパブリック IPv4 に変換します。
10.0.2.10
↓ NAT
54.250.20.30
これが NAT、つまり Network Address Translation(ネットワークアドレス変換)です。
NAT Gatewayの基本構成
典型的な構成は次のようになります。
VPC 10.0.0.0/16
┌───────────────────────────────────────┐
│ Private Subnet 10.0.2.0/24 │
│ │
│ EC2 │
│ 10.0.2.10 │
│ │ │
│ │ 0.0.0.0/0 → NAT Gateway │
└───────┼───────────────────────────────┘
│
▼
┌───────────────────────────────────────┐
│ Public Subnet 10.0.1.0/24 │
│ │
│ NAT Gateway │
│ Private IP:10.0.1.5 │
│ Elastic IP:54.250.20.30 │
│ │ │
│ │ 0.0.0.0/0 → IGW │
└───────┼───────────────────────────────┘
│
▼
Internet Gateway
│
▼
Internet
AWS のパブリック NAT Gateway は、プライベートサブネットのリソースが VPC 外へ通信できるようにしつつ、外部からそのリソースへの未要求の新規接続は受け付けません。
「NAT Gatewayをパブリックサブネットに置く」の意味
NAT Gateway をパブリックサブネットに作成しただけでは不十分です。
そのサブネットに関連付いたルートテーブルが、次のルートを持つ必要があります。
0.0.0.0/0 → Internet Gateway
また、プライベートEC2がいるサブネットのルートテーブルは、次のようにします。
0.0.0.0/0 → NAT Gateway
つまり、2段階のルーティングがあります。
Private Subnet
0.0.0.0/0 → NAT Gateway
Public Subnet
0.0.0.0/0 → Internet Gateway
VPC には暗黙のルーターがあり、各サブネットに関連付いたルートテーブルが、宛先 IP に応じてターゲットを決定します。
NATインスタンス
NATインスタンスをマルチAZ構成にして、NATインスタンスに障害が発生した際にフェイルオーバーさせることができます。ただし、スクリプトの作りこみが必要になります。
ちなみに NAT インスタンスは数にあるように NAT AMI のサポートが終了しています。その為、NAT ゲートウェイの使用もしくは Amazon Linux 2 で独自の NAT インスタンスの構築を推奨されています。
ただし、独自で構築する NAT インスタンスは運用管理が発生するので、どうしても NAT インスタンスでなければいけない要件がないなら、NAT ゲートウェイの利用を推奨されています。
インターネットゲートウェイ(Internet Gateway、IGW)
インターネットゲートウェイ(Internet Gateway、IGW)は、VPCとインターネットを接続するための出入口です。イメージとしては、VPCという閉じたネットワークに取り付ける「インターネットへの門」です。
インターネット
│
▼
インターネットゲートウェイ
│
▼
VPC
└─ サブネット
└─ EC2
ただし、インターネットゲートウェイを VPC に取り付けただけでは、EC2 はインターネット通信できません。
実際に通信するには、主に次の条件が必要です。
- VPC にインターネットゲートウェイがアタッチされている
- サブネットのルートテーブルに IGW へのルートがある
- EC2 にパブリック IPv4 アドレスまたは Elastic IP がある
- セキュリティグループとネットワーク ACL で通信が許可されている
AWS では、サブネットのルートテーブルにインターネットゲートウェイへのルートがある場合、そのサブネットをパブリックサブネットと呼びます。
パブリック IP が必要(NAT ゲートウェイ経由の場合は不要)
EC2が直接IGWを使う場合は、
EC2のプライベートIP
10.0.1.10
に対して、
パブリックIP
54.250.10.20
という対応関係が必要です。
一方、NAT ゲートウェイを使う場合は、EC2 自身にはパブリック IP がなくても、NAT ゲートウェイが持つ Elastic IP へ送信元アドレスを変換します。
Private EC2
10.0.2.10
↓
NAT Gateway
10.0.1.5 / EIP 54.250.20.30
↓
Internet
つまり、NAT ゲートウェイは、EC2 の代わりに、自分のパブリック IP を使ってインターネット通信する装置です。
インターネットゲートウェイは AWS管理のルーター兼 IPv4 NAT 機能
AWS 公式サイトには以下の記述があります。
インターネットゲートウェイは、インターネット経由でルーティング可能なトラフィックに対して、VPC ルーティングテーブル内の宛先を提供します。IPv4 を使用した通信の場合、インターネットゲートウェイはネットワークアドレス変換 (NAT) も実行します。詳細については、「IP アドレスと NAT」を参照してください。
インターネットゲートウェイは NAT も実行しています。
インターネットゲートウェイでは概念的に次の両方が関係します。
ルーティング
VPC外へのパケットをインターネット側へ中継
NAT
プライベートIPv4とパブリックIPv4を変換
インターネットゲートウェイが分かりにくい原因
インターネットゲートウェイは様々な機能が付いているので、正直言ってインターネットゲートウェイの正体は何なのかが分かりづらくなっています。インターネットゲートウェイが分かりにくいのは、一般的なネットワーク機器の用語だけでは説明しきれないからです。
インターネットゲートウェイ(IGW)は単純な「物理ルーター」ではなく、AWS が VPC 向けに用意した論理コンポーネントで、少なくとも次の役割が混ざっています。
- VPC外へのルーティング先
- インターネットとの接続点
- IPv4のパブリックIPとプライベートIPの対応付け
- AWS側で管理される高可用な分散ゲートウェイ
- EC2のENI、ルートテーブル、パブリックIPとの連携
そのため、
IGW = ルーター
だけで理解しようとすると、途中で矛盾して見えます。
一方で、
IGW = NAT装置
だけで理解しても不十分です。
最も実態に近い理解は、以下の説明になります。
IGW は、VPC とインターネットの境界に置かれる AWS 管理の論理ゲートウェイで、ルーティングと IPv4 のアドレス対応をまとめて提供するもの
Elastic IP について
Elastic IP(EIP)は、AWSアカウントに確保しておける、固定のパブリックIPv4アドレスです。
例えば、
54.250.20.30
というIPv4アドレスをAWSアカウントに確保し、EC2やPublic NAT Gatewayなどに関連付けて利用します。
Elastic IP自体は、単なるパブリックIPv4アドレスの割り当てです。
したがって、Elastic IPだけを取得しても通信は発生しません。
Elastic IPだけ
54.250.20.30
→ 通信を処理するEC2やNAT Gatewayがない
→ パケットの届け先がない
なぜ Elastic が付いているのか
Elastic IPは、AWSアカウントに確保され、関連付け先を変更できます。
例えば、最初はEC2-Aに関連付けます。
Elastic IP:54.250.20.30
↓
EC2-A
EC2-Aに障害が発生したら、EC2-Bへ付け替えられます。
Elastic IP:54.250.20.30
↓
EC2-B
外部から見えるIPアドレスは変わりません。この柔軟に付け替えられる性質が、Elastic です。


コメント