AWSサービスのNAT gatewayとは?
AWSから提供されているNAT gatewayは、プライベートIPアドレスをパブリックIPアドレスに変更するサービスです。
NAT gatewayを利用してネットワークアドレス変換 (NAT)することで、プライベートサブネットからインターネットや他のAWSサービスに接続できます。
なお「プライベートサブネット」とは、関連付けられているルートテーブルが、インターネットゲートウェイへのルートを持っていないサブネットのことです。
NAT gateway とNATインスタンスの違い
NAT gatewayと同様に、ネットワークアドレス変換するNATデバイスとして、NATインスタンスがあります。
AWSは、可用性と帯域幅の面からNAT gatewayの使用を推奨しています。NAT gatewayはアベイラビリティーゾーン内で冗長性を持ち、帯域幅は45Gbpsまで拡張できます。
一方で、NATインスタンスはAWS利用者が冗長構成にする必要があり、帯域幅はインスタンスタイプに依存します。
3ステップでNAT gatewayを作成しよう
NAT gatewayを利用するためには、Elastic IP アドレスの割り当て、サブネットの作成、NAT gatewayの作成の3ステップが必要です。
NAT gatewayを作成する時に、NAT gatewayに関連付ける Elastic IP アドレスと、NAT gatewayを作成するサブネットを指定する必要があるため、NAT gatewayを作成する前にElastic IP アドレスとサブネットを準備します。
ステップ1:Elastic IP アドレスの割り当て
NAT gatewayに関連付けるElastic IP アドレスは、他のEC2インスタンスやネットワークインターフェイスに関連付けられていないものを指定する必要があります。
今回は、NAT gatewayに関連付けるためのElastic IP アドレスを新たに割り当てます。
Elastic IP の設定画面に移動する
AWSマネジメントコンソールのAmazon EC2 コンソールで、Elastic IP アドレスの割り当てを行います。
Amazon EC2 コンソールの左側のナビゲーションペインで[Elastic IP]をクリックします。画面左上に表示される[Allocate Elastic IP address]というボタンをクリックすると、設定画面に移ります。
Elastic IPアドレスの設定を行う
設定画面では、Amazon の IP アドレスのプールから IPv4 アドレスを割り当てる設定をします。
設定画面では、[スコープ] に[VPC]を選択します。次に、IPアドレスプールとして[Amazon’s pool of IP addresses (Amazon の IP アドレスのプール)]を選択してください。
[Allocate] をクリックしたら、Elastic IPアドレスの割り当ては完了です。
ステップ2:サブネットの作成
NAT gateway作成時は作成先のサブネットを指定する必要があるので、次にそのサブネットを準備しましょう。
今回は、NAT gatewayを作成するためのサブネットを新たに作成します。
サブネットの設定画面に移動する
AWSマネジメントコンソールの Amazon VPC コンソールで、サブネットを作成します。
Amazon VPC コンソールの左側のナビゲーションペインで [サブネット]をクリックします。画面右上に表示される[サブネットの作成]というボタンをクリックすると、設定画面に移ります。
サブネットの設定を行う
設定画面では、サブネットのネットワーク情報を設定します。
設定画面では、[VPC]に サブネットを作成する VPC を選択します。[アベイラビリティーゾーン]は [指定なし]のままにします。
[IPv4 CIDR ブロック]にはサブネットの IPv4 CIDR ブロックを指定します。今回は「10.0.1.0/24」を指定してください。
[作成]をクリックしたら、サブネットの作成は完了です。
ステップ3:NAT gatewayを作成する
これまでの作業で、NAT gatewayの作成前に準備しなければいけないリソースの作成が完了しました。
今回は、以下の手順に従って新たなNAT gatewayの作成を行いましょう。
NAT gatewayの設定画面に移動する
AWSマネジメントコンソールの Amazon VPC コンソールで、NAT gatewayを作成します。
Amazon VPC コンソールの左側のナビゲーションペインで[NAT gateway]をクリックします。画面右上に表示される[NAT gatewayの作成]というボタンをクリックすると、設定画面に移ります。
NAT gatewayの設定を行う
設定画面では、NAT gatewayを作成するサブネットと、NAT gatewayに関連付ける Elastic IP アドレスを設定します。
[Elastic IP 割り当て ID]にはステップ1で割り当てたElastic IP を、[サブネット]にはステップ2で作成したサブネットを選択します。
[Create a NAT Gateway (NAT gatewayの作成)]をクリックしたら、NAT gatewayの作成は完了です。
NAT gatewayを使ってインターネットに接続しよう

