【AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得】セクション3: 【VPC】ネットワークを構築しようで知らなかったことをざっくりまとめてみた
目次
- 目次
- AWSでインフラを構築する場合、まず何からやるべきか?
- リージョンとは
- アベイラビリティゾーンとは
- VPC(Virtual Private Cloud)とは
- サブネットマスク表記とサブネットの違い
- IPアドレスとは
- IPアドレスの範囲を表記する2種類の方法
- ホストとは
- インターネットゲートウェイとは
- 東京リージョンにIPアドレスの範囲が10.0.0.0/16のVPCを作成する
- VPC内のアベイラビリティゾーンにサブネットを作る
- ルーティングを設定する
- パブリックサブネット用のルートテーブルを作成して、インターネットゲートウェイと接続するようなルーティングを作成する
- VPC設計の3つのポイント
- VPCを分けるか、アカウントを分けるか
- サブネットの設計の2つのポイント
- パブリックサブネットを別のアベイラビリティゾーンに追加で作成し、そのパブリックサブネットに今回作成したルートテーブルをアタッチする
- 参考記事
AWSでインフラを構築する場合、まず何からやるべきか?
AWSでインフラを構築する場合、 まずはネットワークから作成します。 VPCと呼ばれるネットワークを構築し、そのネットワーク環境にEC2インスタンスなどのサーバーを設定します。その後、そのサーバーに必要なアプリケーションをインストールします。
リージョンとは
リージョンとは、 AWSの各サービスが提供されている地域 のことです。 2019年6月時点では、世界中に17のリージョンがあります。
AWSのサービスを利用する場合、まずリージョンを選択します。リージョンごとにネットワークを設定して、サーバーを作って行きます。
(注) リージョンによって使えるサービスが異なるので、自分の使いたいサービスがそのリージョンで使えるかを事前にチェックする必要があります。基本的には最新の機能はアメリカから使えるようになって、徐々に他の地域でも使えるようになります。また、日本でWebサービスを展開する場合、東京リージョンを選択した方がアメリカを選択した場合より、サーバーの応答時間が早くなります。
アベイラビリティゾーンとは
アベイラビリティゾーンとは、 複数のデータセンターを束ねたもの です(AWSは世界各国にデータセンターを持っています)。どのリージョンにもアベイラビリティゾーンは2つ以上存在していて、それぞれ物理的に離れて存在しています。
(※)1つのリージョンに複数のアベイラビリティゾーンがある理由は、1つのアベイラビリティゾーンが利用不可能になっても、それ以外のアベイラビリティゾーンでシステムを稼働できるようにするためです。複数のアベイラビリティゾーンにそれぞれサーバーを設置することで、災害で1つのサーバーがダメになっても、他のサーバーがあるのでシステムを稼働し続けることができます。
VPC(Virtual Private Cloud)とは
VPCとは、 AWS上にプライベートな仮想ネットワークを作成できるサービス のことです。VPCを使うことで、他とは分離されたネットワーク環境を自由に作ることができます。
AWSで作業する場合、まずリージョンの中にVPCを作成します。そのVPCの中で複数のアベイラビリティゾーンを選択することができます。また、VPCの中のアベイラビリティゾーンの中で、プライベートなネットワークやパプリックなネットワークを作ることができます。これらのネットワークはサブネットと呼ばれます。
(注)ややこしいのですが、VPCで作った仮想ネットワークのことをVPCとも呼びます。
サブネットマスク表記とサブネットの違い
この2つの言葉は似ていますが、意味が全く違います。
- サブネットマスク表記
サブネットマスク表記とは、IPアドレスのネットワーク部がどこまでかを表す表記法のことです。IPアドレスの範囲を表記する方法とも言えます。 - サブネット
サブネットとは、ネットワーク内のネットワークを分割した小さなネットワークのことです。ネットワークを区切りたいときに使用します。 VPCで作ったネットワークは、IPアドレスの範囲が広いので、サブネットを使って小さいIPアドレスの範囲にすることができます。 AWSでサーバーを作るときはサブネットの中に配置します。
(注) サブネットはアベイラビリティゾーンの中に作っていきます。複数のアベイラビリティゾーンにサブネットを作ってそれぞれにサーバーを設置することで、災害で1つのアベイラビリティゾーンがダメになっても、安定してサービスを提供することができます。
VPC内のアベイラビリティーゾーンにサブネットを作るメリット
サブネットを作るメリットは、以下の2点が考えられます。
サブネットを作ることで、VPC内にパブリックな領域とプライベートな領域を作ることができます。
IPアドレスとは
IPアドレスとは、 インターネット上のコンピュータに割り当てられる識別番号 です。
IPアドレスには「どのネットワークの、どのコンピュータであるか」という情報が書かれています。「どのネットワーク」の部分は「ネットワーク部」、「どのコンピュータ」の部分は「ホスト部」と呼ばれます。 ネットワーク部は固定されていて、ホスト部は可変です。 ホスト部は可変なので、そのネットワーク内で可変に設定できます。
IPアドレスの3つの特徴
- 重複しない番号である
- 32ビットの整数値で構成されている そのままだと読みにくいので、32ビットのIPアドレスを8ビットずつの4つの組みに分け、ピリオドを入れて10進数で表現します。
- IPアドレスとして利用できる範囲は、0.0.0.0 ~ 255.255.255.255までである
パブリックIPアドレスとプライベートIPアドレス
IPアドレスは2種類存在します。 一つがパブリックIPアドレス、もう一つがプライベートIPアドレスです。
パブリックIPアドレスの3つの特徴
- パブリックIPアドレスとは、インターネットに接続する際に使用するIPアドレスです。
- 重複すると正しく通信できないので、ICANN(アイキャン)という団体が管理しています。
- プロパイダーやサーバー事業者から貸出されます(AWSを使用する場合、AWSから貸出される)。
プライベートIPアドレスの3つの特徴
- ブライベートIPアドレスとは、インターネットで使用されないIPアドレスです。
- 下記範囲内のアドレスを自由に使用することができます。
- 社内LANの構築やネットワークの実験時等、インターネットを使用しないときにプライベートIPアドレスを使用します。
プライベートIPアドレスの利用範囲 |
---|
10.0.0.0 ~ 10.255.255.255 |
172.16.0.0 ~ 172.31.255.255 |
192.168.0.0 ~ 192.168.255.255 |
IPアドレスの範囲を表記する2種類の方法
プライベートIPアドレスの範囲をいちいち10.0.0.0 ~ 10.255.255.255と書くのはめんどくさいです。実はIPアドレスの範囲には2種類の表記法があります。
(注)CIDR表記もサブネットマスク表記のどちらも、IPアドレスの範囲を表記する方法です。あと、この表記法を使う場合、ホスト部は0にします。
表記法1: CIDR表記
CIDR表記とは、ホスト部を0にしたIPアドレスの後ろに/を書き、 ネットワーク部が先頭から何ビット目まで なのかを記載する表記法です。CIDR表記のIPアドレスの範囲のことをCIDRブロックとも呼びます。
例) 192. 168. 128. 0/24
これは192.168.0.0 ~ 192.168.255.255のIPアドレスの範囲をCIDR表記にしたものです。 この場合、ネットワーク部は先頭の24桁で、ホスト部は8桁であることがわかります。つまり、ホスト部が8桁なので、このネットワークでは256個のIPアドレスを使用することができます。
(※)CIDRはサイダーと読みます。
表記法2: サブネットマスク表記
サブネットマスク表記とは、ホスト部を0にしたIPアドレスの後ろに/を書き、ネットワーク部を表すビットを1、ホスト部を表すビットを0にしたものを書く表記法のことです。(10進数に直す)
例) 192.168.128.0/255.255.255.0
これは192.168.0.0 ~ 192.168.255.255のIPアドレスの範囲をサブネットマスク表記はにしたものです。このサブネットマスク表記から、このネットワークで利用できるIPアドレスは256個であることがわかります。
ホストとは
ホストとは、ネットワークに接続されたコンピュータのことです。
インターネットゲートウェイとは
インターネットゲートウェイとは、VPCとインターネットを接続するための仮想のルーターです。 インターネットゲートウェイはVPCに設定するものであり、VPCの画面からインターネットゲートウェイを作成できます。
東京リージョンにIPアドレスの範囲が10.0.0.0/16のVPCを作成する
東京リージョンにIPアドレスの範囲が10.0.0.0/16のVPCを作成します。
VPCの作成手順
手順1:
IAMユーザー用のマネジメントコンソールを用います。検索バーにVPCと入力して検索します。この時リージョンを東京リージョンに設定しておきます。左サイドバーの「お使いのVPC」をクリックして、その後、「VPCを作成」をクリックします。
手順2:
名前タグにはVPCを識別するための名前を入力します。その後、IPv4 CIDR ブロックにVPCで使えるIPアドレスの範囲を設定します。IPv6 CIDR ブロックをなし、テナンシーをデフォルトにします。最後に「VPCを作成」をクリックします。
(※)テナンシーとは物理ハードウェアを占有するためのオプションです。
マネジメントコンソールを見ると、blog-test-vpcという名前のVPCが作成されていることがわかります。
VPC内のアベイラビリティゾーンにサブネットを作る
サブネットの作成手順
手順1:
IAMユーザー用のマネジメントコンソールで 、VPCの設定画面を開きます。その後、「サブネット」をクリックして、「サブネットを作成」をクリックします。
手順2:
サブネットを作成したいVPCを選択します。名前タグにはサブネットを識別する名前をつけます。blog-test-subnet-1aという名前にしました(アベイラビリティゾーンには1aを選択しようと思うので、名前の語尾に1aをつけてます)。次にサブネットを作るアベイラビリティゾーンを指定します。今回はap-northeast-1aにします。CIDRブロックには、サブネットで使えるIPアドレスの範囲を指定します。今回は10.0.10.0/24にします。その後、「サブネットを作成」をクリックします。これでVPC内のap-northeast-1aというアベイラビリティゾーンにサブネットを作成できました。
プラベートサブネットを作りたい場合、同様の手順でプラベートサブネットも作ります。プライベートサブネットなので、サブネット名をblog-test-private-subnet-1aにしました。 サブネットを作成しただけだと、サブネットはインターネットに接続できるようになっていません。サブネットをインターネットに繋げればパブリックなサブネットになりますし、つなげなかったら、プライベートなサブネットになります。サブネットをインターネットにつなげたい場合、VPCにインターネットゲートウェイを設置して、デフォルトルートのターゲットがインターネットゲートウェイであるようルートを持つルートテーブルを作成して、そのルートテーブルをサブネットに関連づける必要があります。
ルーティングを設定する
パブリックサブネットがインターネットに接続できるようにするために、ルーティングを設定します。
ルーターとは
ルーターとは、 ネットワークとネットワークを接続する機械 のことです。 ルーターはIPアドレスがどのデバイスと紐づいているのか、IPアドレスがどのネットワークに所属しているのかを管理しているデバイスです。
ルーティングとは
ルーティングとは、ルーターが正しい宛先に導く作業のことです。
(※)インターネット上にはルーターと呼ばれるものがあります。ルーターはルートテーブルを持っており、そこにはどのネットワークがどのIPアドレスを持っているかが書かれています。
ルートテーブルの設定方法
ルートテーブルは、「宛先のIPアドレス」と「次のルーター(AWSではターゲットと呼ぶ)」という書式で設定します。
宛先IPアドレス | 次のルーター(AWSではターゲット) |
---|---|
10.0.1.0/24 | local |
10.0.2.0/24 | ルーターB |
0.0.0.0/0 | ルーターC |
(※)localとは自身のネットワークのことです。また、 0.0.0.0/0はデフォルトルートと呼び、ルートテーブルのどのIPアドレスにも当てはまらない場合に選択される経路です。
パブリックサブネット用のルートテーブルを作成して、インターネットゲートウェイと接続するようなルーティングを作成する
(※)インターネットゲートウェイを作成してないので、インターネットゲートウェイを作成してVPCに設置します。
(注) ルートテーブルはVPCと各サブネットに設定できます。サブネットごとにルーティングの設定をします。ルートテーブルを作成するときは必ずVPCを指定するので気をつけましょう。また、サブネットに対してルートテーブルを作成すると暗黙的にサブネットに対応するルーターを設置したことになります。
ルーティングの作成手順
手順1:
IAMユーザー用のマネジメントコンソールでVPCの設定画面を開き、左サイドバーにあるインターネットゲートウェイをクリックします。その後、「インターネットゲートウェイの作成」をクリックします。
手順2:
名前タグにインターネットゲートウェイの名前を入力して、作成をクリックします(blog-test-igwという名前にしました)。
手順3:
インターネットゲートウェイを作成しただけでVPCとデタッチの状態なので、アタッチします。VPC設定画面の「インターネットゲートウェイ」をクリックして、VPCにアタッチさせたいインターネットゲートウェイを選択します。その後、アクションをクリックして、「VPCにアタッチ」をクリックします。インターネットゲートウェイをアタッチさせたいVPCを選択して、インターネットゲートウェイのアタッチをクリックしたらアタッチ成功です。
手順4:
次にパブリックサブネット用のルートテーブルを作成します。パブリックサブネット用のルートテーブルを作成して、パブリックサブネットに紐づけます。VPC設定画面から「ルートテーブル」をクリックします。その後、ルートテーブルの作成をクリックします。 ルートテーブルの名前はblog-test-public-routeにします。その後、ルートテーブルを紐づけるVPCを選択して「ルートテーブルを作成」をクリックします。
手順5:
VPCに関連づけたルートテーブルをVPC内のパブリックサブネットにも関連づけます。先ほど作成したルートテーブルを選択して、画面下のサブネットの関連づけをクリックします。
手順6:
「サブネットの関連付けを編集」をクリックします。ルートテーブルと関連づけたいサブネットを選択して保存をクリックします。
手順7:
ルートを編集したいルートテーブルをクリックして、「ルート」をクリックします。その後、「ルートの編集」をクリックします。デフォルトルート(0.0.0.0/0)の場合、ターゲットがインターネットゲートウェイになるようなルートをルートテーブルに設定します。その後、「変更を保存」をクリックします。
以上で、パブリックサブネットにデフォルトルートのターゲットがインターネットゲートウェイであるようなルートテーブルを紐づけることができました。これによりパブリックサブネットからインターネットに接続できます。
VPC設計の3つのポイント
- VPCにはプライベートIPアドレスの範囲を指定する
VPCはプライベートな仮想ネットワークなので、パブリックIPアドレスを指定することもできますが、プライベートなIPアドレスの範囲を指定します。 - IPアドレスの範囲はVPC作成後には変更できないので、初めから大きめに指定する
/16が推奨です。 - オンプレミスとIPアドレスが重複しないようにする
VPCを分けるか、アカウントを分けるか
異なるシステムの場合、1つのアカウント内で管理していると煩雑になるので、アカウントを分けた方が良いです。同一システムで環境が異なる場合(テスト環境、本番環境)、同一アカウントで環境ごとにVPCを作成します。
サブネットの設計の2つのポイント
- 将来的に必要なIPアドレス数を見積もる
後で足りなくなると困るので、やや広めに取ります。/24が標準的です。 - サブネットの分割はアベイラビリティゾーンとルーティンポリシーを基準に行う
サブネットに割り当てられるルートテーブルは一つです(逆に一つのルートテーブルは複数のサブネットに割り当てることができます)。 それを考慮してインターネットアクセスの有無や拠点アクセスの有無などのルーティングポリシーに応じて分割します。また、耐障害性を考えて別のアベイラビリティゾーンにWebサーバーを立てたい場合、各アベイラビリティゾーンにサブネットを作成します。
パブリックサブネットを別のアベイラビリティゾーンに追加で作成し、そのパブリックサブネットに今回作成したルートテーブルをアタッチする
アベイラビリティゾーンは、ap-northeast-1cにしました。 パブリックサブネットにルートテーブルをアタッチすることで、 作成後、以下のようなネットワーク構成になりました。
参考記事
AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得 | Udemy
AWS再入門2022 Amazon VPC編 | DevelopersIO
AWS Internet Gatewayとは?初心者にもわかりやすく説明します | FEnet コラム for AWS