AWSでVPC + 踏み台EC2 + NAT Gatewayの設定

AWSでVPC + 踏み台EC2 + NAT Gatewayの設定

2018-02-09
aws

VPCの勉強のため、よくある構成で設定を試しました。

構成 #

Image

VPC #

test-vpc1(172.31.0.0/16)

Private Subnet #

test-subnet-private(172.31.0.0/24)

Public subnet #

test-subnet-public(172.31.1.0/24)

踏み台EC2 #

インスタンスタイプ: t2.micro

セキュリティグループ

タイプポートソース or 送信先
インバウンド22ソース: 任意の場所
アウトバウンドすべて送信先: 任意の場所

EC2 #

インスタンスタイプ: t2.micro

セキュリティグループ

タイプポートソース or 送信先
インバウンド22ソース: 踏み台EC2(172.31.1.92/32)
アウトバウンドすべて送信先: 任意の場所

NAT Gateway #

Public subnetに配置

設定手順 #

1. VPC作成 #

一から作ってみようと、デフォルトVPCを使用せず新規にVPCを作成。

Image

設定内容

Image

2. Subnet作成 #

Image

Public subnet

Image

Private Subnet

Image

3. 各ルートテーブル作成 #

Image

Private用ルートテーブル

Image

Public用ルートテーブル

Image

4. Subnetにアタッチ #

作成したルートテーブルをSubnetに関連付けます。

Public用ルートテーブルの例

Image

Public、Privateともに設定した後の状態。

Image

5. インターネットゲートウェイ設置 #

インターネットアクセスをするため、インターネットゲートウェイを作成します。

Image

Image

インターネットゲートウェイはVPCに関連付けなければいけません。

Image

6. NATゲートウェイ設置 #

続いてNATゲートウェイを作成します。

Image

Image

通信は、インターネットゲートウェイを通じてインターネットへ出ていきます。
そのため、SubnetとしてPublic subnet(インターネットゲートウェイへルーティング設定する)を指定します。

Image

7. 各ルートテーブル設定追加 #

0.0.0.0/0あての通信が、インターネットゲートウェイ・NATゲートウェイにルーティングされるように、ルートテーブルにルールを追加します。

Private subnetにNATゲートウェイへのルーティング設定。

Image

Image

Image

Public subnetも同様に設定を開き、インターネットゲートウェイを紐付けます。

これで、VPC設定はOK。

8. 踏み台EC2設置 #

続いてEC2の設定。

外部接続用の踏み台EC2を設置します。AWSのベストプラクティスでBastionと呼ばれるものです。

Image

お試しなので無料のもの。

Image

Image

先ほど作成したVPCとPublic subnetを指定。
外部から接続できるようにパブリックIP割り当てを有効化。
また、あとでログを見たくなるかもしれないので、CloudWatch有効化。

Image

ストレージはデフォルト。

Image

踏み台はどこからでも接続できるように0.0.0.0/0からの接続を許可。

Image

注意喚起は了承済み。次へ。

Image

キーペアはお好みで。

Image

完成。

Image

9. Private EC2設置 #

Private Subnet内のEC2を作成。踏み台からしか接続できないEC2となります。
踏み台と同じように作成ウィザードを進めます。

変更する点は次の通り。

  • パブリックIPの割当は不要
  • セキュリティグループで踏み台EC2のIPのみ接続許可

セキュリティグループで踏み台EC2のプライベートIPを指定。

Image

これで、各設定完了です。疎通確認します。

10. NAT経由の疎通確認 #

疎通を確認します。

経路
PC -> (SSH) -> 踏み台EC2 -> (SSH) -> Private EC2 -> (NAT Gateway) -> インターネット
# 踏み台EC2にSSH接続
ssh -i public-ec2.pem ec2-user@<踏み台EC2 Public IP>
Last login: Sat Jan 27 03:52:17 2018 from <Your IP>

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2017.09-release-notes/
1 package(s) needed for security, out of 1 available
Run "sudo yum update" to apply all updates.

# ifconfig.coで自身のIP確認。
[ec2-user@--- ~]$ curl ifconfig.co
# <踏み台EC2 Public IP>が表示されればOK。

# 踏み台EC2からPrivate subnet内のEC2に接続。
[ec2-user@--- ~]$ ssh -i public-ec2.pem ec2-user@<Private EC2のPrivate IP>
Last login: Sat Jan 27 03:53:05 2018 from <踏み台EC2のPrivate IP>

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2017.09-release-notes/
1 package(s) needed for security, out of 1 available
Run "sudo yum update" to apply all updates.

# IP確認
[ec2-user@--- ~]$ curl ifconfig.co

# <NAT GatewayのIP>が表示されればOK。
[ec2-user@--- ~]$ exit
logout
Connection to <Private EC2のPrivate IP> closed.

VPCの資料を読んでいる時、ルーターはどこに配置される?カスタムルートテーブルは何にアタッチする?など、あまりイメージが付きませんでしたが、実際に設定してみると理解が深まりました。

やっぱり一度手を動かしてみると違いますね。