EC2 ネットワーク設定【IP・セキュリティ・VPC デザインパターン】

パブリック/プライベート IP、Elastic IP、ENI、SG/NACL、VPC 設計ベストプラクティス(3 層アーキテクチャ)、接続トラブルシューティング。

学習順Step 19 / 91サービスVPC試験ドメイン弾力性

パブリックIPとプライベートIP

EC2インスタンスには、ネットワークインターフェース(ENI)を通じてIPアドレスが割り当てられます。

プライベートIPアドレス

  • VPC内部の通信に使用される
  • インスタンス起動時に自動で割り当てられ、インスタンスが終了するまで変わらない
  • 同じVPC内の他のインスタンスやサービスとの通信に利用

パブリックIPアドレス

  • インターネットとの通信に使用される
  • デフォルトサブネットではインスタンス起動時に自動で付与される
  • ユーザーが作成したサブネットでは、サブネット設定で「パブリックIP自動割り当て」を明示的に有効化する必要がある
  • インスタンスの停止・再起動で変更される可能性がある

Elastic IP(EIP)

インスタンスの停止・再起動でパブリックIPが変わると困る場合、Elastic IPを使用して固定のパブリックIPアドレスを割り当てます。

  • AWSアカウントに割り当てられる静的なパブリックIPv4アドレス
  • インスタンスに関連付けると、そのインスタンスに固定のパブリックIPが設定される
  • インスタンスを停止しても、EIPの関連付けは維持される
  • EIPを取得したまま未使用(インスタンスに関連付けていない)の場合、課金が発生するため注意が必要
  • EIPを別のインスタンスに付け替えることで、障害時のフェイルオーバーにも活用可能

ENI(Elastic Network Interface)

ENIは、EC2インスタンスに接続される仮想的なネットワークカードです。インスタンスには必ず1つのプライマリENIがアタッチされており、そこにIPアドレスやセキュリティグループが設定されます。

ENIに設定される情報

  • プライベートIPアドレス(1つ以上)
  • パブリックIPアドレスまたはElastic IP
  • セキュリティグループ
  • MACアドレス

ENIの活用

  • 複数ネットワークインターフェースの接続: 1つのインスタンスに複数のENIをアタッチして、管理用ネットワークとサービス用ネットワークを分離できる
  • フェイルオーバー: 障害発生時にENIを別のインスタンスに付け替えることで、IPアドレスを維持したまま切り替え可能
  • 同じAZ内のインスタンス間でENIを移動して柔軟なネットワーク構成を実現

インターネット接続のトラブルシューティング

EC2インスタンスにインターネットからアクセスできない場合、以下の3つの観点を確認します。

1. パブリックIPアドレスの確認

  • インスタンスにパブリックIPまたはElastic IPが割り当てられているか
  • デフォルトサブネット以外を使用している場合、パブリックIPの自動割り当てが有効か

2. アクセス許可設定

  • セキュリティグループのインバウンドルールで、必要なポート(SSH: 22、HTTP: 80など)が許可されているか
  • ネットワークACLで通信がブロックされていないか
  • クライアント側のファイアウォールやネットワーク設定に問題がないか

3. ネットワーク構成

  • インスタンスがパブリックサブネットに配置されているか
  • サブネットのルートテーブルにインターネットゲートウェイへのルートが存在するか
  • VPCにインターネットゲートウェイがアタッチされているか

セキュリティグループとネットワーク ACL の対比

観点 セキュリティグループ(SG) ネットワーク ACL(NACL)
適用単位 ENI/インスタンス サブネット
ステート ステートフル(戻りトラフィックは関連フローとして許可されやすい) ステートレス(インバウンドとアウトバウンドを別ルールで明示)
ルール 許可のみ(拒否は暗黙) 許可と拒否
試験の典型 SSH/HTTP のポート開放 追加の IP ブロックやレガシー設計

プライベートサブネットのインスタンスがインターネットに出るには NAT ゲートウェイ/NAT インスタンスルートテーブル 0.0.0.0/0 → NAT が必要、という長文が頻出です。

ソース/宛先チェック(NAT など)

NAT ゲートウェイやルーティング用 EC2 では ソース/宛先チェックの設定が論点になることがあります。試験では「NAT に SG は付くが、パケット転送の仕組みはルートとチェック」など、VPC のルーティングとセットで読む問題が出ます。

🏗️ VPC 3 層アーキテクチャ設計(試験頻出)

典型的な本番環境では、VPC を複数サブネット層に分けることで、セキュリティと可用性を両立します。

