aws nat gateway test(japanese)
TRANSCRIPT
AWS NAT GatewayTesting reportDevelopment 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 localDefaultVPC 0.0.0.0/0 インターネットゲートウェイDefaultVPC 172.16.0.0/16 VPCPeering
WEB
eth0 172.16.1.1PrivateVPC 172.16.0.0/16 localPrivateVPC 0.0.0.0/0 インターネットゲートウェイ
eth1 171.16.101.1PrivateVPC 172.16.0.0/16 localPrivateVPC 0.0.0.0/0 NAT GatewayPrivateVPC 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は全許可 その他は拒否
おわり