1. 概要
AWS で以下のような環境を構築する例です。
- パブリックサブネットに EC2(Public Server)
- プライベートサブネットに EC2(Private Server)
- インターネットゲートウェイ(IGW)
- NAT Gateway(パブリックサブネットに設置)
- プライベートサブネットは NAT Gateway 経由でインターネットアクセス
2. ネットワーク構成イメージ
インターネット
⇅
インターネットゲートウェイ(IGW)
│
[Public Subnet (my-subnet1)]──(EC2 Public) ※ルートテーブルでIGWに向ける
│
NAT Gateway (EIP付与) ※public subnetに作る
│
[Private Subnet (my-subnet2)]──(EC2 Private) ※ルートテーブルでNAT Gatewayに向ける
- Public Subnet:インターネットゲートウェイ経由で直接インターネットへ
- Private Subnet:NAT Gateway経由でインターネットへ
3. 手順
(1) VPC作成
- /16 などの CIDR で VPC を作成、または既存のものを使う。
- my-vpc1:10.1.0.0/16
- 作成したVPC を選択
- [アクション] → [VPC の設定を編集] をクリック
-
「DNS ホスト名を有効化」にチェック
- これによってパブリック IPv4 アドレスを持つリソースに自動でパブリック DNS 名(FQDN)が割り当てられる
- Public IP アドレスではなく ホスト名で SSH 接続できる
▼有効化したとき
ssh -i key.pem ec2-user@ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com
▼有効化しなかったとき
ssh -i key.pem ec2-user@54.95.xxx.xxx
(2) 1つ目のサブネット作成
- 作成したVPCを選択
- サブネット名:my-subnet1
- AZ:ap-northeast-1a
- IPv4 サブネット CIDRブロック:10.1.0.0/22
- 作成したサブネットを選択して、[アクション] → [サブネットの設定を編集]
パブリックIPv4アドレスの自動割り当てを有効化にチェックを入れる。これによってそのサブネットに新しく起動するEC2インスタンスには自動的にパブリックIPv4アドレスが割り当てられる。
(3) 同様に2つ目のサブネット作成
- 作成したVPCを選択
- サブネット名:my-subnet2
- AZ:ap-northeast-1a
- 10.1.4.0/22
- こちらはプライベートサブネットにするので、パブリックIPv4アドレスの自動割り当てを有効化にチェックを入れるかどうかはどちらでもよい。というか付けなくていいと思う。
(4) インターネットゲートウェイ(IGW)作成・アタッチ
- IGWを作成する。または既存のIGWを選択する。
- [アクション] → [VPCにアタッチ]
- VPC に 作成したIGW をアタッチします。
(5) NAT Gateway 作成(NAT Gatewayは課金される)
- これは既存で無いはずなので、新規作成する。
- サブネットを選択するところでは、Public Subnetにする予定のサブネットを選択する。ここでは my-subnet1
- EIP(Elastic IP)を割り当てる(これがプライベートサブネットからの出口IPになる)
(6) ルートテーブルの作成と設定
ルートテーブルはVPC1つにつき、1つのメインルートテーブルというのがあり、削除することはできない。
- ルートテーブル(my-routetable1)を作成し、VPCを選択する
- ルートを追加をクリックし、送信先 0.0.0.0/0、ターゲット にIGWを選択する。
0.0.0.0/0 → インターネットゲートウェイ - ルートテーブル(my-routetable2)を作成し、VPCを選択する
- ルートを追加をクリックし、送信先 0.0.0.0/0、ターゲット に5で作成したNAT Gatewayを選択する。
0.0.0.0/0 → NAT Gateway
(7) サブネットにルートテーブルの関連付け
- my-subnet1を選択して、[アクション] → [ルートテーブル関連付けを編集]
- my-routetable1と関連付ける。(IGWからインターネットに出る)
- my-subnet2を選択して、[アクション] → [ルートテーブル関連付けを編集]
- my-routetable2と関連付ける。(NAT gatewayからインターネットに出る)
(8) EC2インスタンス作成
-
Public Subnet (my-subnet1) にEC2(例:Amazon Linux)を作成
- セキュリティグループでSSHやHTTPなど必要なポートを許可
-
Private Subnet (my-subnet2) にEC2を作成
- 基本的に外部から直接アクセス不可
- NAT Gateway経由でyumなどのアウトバウンド通信が可能
(9) 動作確認
- Public EC2にSSH接続しインターネットアクセスを確認
- Private EC2にPublic EC2経由でSSHしてyum updateなどで外部接続できるか確認
4. 設定のポイント・注意点
-
Elastic IP
- NAT Gatewayには必ずEIPを割り当てる
- Private Subnet からのアウトバウンドはこのEIPで出ていく
-
セキュリティグループ
- Public EC2:インターネットからのSSH/HTTPを許可
- Private EC2:Public EC2や社内ネットワークからのSSHのみ許可
-
ルートテーブル
- IGW と NAT Gateway の行き先を間違えない
- 「Private Subnet → IGW」は不可。必ず「Private Subnet → NAT Gateway」にする
-
コスト
- NAT Gatewayには時間単位+転送料金がかかる
- 検証目的なら削除し忘れに注意
5. まとめ
この構成により、
- パブリックサブネット:インターネットから直接アクセス可
- プライベートサブネット:外部から直接アクセス不可・アウトバウンドのみ可能
- NAT GatewayのEIPがPrivate Subnetからの出口IPになる
- インターネットゲートウェイはPublic Subnetのみ経由
という典型的なAWSのネットワーク構成の備忘録でした。