AWSでVPC + 踏み台EC2 + NAT Gatewayの設定
2018-02-09
VPCの勉強のため、よくある構成で設定を試しました。
構成 #
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を作成。
設定内容
2. Subnet作成 #
Public subnet
Private Subnet
3. 各ルートテーブル作成 #
Private用ルートテーブル
Public用ルートテーブル
4. Subnetにアタッチ #
作成したルートテーブルをSubnetに関連付けます。
Public用ルートテーブルの例
Public、Privateともに設定した後の状態。
5. インターネットゲートウェイ設置 #
インターネットアクセスをするため、インターネットゲートウェイを作成します。
インターネットゲートウェイはVPCに関連付けなければいけません。
6. NATゲートウェイ設置 #
続いてNATゲートウェイを作成します。
通信は、インターネットゲートウェイを通じてインターネットへ出ていきます。
そのため、SubnetとしてPublic subnet(インターネットゲートウェイへルーティング設定する)を指定します。
7. 各ルートテーブル設定追加 #
0.0.0.0/0あての通信が、インターネットゲートウェイ・NATゲートウェイにルーティングされるように、ルートテーブルにルールを追加します。
Private subnetにNATゲートウェイへのルーティング設定。
Public subnetも同様に設定を開き、インターネットゲートウェイを紐付けます。
これで、VPC設定はOK。
8. 踏み台EC2設置 #
続いてEC2の設定。
外部接続用の踏み台EC2を設置します。AWSのベストプラクティスでBastionと呼ばれるものです。
お試しなので無料のもの。
先ほど作成したVPCとPublic subnetを指定。
外部から接続できるようにパブリックIP割り当てを有効化。
また、あとでログを見たくなるかもしれないので、CloudWatch有効化。
ストレージはデフォルト。
踏み台はどこからでも接続できるように0.0.0.0/0からの接続を許可。
注意喚起は了承済み。次へ。
キーペアはお好みで。
完成。
9. Private EC2設置 #
Private Subnet内のEC2を作成。踏み台からしか接続できないEC2となります。
踏み台と同じように作成ウィザードを進めます。
変更する点は次の通り。
- パブリックIPの割当は不要
- セキュリティグループで踏み台EC2のIPのみ接続許可
セキュリティグループで踏み台EC2のプライベートIPを指定。
これで、各設定完了です。疎通確認します。
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の資料を読んでいる時、ルーターはどこに配置される?カスタムルートテーブルは何にアタッチする?など、あまりイメージが付きませんでしたが、実際に設定してみると理解が深まりました。
やっぱり一度手を動かしてみると違いますね。