NAT gatewayを作成しただけでは、インターネットへの接続はできません。
インターネットトラフィックがプライベートサブネットからNAT gatewayに向かうように、ルーティングを設定する必要があります。
NAT gatewayに向かうルートテーブルを追加する
AWSでは、ルートテーブルの編集によってルーティングを設定します。
今回は、ステップ2で作成したサブネットに関連付けられているルートテーブルを編集する必要があります。
ルートテーブルの設定画面に移動する
AWSマネジメントコンソールのAmazon VPC コンソールで、ルートテーブルの設定を行います。
Amazon VPC コンソールの左側のナビゲーションペインで、[Route Tables]をクリックします。ルートテーブルの一覧から、ステップ2で作成したサブネットに関連付けられているルートテーブルを選択してください。
画面下部にタブが表示されるので、[ルート]タブをクリックし、[編集]ボタンをクリックすると設定画面に移ります。
ルートテーブルを追加する
設定画面では、NAT gatewayへ向かうルートを追加します。
ルートテーブルの設定画面で、[別ルートの追加]ボタンをクリックします。追加されたレコードの[送信先] に「0.0.0.0/0」と入力します。[ターゲット]には、ステップ3で作成したNAT gatewayの ID を選択します。
[Save]をクリックしたら、ルートテーブルの追加は完了です。
インターネットに接続できることを確認する
以上の設定により、プライベートサブネットからインターネット接続ができるようになりました。
インターネット接続を確認するために、ステップ2で作成したサブネットにEC2インスタンスを1つ作成してください。また、パブリックサブネットとパブリックサブネット内にもEC2インスタンスを1つ作成してください。
EC2インスタンスを使ってインターネットに接続できることを確認します。
プライベートサブネットのEC2インスタンスにログインする
ステップ3で作成したサブネットはプライベートサブネットなので、インターネットからログインできません。
パブリックサブネットのEC2インスタンスから、プライベートサブネットのEC2インスタンスにssh接続してください。
コマンドの例を示します。
ssh ec2-user@<プライベートサブネットのプライベート IPアドレス>
プライベートサブネットからpingコマンドを実行する
プライベートサブネット内のEC2インスタンスから、インターネットのウェブサイトに対してpingコマンドを実行します。
コマンドの例を示します。
ping <ウェブサイトのURL>
以下のような結果になれば、問題なく接続できています。
PING <ウェブサイトのURL> (4.31.198.44) 56(84) bytes of data.
64 bytes from mail.ietf.org (4.31.198.44): icmp_seq=1 ttl=47 time=86.0 ms
NAT gatewayを利用してインターネット接続するときの注意点3つ
NAT gatewayを作成できなかったり、NAT gatewayを作成しているのにインターネット接続ができないなど、NAT gatewayに関してよく発生する問題をまとめました。
紹介した手順通りに設定したのに、途中で失敗してしまう人は3つの注意点もチェックしてみてください。
注意点1:VPCにインターネットゲートウェイがアタッチされているか確認する
NAT gatewayからインターネットにアクセスするには、NAT gatewayが作成されているVPCにインターネットゲートウェイがアタッチされている必要があります。
NAT gatewayを作成した時に、「ネットワーク にインターネットゲートウェイがアタッチされていません」というエラーが表示される場合は、インターネットゲートウェイが作成されており、適切なVPCにアタッチされていることを確認してください。
注意点2:NAT gatewayを利用できるアベイラビリティーゾーンか確認する
AWSが提供するアベイラビリティーゾーンのなかには、NAT gatewayを作成できないアベイラビリティーゾーンがあります。
「NotAvailableInZone 」エラーが表示される場合は、他のアベイラビリティーゾーンでNAT gatewayを作成してください。
注意点3:セキュリティグループの設定が適切か確認する
EC2インスタンスからインターネットへ向けてpingコマンドを使用するには、セキュリティグループのアウトバウンドルールにより、ICMPトラフィックが許可されている必要があります。
pingコマンドが失敗する場合は、プライベートサブネット内のEC2インスタンスに関連付けられているセキュリティグループのアウトバウンドルールを確認してください。]]>