【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ページが表示されていれば成功です。
コメント
コメントを投稿