- 公開日
- 最終更新日
【NATゲートウェイ】踏み台サーバーとNATゲートウェイ構築してみた
この記事を共有する
目次
はじめに
皆さんこんにちは!パーソル&サーバーワークスの榎本です。
最近日本酒の勉強をはじめまして、ノリで日本酒検定を取得しようと考えております!
体系的に学ぶことに加えて、実際にもいろんな日本酒を飲むことで、人に話せるくらい詳しくなりたいと思います!
さて、前回の記事ではAmazon VPC(以下、VPC)内にAmazon EC2(以下、EC2)を構築し、セッションマネージャーで接続する手順をお伝えしました。
今回はより実践的なセキュリティ構成として、踏み台サーバーを経由したプロテクテッドサブネット内のEC2への接続と、NATゲートウェイを使ったアウトバウンド通信について学んでいきたいと思います。
なお、踏み台サーバーからプロテクテッドサブネット内のEC2接続時にTeraTermを利用するので、あらかじめインストールいただけますと幸いです。
今回はインストールされている前提で手順を記載させていただきます。
本記事の目的
- 踏み台サーバーを構築し、プロテクテッドサブネット内のEC2に安全に接続できるようになること
- NATゲートウェイを構築し、プロテクテッドサブネットからインターネットへの通信を可能にすること
前提
- AWSマネジメントコンソールへのログインができること
- 東京リージョンを利用
- VPC構築済み(VPCはこちらの記事の構成)
- EC2構築済み(EC2はこちらの記事の構成)
- 利用端末にTeraTermインストール済み
構築手順
踏み台サーバー作成
- AWSマネジメントコンソールにログインして、右上のリージョン選択箇所にて[東京]リージョンを選択する

- 左上の検索バーにて[EC2]を検索して開く

- [インスタンスを起動]をクリックする

- 以下設定を入力する
- ・名前:<名前>-yyyymmdd-ec2-bastion(以下例の場合、enomoto-20260126-ec2-bastion)
- ・アプリケーションおよびOSイメージ:Amazon Linux 2023 AMI
- ・アーキテクチャ:64ビット (x86)

- ・インスタンスタイプ:t3.micro
- ・キーペア:<既存のキーペアを選択>(以下例の場合、enomoto-20260107-ec2-keypair)

- [ネットワーク設定]で[編集]をクリックし、以下設定を入力する
- ・VPC:<作成したVPCのIDを選択>(以下例の場合、enomoto-20251210-vpcのIDを選択)
- ・サブネット:<名前>-yyyymmdd-public-subnet-1a(以下例の場合、enomoto-20251210-public-subnet-1a)
- ・パブリックIPの自動割り当て:有効化
- ・ファイアウォール(セキュリティグループ):セキュリティグループを作成
- ・セキュリティグループ名:<名前>-yyyymmdd-ec2-bastion-sg(以下例の場合、enomoto-20260126-ec2-bastion-sg)
- ・説明:<名前>-yyyymmdd-ec2-bastion-sg(以下例の場合、enomoto-20260126-ec2-bastion-sg)

- [高度な詳細]をクリックして展開し、以下設定を入力し、[インスタンスを起動]をクリックする
- ・IAMインスタンスプロフィール:<作成したIAMロール>(以下例の場合、enomoto-20260107-iam-role-ec2ssh)

- ・IAMインスタンスプロフィール:<作成したIAMロール>(以下例の場合、enomoto-20260107-iam-role-ec2ssh)
- 「成功」と表示されていることを確認し、[すべてのインスタンスを表示]をクリックする

Elastic IPアドレス割り振り&関連付け(踏み台サーバー用)
- 左のナビゲーションペインから[Elastic IP]を選択し、[Elastic IPアドレスを割り振る]をクリックする

- [新しいタグを追加]をクリックし、以下設定を入力して[割り振る]をクリックする
- ・キー:Name
- ・値:<名前>-yyyymmdd-ec2-bastion-eip(以下例の場合、enomoto-20260126-ec2-bastion-eip)

- 「Elastic IPアドレスが正常に割り振られました。」と表示されたことを確認し、[このElastic IPアドレスを関連付ける]をクリックする

- 以下設定を入力し、[関連付ける]をクリックする ※Elastic IPアドレスは接続時に利用するのでメモしておいてください
- ・インスタンス:<作成した踏み台サーバーのIDを選択>(以下例の場合、enomoto-20260126-ec2-bastionのIDを選択)
- ・プライベートIPアドレス:<作成した踏み台サーバーのプライベートIPアドレスを選択>

AMI&プロテクテッドサブネット用EC2作成
- 既存のEC2インスタンスからAMIを作成する。左のナビゲーションペインから[インスタンス]を選択し、既存のEC2インスタンスにチェックを入れて[アクション]-[イメージとテンプレート]-[イメージを作成]をクリックする

- 以下設定を入力し、[イメージを作成]をクリックする
- ・イメージ名:<名前>-yyyymmdd-ami(以下例の場合、enomoto-20260126-ami)
- ・イメージの説明:<名前>-yyyymmdd-ami(以下例の場合、enomoto-20260126-ami)
- ・インスタンスを再起動:※チェックを外す
- ・タグ:イメージとスナップショットに対し一緒にタグを付けます

- 作成したAMIを選択し、[AMIからインスタンスを起動]をクリックする

