前回までの記事
【AWS VPC入門】0.概要
【AWS VPC入門】1.VPC/Subnet
【AWS VPC入門】2.EC2/Internet Gateway/Route Table
【AWS VPC入門】3.ELB
今回のゴール
-
SampleWebへのSSH接続をするためのSampleBastionをPublicサブネットに設置する。 - Privateサブネット内のインスタンスがインターネットと通信するためのNATゲートウェイを配置する。
Bastion(踏み台)サーバー
PrivateサブネットのようにDMZに配置されていないインスタンスに対してメンテナンス時や調査時の接続を目的としたサーバー。
NatGateway
Privateサブネットに配置されたIPアドレスを持たないインスタンスからインターネットへアクセスする際にネットワークアドレス変換を行うためのゲートウェイ。
サブネットのルートテーブル変更
今までは動作確認のためPrivateサブネットにインターネットゲートウェイをアタッチしていましたが、「概要編」で紹介した全体図にするため、それぞれのサブネットのルートテーブルを変更します。
SamplePublicSubnetにはルートテーブルが存在しないため、VPCのダッシュボードから 「ルートテーブルの新規作成」を選択肢、SamplePublicRouteTableを作成します。
詳細な手順は 【AWS VPC入門】2.EC2/Internet Gateway/Route Table で実施した内容と同じです。

作成したSamplePublicRouteTableのルートを編集し、デフォルトゲートウェイをインターネットゲートウェイに設定します。

SamplePublicRouteTableをSamplePublicSubnetにアタッチします。

Privateサブネットからはインターネットへ直接アクセスすることを禁止するため、SamplePrivateRouteTableのルートからインターネットゲートウェイの設定を削除します。

Bastionサーバーの設置
続いてパブリックサブネットにBastionサーバーを配置します。
インスタンスの作成からSampleWebと同じスペックのSampleBastionを作成します。

サブネットにSamplePublicSubnetを選択し、PublicIPの自動割当 を有効にしておきます。

こちらのSampleWebと同様に、後ほどSSH接続を行うためpemファイルのDLが必要です。(SampleVPCBastion.pem)
BastionサーバーからWebサーバーへのSSH
前準備としてBastionサーバーにSampleWeb用のpemファイルを配置します。
$ chmod 600 SampleVPCBastion.pem
$ scp -i SampleVPCBastion.pem ./SampleVPCWeb.pem ec2-user@BastionサーバーのグローバルIP:~/.ssh/
続いてSampleWebのセキュリティグループを変更します。
SSHのインバウンドを任意のIPからBastionサーバーのセキュリティグループ(SampleBastionSG)に変更します。

以下のコマンドでSSHの接続確認を行います。
# ローカル環境からBastionサーバーへの接続
$ cd .ssh/
$ ssh -i "SampleVPCBastion.pem" ec2-user@BastionサーバーのグローバルIP
# BastionサーバーからSampleWebへの接続
$ cd .ssh/
$ ssh -i "SampleVPCWeb.pem" ec2-user@SampleWebサーバーのローカルIP
ここまでで SampleBastion->SampleWeb のSSH接続が可能になりました。
ですが本章の最初でSamplePrivateSubnetのルートテーブルからインターネットゲートウェイへのルートを削除したため、SampleWebからインターネットへの接続ができない状態になっています。
# SampleWeb内からインターネットへの接続は不可
$ sudo yum update
タイムアウトエラー
この状態を解決するためNATゲートウェイを設置します。
NATゲートウェイの配置
VPCのダッシュボードからNATゲートウェイを選択し、NATゲートウェイの作成を行います。
配置先のサブネットはSamplePublicSubnetを選択します。
EIPの割当が必須のため、新しいEIPを発行して割り当てます。

SamplePrivateSubnetルートテーブルを再度編集します。

デフォルトゲートウェイを先程作成したNATゲートウェイにします。

ここまでで、SampleWeb内からNAT経由のインターネットへの接続が可能になりました。
# SampleWeb内からインターネットへの接続が可能になるyum updateが成功するはず。
$ sudo yum update
....
LBの再設定
現在の状態では、SamplePrivateSubnetのルートテーブルからインターネットゲートウェイを削除したため、ロードバランサーを経由したSampleWebへのアクセスが行えません。
そのため現在使用しているELBを削除し新たに作成します。
前回の記事と同じ手順ですすめ、「サブネットの選択」をSamplePublicSubnetにします。

続いてSampleWebのセキュリティグループを変更します。
HTTPのインバウンドをELBのIPアドレスからELBのセキュリティグループ(SampleElbSG)に変更します。
動作確認のため SampleELB に設定されたDNS名を取得し、ブラウザからアクセスしてみます。
前回と同様に Welcome to nginx on Amazon Linux! と書かれたNGINXのWelcomeページが表示されていれば成功です。
次章
TODO
