寺裏庵

こたつ(そろそろアウト)と自作スタンディングデスクもしくは普通のデスクと腰が痛くならない椅子で仕事する在宅Terralienです

【AWS】プライベートサブネットからNATゲートウェイ経由してインターネットへの接続を確認する(後半)

EC2インスタンスを作成

これまではVPCの画面で操作を行っていましたが、サービス🔍のところでEC2と検索するなどし、EC2の画面に移動します。

 

まずはパブリックサブネットにWebサーバーに見立てたEC2を作成。「インスタンスを起動」します。ここから課金要素が出てくるので若干緊張感が漂います。

terralien.hatenablog.com

こちらの続きとなります。

 

Amazonマシンイメージ(AMI)にてインストールするOSを指定します。今は特に何も考えず1番上の「Amazon Linux 2 AMI (HVM) - Kernel 5.10, SSD Volume Type 」を「選択」します。(Amazon Linux2は無料)

 

次にインスタンスタイプの選択をします。何も考えずに「t2.micro」を指定しましょう。無料枠で使えます。「次のステップ:インスタンスの詳細の設定」ボタンで次に進みます。

 

gyazo.com

 

インスタンスの詳細設定では、ネットワークは作成したVPCであるrare-vpcを選択し、サブネットはpublic-rare-subnetのものを選択します。(画像はprivateとなってますが)

 

自動割当パブリックIPを「有効」にします。これがないとインターネット接続ができないのでとりあえず有効にしましょう。流動的なグローバルIPアドレスが付与されます。

 

それ以外は全部デフォルトのまま、「次のステップ:ストレージの追加」に進みます。進みますがストレージは特に変更せず「次のステップ:タグの追加」に進んでください。

 

gyazo.com

 

タグの追加をしておきます。キーをName、をrare-web-serverとしておきます。
次のステップ:セキュリティグループの設定」に進みます。

 

セキュリティグループ名にLaunch-wizard~と入力されていますが、管理しやすくするため名前をつけときます。
新しいセキュリティグループを作成する」にチェックを入れセキュリティグループ名にrare-web-secgroupと入力し、説明はどうでもいいのですが同じくrare-web-secgroupとしておきます。

 

次にタイプ等の設定をしようと思いましたが、必要なSSH接続のものがありますのでそのまま「確認と作成」します。

 

ステップ7:インスタンス作成の確認」画面でインスタンスのセキュリティを強化してくださいと脅されますがお約束文言ですのでひるまずに「起動」します。

 

gyazo.com

「既存のキーペアを選択するか、新しいキーペアを作成します。」みたいな画面が出ますので新しいキーペアの作成をします。キーペアのタイプはそのままRSAで、キーペア名をrare-keyとでもしておきます。「キーペアのダウンロード」をし、「インスタンスの作成」です。

作成したキーを無く差内容にしましょう。

 

パブリックサブネットに設置されたEC2に対する接続テスト

パブリックIPv4アドレスが振り分けられているはずなので、それに対してSSH接続を試みます。ここは詳しいサイトがありますのでそちらをご参照ください。

dev.classmethod.jp

 

プライベートサブネット用EC2も同様に作成

いくつか異なる部分があります。
サブネットはprivate-rare-subnetを選択、プライベートサブネットなので自動割当パブリックIPは不要です。デフォルトのまま「サブネット設定を使用(無効)」とします。

 

ステップ5:タグの追加」画面でキーをName、をrare-db-serverとしておきます。
直接ネットに繋がってないDBサーバーをイメージしています。

 

ステップ6:セキュリティグループの設定
ここでは実際のDBサーバーの運用を考え新しいセキュリティグループを作成するを選択しセキュリティグループ名:rare-db-secgroupとし、説明も同じにします。

タイプ以下はデフォルトSSHそのままで「起動」ボタンを押します。

 

先程と同じく「既存のキーペアを選択するか、新しいキーペアを作成します。」画面が出ますので先ほど作成しダウンロードしたrare-key.pemを選択し、□対応するプライベートキー~にチェックを入れ「インスタンスの作成」をします。

 

VPC内疎通確認

現状パブリックサブネットにあるrare-db-serverにはプライベートIPしか無いためパブリックサブネットのrare-web-serverから疎通確認を行います。

 

