VPC初心者がハマりやすいポイントをまとめてみた

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

皆さんこんにちは。テクニカルグループの山田です。

今回、社内の研修で初めてVPCに触れたのですが、VPCを構築する際にハマった部分が何箇所かあったので
他にもいるであろう、迷える子羊のためにハマリやすいポイントを初心者の目線から解説していきます。
そんな事も知らないのかと思われる方もいらっしゃると思いますが、
どうか温かい目で見てくだされば嬉しく思います!

なお、VPCの基本的な構築手順については、ググればたくさん出てくると思うのでそちらをご覧下さい。

VPCの構築で気になった・ハマったポイント

・VPCのサイズは変更不可!

VPCを作成する際に、CIDR形式でVPCのサイズを決めると思うのですが
これは一度決めたらもう変えられません!
アドレス範囲を変えたい場合は、もう一度作りなおすしか方法はありません。
どうせ後で変えられるんでしょ?と、たかをくくって適当に指定すると後で泣きを見ることになるので
ここは慎重に決めておきましょう。 ( 僕は泣きました )

・プライベートサブネット!?パブリックサブネットって何!?

VPCを調べていて、よく出てくる単語で
「プライベートサブネット」「パブリックサブネット」というものがあります。

 実は元々こういう設定がVPCに備わっているのではなく、そのサブネットの
 Route tables の設定によってこれが決まってきます。
 Route tables で 0.0.0.0/0 (デフォルトゲートウェイへの通信) がインターネットゲートウェイに
 流れるような設定になっているのが「パブリックサブネット」
 そうではないのが「プライベートサブネット」です。

 僕はそういう設定があるのかと思って、小一時間探し続けていました・・・

0.0.0.0/0 が igw-xxxxxxx (インターネットゲートウェイ) に流れるようになっているので、
 このルートテーブルが設定されているサブネットはパブリックサブネットです。


こちらのルートテーブルは0.0.0.0/0 が eni-xxxxxx/i-xxxxxxx(NATなどのインスタンス) に流れるようになっているので、
このルートテーブルが設定されているサブネットはプライベートサブネットになります。

とまあ、簡単にまとめると外部と通信できるサブネットが「パブリックサブネット」
VPC内部としか通信しないサブネットが「プライベートサブネット」です!

VPC内部及び、VPNやDirectConnectを通じて接続した
オンプレ環境等とプライベートな通信をするサブネットが「プライベートサブネット」です!

・サブネットで指定したIPアドレスの範囲のうち、最初の4つと最後の1つは使えない!

 各サブネットの最初の4つと最後の1つのIPアドレスは Amazon が予約していて使えないようになっています!
 例として、サブネットが 10.1.0.0/24 のサブネットで 先頭から2番目のアドレス 10.1.0.1を指定すると
 以下の様なエラーが出てしまいます。

 

10.1.0.0/24 のサブネットを例にして言うと、予約されているアドレスは
10.1.0.0、10.1.0.1、10.1.0.2、10.1.0.3、10.1.0.255 の5つで、
 自由に使えるのはそれ以外の 251個 のアドレスになります。

※参考 Amazon Virtual Private Cloud FAQ ( http://aws.amazon.com/jp/vpc/faqs/#I8 )

EC2で使っていたSecurityGroupは使えない!

EC2のSecurityGroupとVPC内で使うSecurityGroupは別物です。
EC2のSecurityGroupはInboundだけ設定出来たのですが、VPCのSecurityGroupは
Outboundまで制御することができます。

 

SecurityGroupは知ってるけど、NetworkACL (以下、NACL)って何?

EC2ではセキュリティグループだけを設定すれば良かったのですが、
VPCにはネットワークのI/Oを制御するための設定がもう一つNACLというものがあります。
どちらも仮想のファイアウォールのようなものとして機能するのですが、
SecurityGroupはインスタンス単位、NACLはサブネット単位に設定します。

SecurityGroupを付けたり外したりが自由!

 EC2のインスタンスを立ち上げる際にSecurityGroupを指定すると思うのですが、みなさんご存知の通り
 EC2の場合は一度紐付けたSecurityGroupは変更する事ができません。
 ですが、VPC内のEC2インスタンスは自由にSecurityGroupを付け替えられるんです!

 
         ↓
 
 
 このように、AWS マネジメントコンソールからでも手軽に変更する事ができます。

 

まとめ

 
 今回、初心者が気になった・ハマりやすいポイントをまとめるという形でブログを書かせていただきました。
 VPCという概念を理解するまでは時間がかかりましたが、慣れてしまえばマネジメントコンソールで簡単に
 作れてしまいます。次はコマンドラインツールで挑戦してみたいです。

 また、これから研修を進めていく上で今回のようなハマってしまう場面はたくさん出てくると思うので
 ここで文章化して共有して皆さんと一緒に成長していければなと思います。

追記 : AWS ソリューションアーキテクトの荒木様よりご指摘をいただいたので追記します。

誤:VPC内部としか通信しないサブネット

正:VPC内部及び、VPNやDirectConnectを通じて接続した
  オンプレ環境等とプライベートな通信をするサブネット

荒木様ご指摘ありがとうございました。勉強になりました。

AWS運用自動化サービス「Cloud Automator」