AWS NAT Gateway
Testing report
Development section / CoreFighter co., ltd.
作りたい構成
▪ 外からの攻撃を防ぐために、サービス利用サーバとそれ以外を分離する
▪ DefaultVPCに踏み台サーバに構築
▪ PrivateVPCにWEBサーバ/DBサーバを構築
▪ とはいえWEBサーバから外部APIを叩く必要がある
▪ 具体的に言うと
▪ DefaultVPC→PrivateVPCをVPCPeeringで接続
▪ PrivateVPC→Internetへ通信可能
今までだと
▪ NATサーバを構築して、NAT経由でインターネットへのアクセスを中継する
▪ 問題点
▪ NATサーバの費用
▪ インスタンスの管理が必要
▪ ダウンした際のサービス影響
▪ 冗長化するともっとコスト増
つい先日・・・
▪ AWS NAT Gatewayリリース
http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/vpc-nat-
gateway.html
▪ AWS側でPrivateVPCからインターネットへ通信を可能にする優れもの
NAT Gatewayがちゃんと使えれば
▪ インスタンス・管理コストが減る
▪ 運用コストも減る
▪ すばらしい
今までの構成
▪ NATサーバを使ったSSH通信
▪ インターネットに面したDefaultVPCにある踏み台サーバに接続する
▪ VPCPeeringを利用し、DefaultVPCからPrivateVPCのバックエンドネットワークからインスタンス群
にアクセスする
▪ NATサーバを使ったWEBサーバからのAPI通信
▪ インターネットからELBを経由し、WEBサーバにアクセスがある
▪ API通信が必要なアクセスの場合、バックエンドネットワークからNATサーバにアクセス
▪ NATサーバを経由し、インスタンスに割当られたElasticIPをSrcにインターネットへの通信を行う
NAT Serverを使っていた構成(SSH)
Default VPC
AWS cloud
Private VPC
踏み台
サーバ
WEBサーバ
DB RDS
172.16.1.0/24
Private back end network
172.31.0.0/16
Private front network
172.16.101.0/24
Default VPC network
eth0 :172.31.0.0/16 eth0 :172.31.0.0/16
eth0 :172.31.0.0/16
VPCPeering
NAT
サーバ
eth0 :172.31.0.0/16
いんたーねっと
ElasticIP
ELB
EC2Instance
Internet Gateway
Routing
VPCPeering
NAT
サーバ
NAT Serverを使っていた構成(HTTP(API通信))
Default VPC
AWS cloud
Private VPC
踏み台
サーバ
WEBサーバ
DB RDS
172.16.1.0/24
Private back end network
172.31.0.0/16
Private front network
172.16.101.0/24
Default VPC network
eth0 :172.31.0.0/16 eth0 :172.31.0.0/16
eth0 :172.31.0.0/16
VPCPeering
いんたーねっと
ElasticIP
ELB
EC2Instance
Internet Gateway
Routing
VPCPeering
NAT Gatewayを使った構成
▪ SSH通信
▪ NATサーバ利用時とかわらない
▪ NAT Gatewayを使ったWEBサーバからのAPI通信
▪ インターネットからELBを経由し、WEBサーバにアクセスがある
▪ API通信が必要なアクセスの場合、バックエンドネットワークからNAT Gatewayへアクセス
▪ NAT Gatewayに割り当てられたElasticIPをSrcに外部通信を行う
NAT Gatewayを使った構成案(HTTP(API通信))
Default VPC
AWS cloud
Private VPC
踏み台
サーバ
WEBサーバ
DB RDS
172.16.1.0/24
Private back end network
172.31.0.0/16
Private front network
172.16.101.0/24
Default VPC network
eth0 :172.31.0.0/16 eth0 :172.31.0.0/16
eth0 :172.31.0.0/16
NAT GWVPCPeering
いんたーねっと
ElasticIP
ELB
EC2Instance
Internet Gateway
Routing
VPCPeering
つながったネットワーク並びにルートテーブル設定
HostName NIC IPアドレス VPC 送信先 ターゲット
踏み台 eth0 172.31.1.1
DefaultVPC 172.31.0.0/16 local
DefaultVPC 0.0.0.0/0 インターネットゲートウェイ
DefaultVPC 172.16.0.0/16 VPCPeering
WEB
eth0 172.16.1.1
PrivateVPC 172.16.0.0/16 local
PrivateVPC 0.0.0.0/0 インターネットゲートウェイ
eth1 171.16.101.1
PrivateVPC 172.16.0.0/16 local
PrivateVPC 0.0.0.0/0 NAT Gateway
PrivateVPC 172.31.0.0/16 VPCPeering
▪ 踏み台のeth0/WEBのeth1のVPCPeeringはSSH通信に必須
▪ NAT Gateway用の設定
▪ 踏み台のeth0/WEBのeth1のインターネットゲートウェイが必要
▪ WEBのeth1にNAT Gatewayのルーティング情報が必要
▪ 上記設定の内一つでも抜けたら接続ができなかった
▪ ACL設定
▪ DefaultVPCはSSH/HTTP/HTTPSを限られたIPからアクセス許可で、残りは全拒否
▪ PrivateVPCは172.31.0.0/16と172.16.0.0/16は全許可 その他は拒否
おわり

AWS NAT Gateway Test(Japanese)