AWS VPC周りの設定を自分でやってみる (Part.2)

はじめに

本記事はこちらの続きとなります。前回の記事ではVPC/サブネット/インターネットゲートウェイを一から作成し、パブリックサブネット上のEC2を起動することを確認しました。

本記事ではプライベートサブネット上でEC2を起動し、インターネットとの通信が行えるかどうかの確認を行います。

①パブリックサブネット

  • サブネット名:my-new-gear-1a-public
  • IPv4 : 10.0.10.0/24
  • AZ : ap-northeast-1a

②プライベートサブネット

  • サブネット名:my-new-gear-1c-public
  • IPv4 : 10.0.20.0/24
  • AZ : ap-northeast-1c

実施方法

プライベートサブネット用セキュリティグループを作成する

プライベートサブネット用のセキュリティグループを作成します。

タイプは「全てのICMP -IPv4」と「SSH」とし、ソースにはIPアドレスではなく、パブリックサブネットに設定されたセキュリティグループを選択しましょう。これを行うことでパブリックサブネットのEC2からのみのICMP(Ping)とSSHを受け付けるようにします。

プライベートサブネットでEC2を起動する

EC2のメニューからEC2インスタンスを起動してください。起動する際、VPCは今回作成したもの、サブネットはプライベートサブネットを選択することを忘れないでください。

こうしてプライベートサブネットには当然ながらパブリックIPが付与されませんので、自分のPCからSSHで繋ぐことは出来ません。

パブリックサブネットのEC2からアクセス

プライベートサブネット上でEC2が起動したら、次はパブリックサブネットのEC2から今回起動したプライベートサブネットのEC2にアクセスを行います。

問題なくpingが通ることは確認出来ました。

SSHで接続を行うためにはプライベートサブネットの作成したEC2の秘密鍵をパブリックサブネットのEC2に保存する必要があります。AWS上のEC2にデータを送る際にはWinSCPのようなツールを利用するのが簡単です。

秘密鍵をパブリックサブネットのEC2に保存した後、プライベートサブネットのEC2にSSHアクセスを行うと正常にアクセスを行えることが確認できます。

しかし、ここでプライベートサブネットからインターネットの通信が行えていないことがわかります。ping 8.8.8.8はGoogleのDNSサーバなので、プライベートサブネットのEC2からインターネット接続が行えていれば正常な応答が返ってくるはずです。

ここで既にプライベートサブネットに設置しているEC2に、パブリックサブネットのEC2を経由してアクセスが出来ているにも関わらず…ということで不思議に感じられる方もいるかもしれません。しかし、まだプライベートサブネットにはインターネット接続に必要なパブリックIPを取得する手段がありません。

ここでNATゲートウェイが必要になります。

NATゲートウェイの作成

NATゲートウェイの作成はVPCのメニューから行います。早速作っていきましょう。

名前は任意ですが、サブネットはインターネットGWの接続されたパブリックサブネットを選択して下さい。

また、NATゲートウェイにはElastic IPアドレスが必要になりますので手持ちのものがなければこのメニューから作成を行って下さい。設定が終わったら画面下にある「NATゲートウェイの作成」をクリックすれば完了です。

NATゲートウェイはパブリックサブネットに作成されています。ではプライベートサブネットに設置されているEC2がアクセスするには…

ということで、次はプライベートサブネットのルートテーブルを編集します。

ルートテーブルの編集

VPCのメニューからプライベートサブネット用のルートテーブルを参照しましょう。現状、特に設定は行っていませんので以下のようになっているかと思います。

現状はVPC内の通信を解決するためだけの設定が行われていましたが、ここにVPC内の通信以外はNATゲートウェイに振り分ける設定を追加します。以下を参考にして下さい。

以下のような設定になるかと思います。

これで設定は完了です。改めてプラベートサブネットのEC2にアクセスしてみましょう。

プライベートサブネットのEC2からインターネットアクセス

再度、ping 8.8.8.8を試したみたところ、無事インターネットの接続が行えていることが確認出来ました。

プライベートサブネットなのにこれは大丈夫なの?と気にされる方がいるかもしれませんが、大丈夫です。プライベートサブネットのEC2はあくまでプライベートIPしか持っておりませんので、外部から直接アクセスされる心配はありません。しかし、このプライベートサブネットのEC2は例えば “yum update" を行いたいといった、インターネット通信を行いたい場合に、NATゲートウェイを通じて通信を行います。

最後に

本記事では2回にわけて以下のような構成のネットワークをAWSクラウド上に構築する方法について説明しました。非常にベーシックな内容ですが、インターネットGWの設置、ルートテーブルの設定といった細かい作業は実施されたことのない方も多いのではと思います。

この記事が皆様のAWSを理解を行う上での一助になればと思います。一通りの動作確認を行った後、必ずEC2の停止、NATゲートウェイの削除、不要なElastic IPアドレスを削除を行いましょう。

ではまた。