9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【AWS VPC入門】4.NatGateway/Bastion

Last updated at Posted at 2018-12-24

前回までの記事

【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 で実施した内容と同じです。
スクリーンショット 2018-12-23 11.52.31.png

作成したSamplePublicRouteTableのルートを編集し、デフォルトゲートウェイをインターネットゲートウェイに設定します。
スクリーンショット 2018-12-23 11.53.55.png

SamplePublicRouteTableSamplePublicSubnetにアタッチします。
スクリーンショット 2018-12-23 11.54.33.png

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

Bastionサーバーの設置

続いてパブリックサブネットにBastionサーバーを配置します。

インスタンスの作成からSampleWebと同じスペックのSampleBastionを作成します。
スクリーンショット 2018-12-23 11.00.40.png

サブネットにSamplePublicSubnetを選択し、PublicIPの自動割当 を有効にしておきます。
スクリーンショット 2018-12-23 11.21.16.png

セキュリティグループを以下の内容で設定します。
スクリーンショット 2018-12-23 11.04.20.png

こちらの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)に変更します。
スクリーンショット 2018-12-23 12.10.57.png

以下のコマンドで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ゲートウェイの作成を行います。

スクリーンショット 2018-12-23 12.38.23.png

配置先のサブネットはSamplePublicSubnetを選択します。
EIPの割当が必須のため、新しいEIPを発行して割り当てます。
スクリーンショット 2018-12-23 12.52.19.png

SamplePrivateSubnetルートテーブルを再度編集します。
スクリーンショット 2018-12-23 12.40.44.png

デフォルトゲートウェイを先程作成したNATゲートウェイにします。
スクリーンショット 2018-12-23 12.41.35.png

ここまでで、SampleWeb内からNAT経由のインターネットへの接続が可能になりました。

# SampleWeb内からインターネットへの接続が可能になるyum updateが成功するはず。
$ sudo yum update
....

LBの再設定

現在の状態では、SamplePrivateSubnetのルートテーブルからインターネットゲートウェイを削除したため、ロードバランサーを経由したSampleWebへのアクセスが行えません。

そのため現在使用しているELBを削除し新たに作成します。
前回の記事と同じ手順ですすめ、「サブネットの選択」をSamplePublicSubnetにします。
スクリーンショット 2018-12-23 13.10.44.png

続いてSampleWebのセキュリティグループを変更します。
HTTPのインバウンドをELBのIPアドレスからELBのセキュリティグループ(SampleElbSG)に変更します。

スクリーンショット 2018-12-23 13.08.03.png

動作確認のため SampleELB に設定されたDNS名を取得し、ブラウザからアクセスしてみます。

前回と同様に Welcome to nginx on Amazon Linux! と書かれたNGINXのWelcomeページが表示されていれば成功です。

次章

TODO

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?