今回はVPC関連のサービスについてまとめていきます。
EC2とかRDSを構築する際にVPC関連のネットワークの知識をしっかり学んでおくと、より堅牢で可用性のあるWebサービスを構築できると思います。
用語一覧
- VPC
- CIDR
- サブネット
- パブリックサブネット
- プライベートサブネット
VPCについて
VPC(Virtual Private Cloud)はAWS上に独立したプライベートネットワークを構築するサービスです。
VPCを作成し、サービスをプライベートネットワーク内に設定することで外部のネットワークからは隔離された環境を構築することができます。
開発環境と本番環境が同じVPC内に構築されていると、開発環境から本番DBへのアクセスも条件によっては可能になってしまいますが、
それぞれを別々のVPC内で構築すると、ネットワークが隔離されているためそういった心配をすることがなくなります。
環境ごとをVPC単位で分けている例
CIDR(Classless Inter-Domain Routing)について
IPv4型のVPCを作成する際にはプライベートアドレスの範囲内で、16ビット以上28ビット以内のCIDRを設定する必要があります。
このCIDR(サイダー)というのは、IPアドレスを xxx.xxx.xxx.xxx/yy という表記で表す(yyはサブネットマスク)ことで、同一ネットワーク内にあるIPアドレスをグルーピングするやり方です。
ClasslessというワードはIPアドレスが「192.168.xxx.xxx」だと「192.168.0.0」がネットワーク部分だと判別するわけではないことから、クラスによる分類がないという意味になっております。
そのため、/yy という書き方(CIDR表記)でどのネットワーク化を表しています。
詳しくはこちらの記事を参照ください。=> (https://wa3.i-3-i.info/word11989.html)
サブネットについて
サブネットはVPCで決められたアドレス範囲内からさらに分割したネットワークです。
サブネットはインターネットに通信が可能なパブリックサブネットとサブネット間での通信のみが可能なプライベートサブネットのどちらかに分類されます。
パブリックサブネット
デフォルトゲートウェイ「0.0.0.0/0」からインターネットにアクセスできるサブネットです。
外部からVPC内のリソースに直接アクセスすることができるため、パブリックサブネット内に建てたEC2やRDSのアドレスはグローバルからアクセスできます。
プライベートサブネット
デフォルトゲートウェイからはインターネットにアクセスできないサブネットです。
このサブネットに配置されたリソースはVPC内の他のリソースとしか通信ができないように制限されます。
RDSなどはDBホスト名をグローバルからアクセスできる状態にするとセキュリティ的によろしくないので、プライベートサブネット内に配置して、同一VPC内のEC2インスタンスからしかアクセスできないようにするようなケースが多かったりします。
EC2インスタンスもプライベートサブネットに置くことでホスト名がグローバルからアクセスできなくため、不正なアクセスから守ることができます。
EC2インスタンスからインターネットにアクセスしたい場合は、パブリックサブネットにELBやNATゲートウェイを設置してインターネットへのブリッジを構築する必要があります。
まとめ
- VPCは色んなリソースを配置するプライベートネットワーク、CIDRで範囲を決める
- パブリックサブネットはインターネットにアクセスできる、ELBやNATゲートウェイを置いたりする
- プライベートサブネットはVPC内のみでアクセスができる、外部から直接アクセスさせないEC2やRDSを置いたりする