VPCって何?
本当に久しぶりにAWSを触ってみて驚いたのが、これ、VPC – Amazon Virtual Private Cloud。最初、何をするものなのか理解できなかったけど、「おうちネットワークをAWSで作る機能」と考えたら、納得。
予約済みアドレス
ネットワークには予約済みのアドレスがあって、そこは割り当てできないというのは一般的なお話だが、それに加えて、VPCではいくつか予約されているアドレスがある。
- .1 Router
- .2 DNS
- .3 AWSが予約
4オクテット目が0のネットワークを例にしているので、そうでない場合は適当に下駄を履かせてみてほしい。
最終的に5つのアドレスが予約されている。そのため、/29 のネットワークだと、全体のアドレスが8つしかないので、使い物にならない。だから、VPC内のサブネットの大きさは/28までになっているし、サブネットを含む形になるVPCも、/28までになる。
プライベートサブネットとパブリックサブネット
紛らわしいAWS用語だ。
VPC内に作ったサブネットのうち、直接Internetにでられるもの(Internet Gatewayへのルーティング情報を持つもの)をパブリックサブネットという。
だから、NAT Gateway経由になるネットワークとか、VPN経由のネットワークとかは、パブリックサブネットではない。プライベートサブネットという。
そしてもう1つ。いくらパブリックサブネットにあるEC2インスタンスだからって、いわゆるグローバルIP Addressを持たなければ、Internetの向こう側と通信できない。AWSだと、固定IPであるElastic IP Addressを割り当てるか、インスタンス起動時にPublic IP Addressの割り当てをオンにする必要がある。
これらのアドレスは、インスタンスの中からネットワークインタフェースをみてもわからない。meta情報を参照する必要がある。
ネットワークACL
ネットワークにはAccess Controlがつきもの。AWSの場合、セキュリティグループという、インスタンス向けのFirewallもあって、どう使い分けるか迷うかもしれない。
- セキュリティグループはステートフル。受信のルールを定義すると、それに対する送信は自動的に許可される。
- ネットワークACLはステートレス。受信のルールと送信のルールをそれぞれ定義する必要がある。
踏み台とするインスタンスへのアクセスコントロールはセキュリティグループ、踏み台から先へのアクセスはネットワークACLといったところだろうか?セキュリティグループは受け身なのに対し、ネットワークACLでは、出て行くパケットをブロックできるという違いがある。
ルーティングテーブル
(サブ)ネットワークとルーティングは切っても切れない関係。VPCでサブネットを作ると
- デフォルトのルーティングテーブルというものがある。
- サブネットそれぞれに対してルーティングテーブルを設定できる。設定しない場合、デフォルトのルーティングテーブルが使用される。
という動きになる。
1つのVPCのなかに、パブリックサブネットとプライベートサブネットがあるということを考えれば、当然といえば当然だ。
ただ、この仕掛けを知らないと、既存のルーティングテーブルを変更しようとしたとき、戸惑う。変更したつもりがデフォルトのルーティングテーブルで、対象のサブネットには固有のルーティングテーブルがあると、変更の効果がない。
アベイラビリティゾーン
可用性を考えたとき、避けて通れないのがアベイラビリティゾーンである。
アベイラビリティゾーンは1つのデータセンターを指す。複数のデータセンターを使うように設計すれば、多少遅くなるかもしれないが可用性は高まる。
VPCは複数のアベイラビリティゾーンにまたがるように設定できる。ただし、サブネットはまたがることはできない。
デフォルト
試験対策。
デフォルトVPC
- /16のネットワーク
- サブネットは/20
- サブネットはパブリックサブネット
VPCの制限値(Amazon VPC の制限 – Amazon Virtual Private Cloud)
- リージョンあたり5個まで
- VPCあたりサブネットは200個まで
ネットワークACLあたりのルールの数20というのは、実際に設定して行くと意外と引っかかる。
公式情報で確認を
必ず公式情報で内容を確認すること。
コメント