【AWS】仮想ネットワークを作成してみる(NATゲートウェイ編)

AWS

1.NATゲートウェイとは

<前回までの記事>
【AWS】仮想ネットワークを作成してみる(VPC編)

【AWS】仮想ネットワークを作成してみる(サブネット編)
【AWS】仮想ネットワークを作成してみる(インターネットゲートウェイ編)

前回記事にて、VPC~サブネット~インターネットゲートウェイの作成まで行いました。
アパート建設に例えると、土地と建物が(中の部屋割りまで)完成し、出入り口まで作成できた状態です。

これで、VPC⇔インターネット間の通信が可能となりますが、VPC内のリソースとインターネット間で通信を行うには、パブリックIPアドレスを使用して通信する必要があります。

これはつまり、パブリックIDアドレスを持つ以上は、そのリソースは外部に公開されているということです。
今回、VPC内のサブネットをパブリック/プライベートに分けて作成しましたが、このままの状態ですと、どちらもパブリックIPアドレスを元に外部と繋がってしまいます。これでは、何のためにパブリック/プライベートに分けたのかって話になってしまいますよね。

アパートに例えると、出入り口ができたことで、不特定多数が各部屋の中にまで入り込んできてしまうことと同様です。セキュリティ上、非常に好ましくない状況ですよね。

なので、外部からの接続はあくまで「Public」のリソースまでで、そこから先は内部で接続先リソースを指示する仕組みとして「NATゲートウェイ」が用意されています。
(NAT=ネットワークアドレス変換)

2.NATゲートウェイの役割

例えば、あるアパートに1号室~10号室までの10部屋があると仮定しましょう。
(現実的にはあり得ないですが)このアパートの住人同士は、各部屋に自由に行き来できるとします。
そして、このアパートには共用の郵便受けがあります。
このようなアパートに外部から手紙を出す場合、郵便屋さんは手紙の住所を見て、宛先がアパートのXX号室であることを認識できますが、XX号室の中に直接手紙を届けることはできません。郵便屋さんが入れるのは、この共用の郵便受けまでです。

しかし、このアパートの住人は部屋の場所が分かっているので、郵便受けから手紙を取り出し、宛先の部屋に持っていくことができます。
因みに、このアパートの住人同士で手紙のやり取りをする場合は、部屋番号だけを書いておけば、誰からの手紙か分かります。わざわざ住所は書く必要はありませんよね。皆、分かっていますので。
ただ、外部に手紙を出す場合は、部屋番号だけでは宛先の人はどこからの手紙か分かりませんよね。なので、アパートの住所+部屋番号のセットを差出人住所として手紙に記します。


上記の話をNATゲートウェイに置き換えると、
アパートの郵便受け:NATゲートウェイ
アパートの住所:NATゲートウェイのパブリックIPアドレス
各部屋の番号:プライベートIPアドレス
このようになります。


つまり、外部(インターネット)からの通信はPublic上のNATゲートウェイまで許され、そこから先のPrivateリソースへは、NATゲートウェイがプライベートIPアドレスで判断し、通信します。
内部リソース同士の通信はプライベートIPアドレスのみで処理でき、内部から外部への通信は、NATゲートウェイまではプライベートIPアドレスで処理可能ですが、そこから先はパブリックIPアドレスがNATゲートウェイによって付与されます。


アパートに例えることで、何となくイメージできたのではないかと思います。

3.NATゲートウェイの作成手順

① 作成するNATゲートウェイの内容

今回はインターネットとVPCの間での通信のためにNATゲートウェイを設置するため、設置するサブネットは「Public subnetとなります。よって、設置は以下の2か所必要です。

それぞれのNATゲートウェイの作成内容は、以下の通りに設定します。

接続タイプは、今回のようにインターネットに接続する場合は「パブリック」とします。
なお、インターネットではなく、他のVPC同士での接続をする場合は、「プライベート」と指定する必要があるので、注意してください。

「Elastic IP割り当てID」には、NATゲートウェイに割り当てるIPアドレス(Elastic IP)をどのようにするかを指定します。
今回は「自動設定」を選択します。

② NATゲートウェイの作成画面へ移動

まずは、NATゲートウェイの作成画面に移動しましょう。
VPCダッシュボード画面より、「NATゲートウェイ」を選択し、クリックしてください。

前画面で「NATゲートウェイ」をクリックすると、NATゲートウェイの一覧画面に移動します。
この時点では、まだひとつも作成していないので、一覧画面には何も表示されていません。

ここから各Public subnetにNATゲートウェイを一つずつ作成していくので、ここでは「NATゲートウェイを作成」をクリックします。

③ NATゲートウェイの作成

NATゲートウェイ作成画面に移動しました。
既に決めた通り、以下を入力しましょう。
名前:test-nat-gw01
サブネット:test-subnet-public01
接続タイプ:パブリック

なお、「Elastic IP割り当てID」については、「Elastic IPを割り当て」ボタンをクリックすることで、Elastic IPを自動作成後に割り当てることができます。
もし事前にElastic IPを作成していれば、それを指定することも可能ですが、今回は自動作成とします。


<MEMO>
AWSでは、リソースにパブリックIPを直接割り当てることはできません。パブリックIPを管理する「Elastic IP」という機能を使って割り当てます。
Elastic IPを作成するとAWSからパブリックIPが割り当てられるので、そのElastic IPをリソースに割り当てる事で、間接的にパブリックIPを設定することができます。

タグについては、特に変更の必要はありません。
値の入力が終わりましたら、「NATゲートウェイを作成」をクリックしましょう。
これで、「NATゲートウェイ」が作成されます。

上記画面のように、「NATゲートウェイが正常に作成されました」というメッセージが表示されれば、作成成功です。
これで、Public subnet01にNATゲートウェイが作成されましたので、同じようにPublic subnet02にも作成してみましょう。

まとめ

今回は、このように2つのNATゲートウェイを作成できればOKです。
NATゲートウェイを配置したことで、VPC⇔インターネット間の通信をする際の、IPアドレスの変換が可能となります。

インターネット側からの通信はNATゲートウェイまでとなり、同ゲートウェイがNAT(ネットワークアドレス変換)の機能でVPC内のリソースに通信を届けてくれます。

逆も然りで、内部からインターネットに接続する際は、NATゲートウェイがパブリックIPを通信に付与することで、外部のリソースがどこからのアクセスかを認識することができます。
安全性を高めるには、必要な機能となりますので、ぜひ覚えておいてください。
(今回はここまで)


お読みいただき、有難うございました!

<注意点>
今回作成したElastic IPは、NATゲートウェイを削除した後でも残ります。
残っている限り使用料が時間単位で加算されていきますので、必要なければ削除するようにしてください。

コメント

Copied title and URL