【AWS VPC入門】4.NatGateway/Bastion
【AWS VPC入門】4.NatGateway/Bastion:
【AWS VPC入門】0.概要
【AWS VPC入門】1.VPC/Subnet
【AWS VPC入門】2.EC2/Internet Gateway/Route Table
【AWS VPC入門】3.ELB
PrivateサブネットのようにDMZに配置されていないインスタンスに対してメンテナンス時や調査時の接続を目的としたサーバー。
Privateサブネットに配置されたIPアドレスを持たないインスタンスからインターネットへアクセスする際にネットワークアドレス変換を行うためのゲートウェイ。
今までは動作確認のためPrivateサブネットにインターネットゲートウェイをアタッチしていましたが、「概要編」で紹介した全体図にするため、それぞれのサブネットのルートテーブルを変更します。
詳細な手順は 【AWS VPC入門】2.EC2/Internet Gateway/Route Table で実施した内容と同じです。
作成した
Privateサブネットからはインターネットへ直接アクセスすることを禁止するため、
続いてパブリックサブネットにBastionサーバーを配置します。
インスタンスの作成から
サブネットに
セキュリティグループを以下の内容で設定します。
こちらの
前準備としてBastionサーバーに
続いて
SSHのインバウンドを
以下のコマンドでSSHの接続確認を行います。
ここまでで
ですが本章の最初で
この状態を解決するためNATゲートウェイを設置します。
VPCのダッシュボードから
配置先のサブネットは
EIPの割当が必須のため、新しいEIPを発行して割り当てます。
デフォルトゲートウェイを先程作成したNATゲートウェイにします。
ここまでで、SampleWeb内からNAT経由のインターネットへの接続が可能になりました。
現在の状態では、
そのため現在使用しているELBを削除し新たに作成します。
前回の記事と同じ手順ですすめ、「サブネットの選択」を
続いて
HTTPのインバウンドを
動作確認のため SampleELB に設定されたDNS名を取得し、ブラウザからアクセスしてみます。
前回と同様に
TODO
前回までの記事
【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ゲートウェイの配置
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ページが表示されていれば成功です。
コメント
コメントを投稿