【AWS】プライベートサブネットのインスタンスからNATゲートウェイでインターネットアクセスする手順 - とあるインフラエンジニアのテクニカルノート

今回は、プライベートサブネット内にEC2インスタンスを作成・運用した場合に、そのインスタンスからアウトバンドのインターネットアクセスをさせるケースとして、NATゲートウェイを設定する方法を紹介したいと思います。
 
下の構成図のプライベートサブネットのPrivateServerから、NATゲートウェイで外部アクセスできるようにします。PrivateServerの構築手順は本サイトで特に明記していませんが、こちらを参考に作成ください。(なお、セキュリティグループ設定時に、Privateサブネットのため、パブリックサブネットからのSSHも 許可することを忘れないようにしてください)
 
NATゲートウェイ設計

 
では、PrivateServerができているという環境から、NATゲートウェイの設定手順を紹介します。
 

1.NATゲートウェイの作成

AWSマネージドコンソールから、VPCの管理画面に行き、左メニューから「NATゲートウェイ」をクリック。
「NATゲートウェイの作成」をクリックします。

NATゲートウェイ作成1


 
「NATゲートウェイの作成」画面で、”サブネット”、”Elastic IP割り当てID"、"タグ"をそれぞれ設定します。
サブネットでは、テキストボックスを選択し、割り当てるサブネットを選びます。ここで、パブリックサブネットを選択することが重要です。プライベートサブネットからの通信なので、プライベートサブネットを選択しがちですが、NATゲートウェイはパブリックサブネットを選択する必要があります。
Elastic IP割り当てIDも、同様にテキストボックスを選択し、割り振ることができるElastic IPが自動的に出力されるので任意の内容を選択します。割り当て可能なEIPがない場合は「新しいEIPの作成」ボタンをクリックすることにより、EIPを設定することから開始します。
タグは「Name」の設定をしておいた方がよいので、設定します。
ここでは下記の内容をそれぞれ設定します。
 
  • サブネット:tancox-Publiczoneを選択
  •  Elastic IP割り当てID:選択したEIP
  • タグ
    • キー:Name
    • 値:tancox-natgw

選択・入力後、「NATゲートウェイ作成」ボタンをクリック。

NATゲートウェイ作成2

NATゲートウェイ作成3



NATゲートウェイ作成4


下図のような画面が出力されたら作成完了です。
引き続きルートテーブルを編集しますので、「ルートテーブルを編集」ボタンをクリックします。

NATゲートウェイ作成5
 



2.ルートテーブルの作成

VPCのルートテーブル画面に遷移しますので、「ルートテーブルの作成」をクリックします。

 ルートテーブル作成1


 
「ルートテーブルの作成」画面で、”名前タグ”、”VPC"、"タグ"を設定します。
ここでは下記の内容をそれぞれ設定します。
  • 名前タグ:tancox-natgw-rt
  • VPC:tancoxを選択したVPC
  • タグ
    • キー:Name
    • 値:tancox-natgw-rt

選択・入力後、「作成」ボタンをクリック。
 
ルートテーブル作成2



下図のように表示されたら作成できたので、「閉じる」ボタンをクリックします。

ルートテーブル作成3


ルートテーブルの管理画面でも、作成したものが表示されます。

ルートテーブル作成4



3.ルートの追加

作成したルートテーブルに、インターネットゲートウェイからインターネットに出るルートを追加します。
 
作成したルートテーブルを選択し、下部に出力された情報のうち「ルート」タブを選択し、「ルートの編集」ボタンをクリックします。
 
ルートの追加1



「ルートの編集」画面で「ルートの追加」をクリックします。
 
ルートの追加2

 
新たなテーブルが出力されるため、下記の内容を入力・選択します。
  • 送信先:0.0.0.0/0
  • ターゲット:tancox-natgwを選択
「ルートの保存」ボタンをクリックします。
 
ルートの追加3

ルートの追加4

 
下図のように表示されたら「閉じる」をクリックします。

ルートの追加5

 

 
 元のルートテーブルの画面に戻り、新たなルートができているか確認します。

ルートの追加の確認

 


4.サブネットへの関連付け

最後にサブネット(今回ではPrivateサブネット)にルートテーブルを関連付けます。
 
AWSマネジメントコンソール画面のVPCの管理画面からサブネットを選択します。
該当のサブネット(tancoxのPrivateサブネット)を選択し、「ルートテーブル」タブをクリックします。「ルートテーブル関連付けの編集」ボタンをクリックします。

サブネットへの関連付け1

 

「ルートテーブル関連付けの編集」画面で「ルートテーブルID」のテキストボックスを選択し、先ほど作成した「tancox-natgw-rt」を選択します。
 
サブネットへの関連付け2

 
 ルートテーブルの表が設定した内容に更新されたら「保存」ボタンをクリックします。
 
サブネットへの関連付け3


 
下図のように表示されたら正常完了のため、「閉じる」ボタンをクリックします。
 
サブネットへの関連付け4

 
サブネット情報の画面に戻るため、ルートテーブル内容が更新されたことを確認します。
 
サブネットへの関連付けの確認



これで設定作業は完了です。
 

5.確認

 設定が成功したか確認します。ここでは、プライベートゾーンに設置したEC2インスタンスから、外部へ通信ができるかを確認してみます。
 
インスタンスへsshでログインします。
ただし、PrivateServerへ直接はできないため、PublicServer経由でログインします。
PublicServerにログイン後、秘密鍵をPublicServerに設置し(ここでは、~/.ssh/xxx.pemとして設置)、下記でログインします。
 
 $ ssh -i .ssh/xxx.pem [PrivateServerのプライベートIPアドレス]
 ログイン後、外部でPingを許可しているサイトへ実行し、通信が外部に通信できているか確認します。
 
[設定前]
 $ ping ietf.org
PING ietf.org (4.31.198.44) 56(84) bytes of data.
^C
--- ietf.org ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1021ms
 
[設定後]
 $ ping ietf.org
PING ietf.org (4.31.198.44) 56(84) bytes of data.
64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=41 time=122 ms
64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=2 ttl=41 time=121 ms
64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=3 ttl=41 time=121 ms
^C
--- ietf.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 121.824/121.922/122.085/0.419 ms
 
無事外部へ通信できていることが確認できたら、完了です。
 
(参考・引用元)https://aws.amazon.com/jp/


コメント