┌─── Public Subnet(AZ-1)
│    ├─ ALB/NLB(インターネット向けエントリーポイント)
│    └─ NAT Gateway(プライベートサブネットのアウトバウンド)
│
├─── Public Subnet(AZ-2)
│    └─ NAT Gateway(冗長性)
│
├─── Private Subnet - Application Tier(AZ-1/AZ-2)
│    ├─ EC2(アプリケーション層)
│    └─ SG: ALB からのポート許可のみ
│
└─── Private Subnet - Data Tier(AZ-1/AZ-2)
     ├─ RDS マルチ AZ
     ├─ ElastiCache
     └─ SG: APP層 SG をソースにポート許可

レイヤー別セキュリティグループ設計

レイヤー サブネット配置 インバウンドルール アウトバウンド 役割
Web 層 Public インターネット 80/443 データ層へのポート ALB/NLB
APP 層 Private Web 層 ALB SG データ層ポート + NAT へのアウトバウンド EC2 アプリ
Data 層 Private APP 層 EC2 SG 不要(通常通信開始しない) RDS/ElastiCache

インバウンド/アウトバウンドの通信フロー

インターネット → Web 層(ALB)→ APP 層(EC2)→ Data 層(RDS)

  1. ALB の SG: インターネット 0.0.0.0/0:80,443 → 許可
  2. EC2 の SG: ALB SG をソースに指定 → 許可(参照型ルール)
  3. RDS の SG: EC2 SG をソースに 3306 → 許可

プライベートサブネット → インターネット(パッチ適用など)

  • EC2 のアウトバウンド: 0.0.0.0/0:443 → NAT Gateway へ
  • ルートテーブル: 0.0.0.0/0 → nat-xxxxx

🔌 NAT Gateway vs NAT Instance(比較)

項目 NAT Gateway NAT Instance
マネージド AWS 管理 自分で EC2 を管理
高可用性 各 AZ に単独配置(冗長化推奨) EC2 ですから単一障害点
スループット 最大 100 Gbps インスタンスタイプに依存
料金 時間課金 + データ処理料 EC2 インスタンス + 転送料
NAT64/DNS64 ✓ サポート × なし
推奨用途 ほぼすべて レガシー環境のみ

試験ポイント: 「プライベートサブネットからインターネットに出たい」→ NAT Gateway が標準選択肢(ただしマルチ AZ だと複数配置で料金増)。


試験でよく出るシナリオ

シナリオ 1:パブリックサブネットの Web サーバーに届かない

診断フロー (優先順):

  1. インスタンス状態 … running か? (EC2 ステータスチェック)
  2. パブリック IP / EIP … 割り当てられているか?
  3. ルートテーブル0.0.0.0/0 → igw-xxxxx ルートがあるか?
  4. VPC に IGW … Internet Gateway がアタッチされているか?
  5. セキュリティグループ … インバウンド 80/443 が 0.0.0.0/0 で許可されているか?
  6. NACL … パブリックサブネット NACL で Ephemeral ポート(1024-65535)返信が許可されているか?

シナリオ 2:プライベート DB に踏み台から SSH で入れない

  1. 踏み台 EC2 に SSH 接続できるか?(パブリック IP、SG で 22 許可)
  2. 踏み台から DB SG のチェック … DB SG で踏み台の SG をソースに 3306 許可されているか?(参照型ルール推奨)
  3. ルートテーブル … DB があるプライベートサブネットのルートテーブルで踏み台への経路があるか?

シナリオ 3:プライベートサブネットが インターネットに接続できない(YUM update など)

  1. NAT Gateway … パブリックサブネットに NAT Gateway が存在するか?
  2. ルートテーブル … プライベートサブネットで 0.0.0.0/0 → nat-xxxxx ルートがあるか?
  3. NAT Gateway の EIP … 割り当てられているか?(EIP が必要)
  4. NAT Gateway 料金 … 時間 + GB あたりの転送料が発生することを認識しているか?(コスト最適化の論点)


参考リンク

重要ポイント

  • パブリック IP = 停止で解放、EIP = 固定だが未使用で課金
  • SG = ステートフル(インスタンス単位)、NACL = ステートレス(サブネット単位)
  • VPC 3 層 = パブリック(Web)+ プライベート(APP)+ データ層(DB/プライベート)
  • プライベートサブネット通信 = NAT Gateway or NAT Instance + ルートテーブル 0.0.0.0/0
  • 接続不可の切り分け = IGW → ルートテーブル → SG → NACL → IP

このトピックの学習を完了しますか?

完了状態はいつでも切り替えられます