前回までの記事
【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