- 以下設定を入力する
- ・名前:<名前>-yyyymmdd-ec2-protected-1a(以下例の場合、enomoto-20260126-ec2-protected-1a)

- ・インスタンスタイプ:t3.micro
- ・キーペア:<既存のキーペアを選択>(以下例の場合、enomoto-20260107-ec2-keypair)

- ・名前:<名前>-yyyymmdd-ec2-protected-1a(以下例の場合、enomoto-20260126-ec2-protected-1a)
- [ネットワーク設定]で[編集]をクリックし、以下設定を入力する
- ・VPC:<作成したVPCのIDを選択>(以下例の場合、enomoto-20251210-vpcのIDを選択)
- ・サブネット:<名前>-yyyymmdd-protected-subnet-1a(以下例の場合、enomoto-20251210-protected-subnet-1a)
- ・パブリックIPの自動割り当て:無効化
- ・ファイアウォール(セキュリティグループ):セキュリティグループを作成
- ・セキュリティグループ名:<名前>-yyyymmdd-ec2-protected-sg(以下例の場合、enomoto-20260126-ec2-protected-sg)
- ・説明:<名前>-yyyymmdd-ec2-protected-sg(以下例の場合、enomoto-20260126-ec2-protected-sg)
- ・インバウンドセキュリティグループのルール
- ・タイプ:ssh
- ・ソースタイプ:カスタム
- ・ソース:<名前>-yyyymmdd-ec2-bastion-sg(以下例の場合、enomoto-20260126-ec2-bastion-sg)

- [高度な詳細]をクリックして展開し、以下設定を入力し、[インスタンスを起動]をクリックする
- ・IAMインスタンスプロフィール:<作成したIAMロール>(以下例の場合、enomoto-20260107-iam-role-ec2ssh)

- ・IAMインスタンスプロフィール:<作成したIAMロール>(以下例の場合、enomoto-20260107-iam-role-ec2ssh)
- 「成功」と表示されていることを確認し、[すべてのインスタンスを表示]をクリックする

- 後続手順にて利用するため、起動したインスタンスのプライベートIPアドレスをメモしておく

NATゲートウェイ作成
- 左上の検索バーにて[VPC]を検索して開く

- 左のナビゲーションペインから[NATゲートウェイ]を選択し、[NATゲートウェイを作成]をクリックする

- 以下設定を入力し、[NATゲートウェイを作成]をクリックする
- ・名前:<名前>-yyyymmdd-nat-gateway(以下例の場合、enomoto-20260126-nat-gateway)
- ・サブネット:<名前>-yyyymmdd-public-subnet-1a(以下例の場合、enomoto-20251210-public-subnet-1a)
- ・接続タイプ:パブリック
- ・Elastic IPの割り当て方法:自動

ルートテーブル設定変更
- 左のナビゲーションペインから[ルートテーブル]を選択し、プロテクテッドサブネット用のルートテーブルを選択する
- [ルート]タブを選択し、[ルートを編集]をクリックする

- [ルートを追加]をクリックし、以下設定を入力して[変更を保存]をクリックする
- ・送信先:0.0.0.0/0
- ・ターゲット:NATゲートウェイ/<作成したNATゲートウェイのIDを選択>

踏み台サーバー経由での接続確認
- TeraTermを起動して以下入力し、[OK]をクリックする
- ・ホスト:踏み台サーバーのパブリックIPアドレス

- ・ホスト:踏み台サーバーのパブリックIPアドレス
- [続行]をクリックする

- 以下入力し、[OK]をクリックする
- ・ユーザー名:ec2-user
- ・認証方式:RSA/DSA/ECDSA/ED25519鍵を使う
- ・秘密鍵:

- [設定]タブを選択し、[SSH転送]をクリックする

- [追加]をクリックする

- 以下入力し、[OK]をクリックする
- ・ローカルのポート:10022
- ・リモート側ホスト:<プロテクテッドサブネットのプライベートIPアドレス>
- ・ポート:22

- 以下入力し、[OK]をクリックする

- 新規でTeraTermを起動して以下入力し、[OK]をクリックする
- ・ホスト:127.0.0.1
- ・TCPポート:10022

- [続行]をクリックする

- 以下入力し、[OK]をクリックする
- ・ユーザー名:ec2-user
- ・認証方式:RSA/DSA/ECDSA/ED25519鍵を使う
- ・秘密鍵:EC2構築時に設定したキーペアの秘密鍵を選択する

- 接続できていることを確認する

まとめ
今回の記事にて踏み台サーバーとNATゲートウェイを構築し、セキュアなネットワーク構成を実現することができました!
踏み台サーバーを使用することで、プロテクテッドサブネット内のリソースへの安全なアクセスが可能になり、NATゲートウェイによってプロテクテッドサブネットからのアウトバウンド通信も実現できました。
今回使用したリソースを使わない場合、EC2インスタンスは停止、NATゲートウェイは削除を忘れないようにお願いいたします!
特にNATゲートウェイはEC2に比べると高価なので、コスト最適化のためにも上記お気をつけください!
次回はRDSの構築についての記事を記載しますので、引き続きお付き合いいただけますと幸いです!
この記事は私が書きました
榎本 将希
記事一覧2024,2025 Japan All AWS Certifications Engineers サッカー観戦とサウナが好きです! 機械学習とAIを勉強中です!