準備

上の方でパブリックサブネットのEC2インスタンス接続テストを行ったと思いますが、そちらのターミナル画面まで進めてください。

 

1.証明書となる.pemファイルを作ります。nanoエディタが使えるはずなので

nano rare-key.pem

ファイル名は任意です。指定した名前の空ファイルがnanoエディタで開かれます。

 

2.EC2インスタンスを作成した際に作ったキーファイルの中身をコピーしてきます。(先にコピーしておけばよかった…)

 

nanoエディタの画面に貼り付けます。(windowsは右クリックなど)

名前をそのままに保存します。(ctrl+x、y、Enterの順で入力すればおk)

 

EC2インスタンス間の疎通確認

プライベートサブネットで作った方のEC2インスタンスrare-db-serverの詳細を開きます。プライベートIPv4アドレスをコピーあるいはメモします。

 

次のssh接続コマンドを入力。

 

ssh ec2-user@xxx.xxx.xxx.xxx -i rare-key.pem

 

xxx~ はコピーもしくはメモったIPアドレス
.pemファイルは自分で作ったものを指定してください。

 

なんか are you sure you want to continue conneccting (yes/no)? と聞かれるのでyesします。

これでパブリックサブネット側からプライベートサブネット側への疎通確認が取れました。あと一歩で課題解決です。

 

一応プライベートサブネットからインターネット接続への疎通を確認してみましょう。

 

ping google.com

 

繋がるはずはないのですが……。

gyazo.com

 

繋がりませんね。ctrl+cで抜けておきましょう。

 

プライベートサブネットからインターネット接続

この課題の目的です。

プライベートサブネットにはインターネットから接続してほしくないわけですが、設置されているDBは様々な理由からインターネットにアクセスする必要があります。
どうすれば解決できますか?という問題なんだと思います。


これを達成するにはNATゲートウェイなる仕組みが必要となります。

再びVPCの画面に戻ってください。

NATゲートウェイをつくる

NATゲートウェイはパブリックアドレスに設置するというお約束があるので設置します。結構お高いので課題が終わったら早々に削除しましょう。

 

NATゲートウェイを作成」ボタンを押します。名前をrare-NATGとし、サブネットをパブリックサブネットのものを選択、接続タイプはパブリックのままでElasticIP割り当ては新規作成します。「Elastic IP の割り当て」ボタンでサクッと作成されます。

gyazo.com

 

できました。プライベートサブネットのルートテーブルでルート編集をします。

ルートテーブルでチェックを入れたあと「ルート」タブで「ルートを編集

gyazo.com

 

送信先に0.0.0.0/0、ターゲットをNATゲートウェイとすると先程作成したrare-NATGを選択できます。「変更を保存」ボタンで完了です。

 

ElasticIPの注意

NATゲートウェイに紐付けている間は無料になるのでですが、解除すると有料なので忘れず削除しましょう。NATゲートウェイがそもそも高いのでサービスということか。

 

疎通の確認

TeraTermで接続を確認します。プライベートサブネットからPingが通れば成功です。

gyazo.com

できました!課題達成です。
実用性無い感じですが目的は達成したのでヨシ!

 

【重要】従量課金されるサービスの削除

AWSを使うからにはBillingで課金状態をチェックしましょう。

AWSは従量課金サービスなので秒単位、時間単位様々な形での課金が始まっています。無料枠があるとはいえ、今回作ったEC2インスタンスやElasticIPアドレスは忘れず削除しましょう。

 

ElasticIPアドレスはNATゲートウェイにアタッチしている間は無料ですが外している状態だと有料です。(大事なことなので2回書きました

削除手順は、まずNATゲートウェイを削除します。「アクション」からNATゲートウェイを削除。Delitedになれば次の作業に移れます。

 

次に削除完了したらElastic IPページに移動し、該当のアドレスを「アクション」から

Elastic IPアドレスの解放します。

 

基本的に作った順序と逆に削除していけばできるはずです。EC2インスタンス終了しておきましょう。

 

以上、クラウドラクティショナー程度の知識でハンズオンを試みたので間違いももしかしたらあるかもしれません。色々ご指摘いただけるとありがたいです。