雑多なインフラエンジニア日記

技術ブログでっす~

VPCのプライベートサブネットとパブリックサブネットの違い

AWS関連資料を見ていると、VPC内部でのプライベートサブネット、パブリック
サブネットが区分けされている構成図をよく見かける。

・こんな感じの構成図のことを言ってます。
http://3.bp.blogspot.com/-SZ0M4g2YuVE/T9sk5ZgkYgI/AAAAAAAAF8g/ZEObU3GxEGY/s1600/scalable_app_int_lb.jpg

・そもそも、VPCとは な方は以下をご参照ください。
http://www.slideshare.net/kentamagawa/vpc-aws7


インフラを知らないアプリエンジニアなら兎も角、セキュリティ高めるために
パブリック、プライベートのサブネットを分けるよね~
オンプレっ子な私はどうしても分けないと気持ち悪い&DMZはセキュリティ要件
として必須なので実装!

さーてちゃちゃっとやるかと、AWS Manegent Console→VPC→Subnet を選択し、
チェックボックスか何かで「private/public」みたいなボタンがあってクリクリ
すれば終了! と思いきや、そうではなかったというお話。

”パブリックサブネットを作成し”とか、”プライベートサブネットを作成し”
とか書いてる記事が多かったので、そーゆー設定があるもんだと。。


実際は、route tables の設定で、パブリックとプライベートを分けているだけ。


・route tablesの設定でインターネット(0.0.0.0/0)へのルーティングが、
IGW(igw-XXXXX)に向いているのがパブリックサブネット。
(一般的にはweb、mail、NAT用サーバ)


・route tablesの設定でインターネットへのルーティングが、NAT用サーバ
(eni-XXX/i-XXX)に向いているのが、プライベートサブネット。
(バッチサーバやDBサーバなどのバックエンドサーバ)



となり、route table次第で決まります。
クリック一つで出来ると勘違いしてました。orz


・route table設定
http://blog.cloudpack.jp/2011/08/aws-news-vpc-subnet-route-table.html

・NAT用サーバの作り方
http://www.slideshare.net/AmazonWebServicesJapan/nat-20120719

あと、VPC内部のサブネット間は、NACLやSGで制限してない限り、
いかなる通信も出来ます。


・補足
Amazon謹製のNATサーバ用AMIは、ipマスカレードしているだけです。
通常のEC2に、Squid、VyataなどをインストールしてNATを実現するも
よし、はたまた自分でipマスカレード設定入れるのも良しです。
それぞれ良し悪しがあるので、要件に合った方式を採用しましょう。
単純に、プライベートサブネットのサーバからyumやらwgetしたいだけ
なら、ipマスカレードで十分かと思いますよ。


以上です!