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.9232)
アウトバウンド すべて 送信先: 任意の場所

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

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

© kdtakahiro 2018