初心者向け

【AWSの基礎!】VPC、サブネット、ルートテーブルを理解する!

vpc-subnet-routetable

今回はこのような質問をいただきました。

VPCとかサブネットとかよく聞くけどこれって何なの?

インフラ構築する際に一番最初に作ることになるのがVPCです。

結構重要な部分ではあるのですが、最初に作って終わりなことも多いので触る機会が少ないんですよね。

そこで今回はこちらの質問について解説していきます!

概要

VPCは仮想のプライベートネットワーク空間

サブネットはVPCの中に構築するネットワーク空間

ルートテーブルは通信ルートの定義

これらはAWS上でインフラを構築する際に最初に用意することになります。

全体イメージ

全体のイメージとしてはこんな感じです。

ルートテーブルが含まれていないけど、ルートテーブルはサブネットに関連付けるものだと思ってください。

VPC

VPC

VPCは仮想のプライベートネットワーク空間のことです。

言い換えるとクラウド上に作られた閉鎖的なネットワーク空間のことですね。

これ以上の説明が難しい…

ちなみにVPNは全くの別物でこちらは仮想のプライベート通信経路です。
VPCがネットワーク空間でVPNが通信経路。

VPCを作成しようとすると以下のような画面が表示されます。

VPCを作成

IPv4 CIDR ブロック

こちらはネットワークの広さのことです。

CIDRは「サイダー」と読みます。

プライベートIPアドレスを指定するので、以下の範囲内で指定します。

  • 10.0.0.0 – 10.255.255.255 (10.0.0.0/8)
  • 172.16.0.0 – 172.31.255.255 (172.16.0.0/12)
  • 192.168.0.0 – 192.168.255.255 (192.168.0.0/16)

/の後ろの数値はサブネットマスクと呼ばれて、数値が小さいほどネットワークが広く、大きいほど狭いです。(最大32)

IPv6 CIDR ブロック

IPv6を利用するかどうか。

今の所、IPv4だけで困ったことはないです。

テナンシー

デフォルトと専有が選択できます。

専有にするとハードウェアを物理的に確保します。

専有するメリットとしてはオンプレで使用していたライセンスを持ち込める、セキュリティの向上が挙げられます。

サブネット

サブネットはVPCの中に構築するネットワーク空間のことです。

VPCで大きく確保したネットワーク空間を用途ごとに分割するために使います。

一般的にはパブリック用とプライベート用にサブネットを分割します。

もっと細かく、アプリケーション用、DB用、DMZ用のように分割している構成も見たことがあります。

サブネットを作成しようとすると以下のような画面が表示されます。

サブネットの設定

アベイラビリティーゾーン

AWS公式では以下のように説明されていました。

アベイラビリティゾーン (AZ) とは、1 つの AWS リージョン内でそれぞれ切り離され、冗長的な電力源、ネットワーク、そして接続機能を備えている 1 つ以上のデータセンターのことです。

リージョンは東京とかオレゴンとかバージニア北部とか、データセンターのある地域のことです。

この地域内で複数のデータセンターを区別するためにアベイラビリティゾーン (AZ) が存在します。

例えば、東京リージョン(ap-northeast-1)には以下の3つが存在します。

  • ap-northeast-1a
  • ap-northeast-1c
  • ap-northeast-1d

ap-northeast-1aは品川、ap-northeast-1cは新宿、ap-northeast-1dは上野にありますみたいなイメージ。(実際はどこにあるかわかりません!)

AZを分ける理由としてはデータセンターの物理的な障害を回避するためです。

ap-northeast-1aのデータセンターにすべて構築してサーバーの冗長化を行っても地震や火災などでap-northeast-1aのデータセンターそのものが倒壊してしまった場合、冗長化の意味がありません。

データセンターごとのシステム障害なんかもあるのでとりあえず複数のAZ上に構築するべきです。

そのため、基本的にはサブネットを作るときは少なくとも4つ(パブリック・プライベート×マルチAZ)は作ることになると思います。

ap-northeast-1bは存在するけど新規では使われていないみたいです。

IPv4 CIDR ブロック

VPCのCIDRと同じ。

VPCで指定したCIDRの中にどのくらいの広さのネットワーク空間を作るか指定します。

ルートテーブル

ルートテーブルは通信ルートの定義となります。

サブネットに関連付けます。

サブネットに関連付けられているルートテーブルにグローバルインターネットへのルートがあれば、そのサブネットはパブリックサブネットということになります。

ルートテーブルを作成するときの設定はVPCを選択だけです。

その解説は不要だと思うのでルートの編集画面を見てみます。

プライベートサブネット用のルートテーブル

CIDRに172.31.0.0/16を指定したVPCでルートテーブルを作成すると、編集画面はこのようになっています。

ルートテーブルの編集

この状態だと172.31.0.0/16に対する送受信はlocal(VPC内)に流してくださいという意味になります。

内部の通信のみ許可されている状態なので、プライベート用のサブネットにはこのようなルートテーブルを関連付けます。

パブリックサブネット用のルートテーブル

今度はインターネットゲートウェイ(グローバルインターネットへのルート)を追加してみました。

ルートテーブルの編集_パブリック

インターネットは0.0.0.0/0と覚えておいてください。

ターゲットはインターネットゲートウェイ(IGW)を指定します。

インターネットゲートウェイはVPCとインターネットとの通信を可能にするものです。

名前を決めるだけで作れます。

パブリック用のサブネットにはこのようなルートテーブルを関連付けます。

あとがき

完全に理解しようと思うと最初はCIDRが意味わからなくて悩むかも。

私も何もわからず触っていた時期がありました。

CIDRを理解できれば全部理解できるはず!

参考

https://aws.amazon.com/jp/about-aws/global-infrastructure/regions_az/
https://dev.classmethod.jp/articles/vpc-cidr/
https://www.ryucom.co.jp/blog/aws/898#toc_id_1_3