【AWS入門】Mash式チュートリアル【VPC編 その4~NATゲートウェイ~】

Mash式AWSチュートリアル VPC編その4 tech

こんにちは、Mashです。

本記事は私自身がAWSをお勉強で触ってみた経験を共有するシリーズ Mash式AWSチュートリアル です。

今回はAmazon VPC編の第4回となります。

前回記事の最後に前フリをいれましたが、今回はプライベートサブネットに構築したインスタンスを、セキュアにインターネットへアクセスさせたい場合の対応方法について学んでいきたいと思います。

それではいきましょう!

前回のおさらい

前回記事までのチュートリアルで構築した環境図は下記のとおりです。

前回までの構成図

インターネットゲートウェイへのルーティングを持たないサブネット = プライベートサブネットを作成し、外部との接点がないEC2を構築することができました。

課題:パッチ適用、パッケージインストールなどができない

EC2のセキュリティレベルを向上させるためにプライベートサブネットを構成したわけですが、例えばOSのセキュリティアップデートやパッケージのインストールなど、一時的にでもインターネットへ接続する必要がでてくるシーンが多くあります

このような要件がある場合、AWSでは基本的には NATゲートウェイ というサービスを利用することになります。

What is NAT Gateway?

NATゲートウェイの基本情報を整理します。

NATゲートウェイとは

繰り返しとなりますが、NATゲートウェイはプライベートサブネット上のEC2がインターネットにアクセスするためのゲートウェイコンポーネントです。

ざっくり、ポイントとなる仕様は以下の通りです。

送信方向のみ許可するゲートウェイ

NATゲートウェイは、プライベートサブネット上のインスタンスからインターネットへの送信方向通信(+戻りの通信)のみが許可されたゲートウェイです。

この仕様のため、外部からの攻撃からインスタンスを守ることが可能です。

インターネットゲートウェイ(IGW)は双方向の通信が可能コンポーネントなので、この点が大きく異なります。

自動拡張する

NATゲートウェイはAWSのマネージドサービスであり、帯域幅が 5Gbpsから45Gbps で自動拡張してくれます。

もしこれ以上の帯域幅が必要な場合は、NATゲートウェイを複数展開し負荷分散して対応する必要があります。

セキュリティグループは設定できない

NATゲートウェイにはセキュリティグループを関連付けることはできません

NATゲートウェイに対するトラフィックを管理したい場合は、ネットワークACLというセキュリティ機能を利用します。

※ネットワークACLについてはまた別途

他にも細かな点はありますが、NATゲートウェイを利用する上で最低限知っておきたい仕様は以上になります。

NATゲートウェイを配置した構成図はこのようになります。

イメージ図

NATゲートウェイを利用することによって、プライベートサブネットからインターネット方向の通信のみ通すことができるようになります。

利用料金

NATゲートウェイの料金を見積もる場合、2つの観点が必要になります。

プロビジョニング時間

NATゲートウェイを作成し、利用可能状態となっている時間で課金されます。

1時間あたり0.062USDとなります(本記事執筆時点の為替計算で1時間6.5円)。

データ転送量

NATゲートウェイを通過するデータ量で課金されます。

こちらはリージョンにより単価が異なるようで、AWS公式サイトによると東京リージョンでは1GBあたり0.062USDとなります。

無料枠は?

残念ながら、NATゲートウェイには無料枠はありません

NATゲートウェイはプロビジョニング時間による課金がありますので、必要なタイミングにだけ作成し、利用後は削除する という運用にしてもよいかもしれません。

もちろん学習目的のみなさんについても、実機検証後は必ず削除するようご注意ください!
削除し忘れていた場合、
6.5円/1h × 24h × 30d = 4680円
の請求が来てしまいますよ!

NATゲートウェイをためしてみる

それではNATゲートウェイを作成していきましょう。

前提確認として、プライベートサブネットのEC2からインターネットへ接続できないことをみておきます。

[ec2-user@ip-10-0-1-91 ~]$ curl https://chiritsumo-life.com
curl: (7) Failed to connect to chiritsumo-life.com port 443: Connection timed out

想定通りcurlの応答がありませんね。

NATゲートウェイ作成

AWS管理コンソール VPC画面へアクセスし、左側メニュー [NATゲートウェイ] を選択します。

画面右の [NATゲートウェイを作成] ボタンをクリックします。

NATゲートウェイを作成

NATゲートウェイ作成画面 で必要なパラメータを定義していきます。

Nameはお好みでつけましょう。

サブネットは、VPC内のパブリックサブネットを選択します。

そして、NATゲートウェイはElastic IP(EIP)が必要になります。おそらく作成したことがないかと思いますので、[Elastic IPの割り当て] ボタンをクリックして進めます。

NATゲートウェイ作成
NATゲートウェイ作成成功

ルーティング設定

NATゲートウェイが作成できましたので、プライベートサブネットのルーティングを変更していきます。

AWSコンソール左側メニュー [ルートテーブル] から前回作成したプライベートサブネット用のルートテーブルを選択し、画面下部 [ルート] タブを確認しましょう。

VPC内のルーティング(local)しかありませんね。

ルート確認

[ルートの編集] ボタンをクリックします。

VPC内アドレス以外のすべて通信をNATゲートウェイに向けるよう設定します。

設定を投入したら [ルートの保存] をクリックします。

ルート編集
ルート編集成功

NATゲートウェイの必要な設定は以上です。

再掲になりますが、このような構成になりました。

構成図

動作確認

それではNATゲートウェイ作成前に試したcurlコマンドを再度実行してみます。

[ec2-user@ip-10-0-1-91 ~]$ curl https://chiritsumo-life.com
<!doctype html>
<html lang="ja">

<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"/>

# 以下略

HTMLが返ってきましたね。

インターネットへ接続できています!

NATゲートウェイとEIPの削除

NATゲートウェイの動作が確認できましたので、課金対象となる不要なリソースは削除します。

NATゲートウェイの削除

まずはNATゲートウェイの削除です。

AWS管理コンソールのVPCページの NATゲートウェイ へアクセスします。

削除対象のNATゲートウェイを選択した状態で、画面右上 アクション から [NATゲートウェイを削除] をクリックします。

NATゲートウェイ削除

確認画面が表示されます。

「削除」と入力した上で [削除] ボタンをクリックします。

EIP削除確認
NATゲートウェイ削除成功

これでNATゲートウェイの削除は完了です。

EIPの削除

もうひとつ。

NATゲートウェイ作成時につくったEIPも課金対象となってしまいますのでリリースします。

※EIPについてはまた別途

AWS管理コンソールはVPCページにアクセスしている状態だと思いますので、左側メニュー [Elastic IP] をクリック。

削除対象のEIPを選択した状態で、 アクション から [Elastic IPアドレスの解放] をクリックします。

EIP解放

確認画面が表示されます。

[解放] ボタンをクリックします。

EIP解放確認
EIPアドレス解放

EIPのリリースも完了です。

※EC2の停止もお忘れなく!

まとめ

NATゲートウェイを構成することで、プライベートサブネット上のインスタンスからも、セキュアにインターネットアクセスすることが可能になります。

作成しただけで課金されてしまいますので、AWS学習目的の場合は今後利用することがないかと思いますが、実利用では重要なコンポーネントです。

ぜひ今回の手順は頭の片隅にインプットしておきましょう!

今回は以上です。

それじゃあまたね。

タイトルとURLをコピーしました