はじめに
Amazon VPC (Virtual Private Cloud)の略で、AWS上に自身のプライベートネットワークを作成できます。
このネットワーク上にEC2やRDSといったAWSサービスを作成しシステムを構築できます。
プライベートなNW空間になりますが、インターネットゲートウェイを作成しインターネットと接続したり、Direct Connectという機能を利用して社内のイントラと接続することも可能です。
前提
VPC作成前にリージョンとアベイラビリティゾーン(AZ)について簡単に触れておきます。
AWSはリージョンとAZという単位に分割して管理されています。
リージョン
AWSの各サービスが提供されている世界各地の地域のことです。
例えば、日本はアジアパシフィック(東京)というリージョンに含まれています。他にもバージニア北部、オハイオといったリージョンが存在、リージョン間は完全に分離されており耐障害性を保っています。
アベイラビリティゾーン(AZ)
AZとは、各リージョンに存在するデータセンターです。 各リージョンには複数のアベイラビリティゾーンが存在し、それぞれにサブネットやEC2といったサービスを配置することで冗長性を保つことができます。
今回作成するVPCの最終構成
今回はアジアパシフィック(東京)リージョンに以下のようなVPCを作成します。
インターネットと通信ができるパブリックサブネット、インターネットとの通信ができず、VPC内のみの通信が可能なプライベートサブネットを、各AZ内に作成します。
VPCの作成
VPCを作成していきます。
サービスからVPCを選択後、「VPCを作成」をクリック
VPCの設定
IPv4 CIDR ブロックでプライベートIPアドレスの範囲を指定します。
CIDRブロックサイズは/16~/28のサイズを指定可能で、
スラッシュの後の数字が小さいほど、割り振る IP アドレスの数が増えます。(/16だと65,536 個分、/28だと11個分)
IPv4 CIDR ブロックは本来、必要なIPアドレスを見積もりした上で設計しますが、今回は以下の通り設定します。
名前タグ: rails_test
IPv4 CIDR ブロック: 10.0.0.0/16
サブネットの設定
サブネットは簡単にいうとVPCを細かく区切ったネットワーク空間です。
先ほど作成したVPCの中にサブネットを構築していきます。
サブネットマスク(16bit ~ 28bit)で割り当て空間の設定や、
配置するAZを指定します。
左ペインのサブネットを選択後、「サブネット作成」ボタンをクリック。
VPC IDで作成したVPCを選択
下の図は以下の設定をしたものです。
サブネット名: Public-subnet-a
アベイラビリティーゾーン: ap-northeast-1a
IPv4 CIDR ブロック: 10.0.1.0/24
同様の手順で他3つのサブネットも作成します。
サブネット名: Public-subnet-c
アベイラビリティーゾーン: ap-northeast-1c
IPv4 CIDR ブロック: 10.0.2.0/24
サブネット名: Private-subnet-a
アベイラビリティーゾーン: ap-northeast-1a
IPv4 CIDR ブロック: 10.0.11.0/24
サブネット名: Private-subnet-c
アベイラビリティーゾーン: ap-northeast-1c
IPv4 CIDR ブロック: 10.0.12.0/24
インターネットゲートウェイの作成
VPCを作成しましたが、このままではインターネットに接続できません。
インターネットにはインターネットゲートウェイ(IGW)を経由して通信する必要があります。
まずはIGWを作成します。
左ペインのインターネットゲートウェイを選択後、「インターネットゲートウェイの作成」をクリック
以下の通り設定
名前タグ:igw-rails-test
作成直後はデタッチ状態のため、先ほど作成したVPCにアタッチを行います。
作成したインターネットゲートウェイの「アクション」よりVPCにアタッチをクリック
使用可能なVPCで作成したVPCを選択
IGWの作成、アタッチは完了です。
ルートテーブルの設定
ルートテーブルとは通信経路を決めたルートと呼ばれるルールを定義されたテーブル情報のことです。
IGWをアタッチしましたが、まだインターネットと通信することはできません。ルートテーブルにIGWへのルートを追加しインターネット接続できるようにします。
左ペインのルートテーブルを選択、「ルートテーブルの作成」をクリック
名前タグ: Public-Route-Table
VPC: (作成したVPCを指定)
ルートの編集
ルートテーブル作成後、ルートタブの「ルートの編集」をクリック
送信先: 0.0.0.0/0
ターゲット: (アタッチしたIGW)
※送信先の0.0.0.0/0は全てのアドレスとマッチするという意味です。全ての送信先に対してIGWを経由するという設定になります。
またルートテーブルにはlocalというテーブルがはじめから関連づけられています。これはVPC内のIPアドレスに対してのルート情報です。
先ほど、全ての送信先に対してIGWを経由と書きましたが、
ルートテーブルは最長プレフィックス一致(定義された最も具体的なルートが優先)が適用されるため、送信先がVPC内のIPアドレスの場合はlocal、それ以外はIGWを経由して通信することになります。
サブネットの関連付け
作成したルートテーブルにサブネットを割り当てします。
サブネットの関連付けタブを選択後、「サブネットの関連付けの編集」ボタンをクリック
サブネットID: Public-subnet-a、Public-subnet-c
ここで設定したサブネットが、パブリックサブネット(インターネットへのアクセスが可能)になります。
省略していますが、ターゲットがlocalのみ(IGWのルート情報がない)のルートテーブルを作成し、関連付けしたサブネットがプライベートサブネットとなります。
完成
最後に
今回は一般的なVPC作成について投稿しました。
作成したパブリックサブネットにEC2、プライベートサブネットにRDS等を配置しWebアプリケーションを構築することができます。
VPCには他にもネットワークACLで通信を制御したり等、さまざまな機能があるため、どんどん活用していきたいです。