Amazon VPC周りの基本的な設定まとめ
VPC (Amazon Virtual Private Cloud) はその名の通り、AWSに仮想のプライベートなネットワーク領域を作成することができるサービスです。AWSでEC2などのリソースを配置する際の前段階でVPCの作成が必要となります。
VPC作成後にEC2インスタンスを配置して、いざ接続を試みると「インスタンスに接続できない」や「インスタンス間で通信できない」などのトラブルが発生することがありますが、落ち着いてよく見直してみると、VPC周りの設定に不備がある場合が多々あります。
そこで、この記事ではVPC周りの基本的な設定である下記についてまとめてみます。
VPCの作成
VPCの作成方法を箇条書きにすると下記の通りです。
- AWSマネジメントコンソールにて VPC を選択
- 左ペインから VPC を選択
- 右上の VPCを作成 を押下
- 名前タグにVPCの名前を入力
- IPv4 CIDRに任意の値を入力したい場合は 手動入力 を選択 ※
- VPCを作成 を押下
※複数のVPCを VPCピアリングで接続する場合は、CIDRが重複すると
通信することができなくなりますので注意が必要です。
設定した内容を構成図にすると下記の通りです。
この段階ではまだインターネットに接続することはできません。
サブネットの作成
つづいてVPC内にサブネットを作成します。
サブネットは大きく分けて「パブリックサブネット」と「プライベートサブネット」の2種があります。パブリックサブネットはインターネットから直接接続できるサブネットであり、プライベートサブネットはインターネットから直接接続できないサブネットです。
両者の違いは後ほどサブネットに関連付けられるルートテーブルに、インターネットゲートウェイがアタッチされているかどうかの違いだけになります。ルートテーブルにインターネットゲートウェイを割り当てたサブネットはたちまちパブリックサブネットとなり、割り当てていないサブネットはプライベートサブネットになります。
インターネットから直接アクセスされるWEBサーバはパブリックサブネットに配置し、インターネットから直接アクセスされないDBサーバはプライベートサブネットに配置するといった下記のパターンがよくある構成になります。セキュリティ上の理由から、DBサーバは極力プライベートサブネットに配置することが望ましいとされています。
サブネットの作成方法を箇条書きにすると下記の通りです。
- AWSマネジメントコンソールにて VPC を選択
- 左ペインから サブネット を選択
- 右上の サブネットを作成 を押下
- VPC IDで先程作成したVPCを選択
- サブネット名にサブネットの名前を入力
- アベイラビリティーゾーンを選択 ※
- IPv4 CIDRブロックにサブネットのCIDRを入力
- サブネットを作成 を押下
※アベイラビリティーゾーン(以下、AZ) はデータセンター群の管理単位であり、基本的に各AWSリージョンに2つ以上存在しています。各AZは「ネットワーク設備」「電源装置」「冷却装置」などが完全に独立しており、AZ間は高速な専用線で接続されています。独立した2つ以上のAZが存在していることで、同一リージョン内で冗長構成を取ることが可能になっています。
東京リージョンのAZである ap-northeast-1a と ap-northeast-1c にパブリックサブネットとプライベートサブネットを1セットずつ作成する場合、サブネットを合計4つ作成することになり、構成図にすると下記のようになります。この段階でもまだインターネットに接続することはできません。
インターネットゲートウェイの作成
つづいてインターネットとの出入口であるインターネットゲートウェイを作成します。
インターネットゲートウェイの作成方法を箇条書きにすると下記の通りです。
- AWSマネジメントコンソールにて VPC を選択
- 左ペインから インターネットゲートウェイ を選択
- 右上の インターネットゲートウェイを作成 を押下
- インターネットゲートウェイの名前を入力
- インターネットゲートウェイを作成 を押下
- 一覧から作成したインターネットゲートウェイを選択
- 右上の アクション を押下
- VPCにアタッチを押下
- VPC IDで先程作成したVPCを選択
- アタッチ を押下
インターネットゲートウェイを作成すると構成図は下記のようになります。
以降のルートテーブルの設定を行うことで通信が可能となります。
NATゲートウェイの作成
ここでルートテーブルの設定の前に、NATゲートウェイについて見ていきます。
プライベートサブネットはインターネットから直接アクセスできない、インターネットゲートウェイのアタッチされていないサブネットですが、プライベートサブネット内にあるサーバでアップデートやソフトウェアをインストールする際にインターネットに出られないのはとても不便です。
そこで登場するのがNATゲートウェイです。NATゲートウェイを使用することでプライベートサブネット内から開始した通信はインターネットへ出ることが可能になります。
また、NATゲートウェイはAZ内では冗長化されていますが、AZ全体で障害が発生した場合は通信することができなくなりますので、システム全体でNATゲートウェイを冗長化する際はAZごとにNATゲートウェイを作成する必要があります。
※NATゲートウェイのデータ転送はIn/Outの両方で料金が発生するため、
実際に導入する際には費用対効果の点も含めた検討が必要になります。
NATゲートウェイの作成方法を箇条書きにすると下記の通りです。
今回はパブリックサブネットにNATゲートウェイを配置してみます。
- AWSマネジメントコンソールにて VPC を選択
- 左ペインから NATゲートウェイ を選択
- 右上の NATゲートウェイを作成 を押下
- NATゲートウェイの名前を入力
- 先程作成したパブリックサブネットを選択
- Elastic IPを割り当て
- NATゲートウェイを作成 を押下
AZごとにNATゲートウェイを作成した場合の構成図は下記の通りです。
ルートテーブルの設定
つづいて、いよいよルートテーブルを作成します。
ルートテーブルも大きく分けて「パブリックルートテーブル」と「プライベートルートテーブル」の2種があります。それぞれ作成すればよいのですが、NATゲートウェイを作成して冗長構成を取っていた場合はAZごとにプライベートルートテーブルを作成する必要があります。ap-northeast-1a のプライベートサブネットの通信は ap-northeast-1a のNATゲートウェイから、ap-northeast-1c のプライベートサブネットの通信は ap-northeast-1c のNATゲートウェイからインターネットへと出る必要があります。
つまり、構成図では下記のようになり、3つのルートテーブルを作成する必要があります。
ルートテーブルの作成方法を箇条書きにすると下記の通りです。
- AWSマネジメントコンソールにて VPC を選択
- 左ペインから ルートテーブル を選択
- 右上の ルートテーブルを作成 を押下
- ルートテーブルの名前を入力
- VPC IDで先程作成したVPCを選択
- ルートテーブルを作成 を押下
つづいてルートテーブルのルートを設定します。
※パブリックルートテーブルにはインターネットゲートウェイのルートを、
プライベートルートテーブルにはNATゲートウェイのルートを追加します。
(NATゲートウェイがない場合はプライベートルートテーブルはローカルのみ)
つづいてルートテーブルを各々のサブネットに関連付けます。
- 先程作成したルートテーブルを選択
- サブネットの関連付け のタブを選択
- サブネットの関連付けを編集 を押下
- 上記の構成図の通りにルートテーブルをサブネットに関連付け
- 保存 を押下
以上の設定を行うと下記の通り、インターネットとの通信が可能な状態になります。
以上でVPC周りの基本的な設定が完了になります。
最後までご覧いただきありがとうございました。