はじめに
初めまして。新入社員の古田彩葉です。
今回はAWSでVPC(Virtual Private Cloud)を一から構築する手順を紹介します。
「VPCって何?」「パブリックサブネットやインターネットゲートウェイって何に使うの?」といった疑問を持ちながら、初めてVPC構築に挑戦する方に向けて、できるだけわかりやすくまとめてみました!
AWSのネットワークの構築を初めて体験する方、実際に手を動かして学びたい方の参考になればうれしいです。
【目次】
1.VPCを作成する。
2.パブリックサブネットを作成する。
2.1.パブリックサブネットを作成する。
2.2.サブネットの設定を編集する。
3.インターネットゲートウェイを作成する。
3.1.インターネットゲートウェイを作成する。
3.2.インターネットゲートウェイをVPCにアタッチする。
4.ルートテーブルを作成し、ルートを追加してパブリックサブネットを関連付ける
4.1.ルートテーブルを作成する。
4.2. ルートを編集・追加する。
5.ウェブサーバのセキュリティグループを作成する。
概要
Amazon Virtual Private Cloud(VPC)とは、AWSにおける仮想プライベートネットワークのことです
Amazon VPCでは、Amazon Web Services(AWS)クラウド内で論理的に分離したセクションをプロビジョニングし、自分で定義する仮想ネットワークでAWSリソースを起動できます。自分のIPアドレス範囲の選択、サブネットの作成、ルートテーブルとネットワークゲートウェイの設定など、仮想ネットワーキング環境を完全に制御できます。
さらにVPCではIPv4とIPv6の両方を使用でき、リソースとアプリケーションに安全かつ簡単にアクセスできます。
IPv4
|
IPv6
|
32ビットで構成されドット区切りの4つの10進数
|
128ビットで構成され、コロン区切りの16進数
|
約43億の一意のIPアドレスを提供
|
ほぼ無限に近いIPアドレス(2^128)
|
手動設定やDHCPを使用して行われる
|
ステートレスアドレス自動設定
|
IPsecがオプション
|
IPsecが標準で組み込まれている
|
インターネット上で広く使用。互換性が高い
|
IPv6対応のネットワークインフラとデバイスが必要
|
目標
・Amazon VPCを作成
・パブリックサブネット作成
・インターネットゲートウェイを作成
・ルートテーブルを作成し、インターネットへのルートを追加
・ウェブサーバ用のセキュリティグループを作成し、ウェブサーバへのHTTPトラフィックのみを許可する
1.VPCを作成する。
Amazon VPCを使用すると、論理的に隔離されている定義済みの仮想ネットワーク内でAWSリソース(EC2インスタンスなど)を起動することができます。
IPアドレスの範囲の変更、サブネットの作成、ルートテーブル、ネットワークゲートウェイ、セキュリティグループの設定によりVPCを設定できます。仮想ネットワークは、お客様自身のデータセンターで運用されていた従来のネットワークによく似ていますが、AWSのスケーラブルなインフラストラクチャを使用できるというメリットがあります。
以下の図はVPCの例を示しています。VPCにはリージョンの各AZに1つのサブネット、各サブネットにEC2インスタンス、VPC内のリソースとインターネットとの通信を可能にするインターネットゲートウェイがあります。
1では、赤枠のVPCを作成します。
①AWSマネジメントコンソール上部の検索バーでVPCを検索します。
②VPCを作成をクリックします。
③VPCの作成をクリックし、[VPCの作成]ページで、以下のように設定します。
・[作成するリソース]でどちらかを選択
※VPCのみ→VPCだけ作成
VPCなど→ネットワーク構成がまとめて作成
学習用やスピード重視ならば「VPCなど」がおすすめ
・[名前タグ-オプション]に名前を入力(名前は自分で設定)
・[IPv4 CIDRブロック]でIPv4 CIDRブロックを指定
- IPAM:AWSでIPアドレス空間(IPv4,Ipv6)を一元管理するサービス
- 割り当てを選択するとIPAMにプロビジョニングされたCIDRからCIDRが割り当てられます。
・[IPv4 CIDR]にはVPCのネットワーク範囲を設定
※すでに他のVPCやVPN、オンプレミスネットワークで使用しているアドレスとは重複しないように注意する。
※CIDR…従来のクラスベースのIPアドレス体系を拡張して、より柔軟で効率的なIPアドレスの割り当てを実現
※現在薄く書かれている「10.0.0.0/24」はプライベートサブネットを表す。
プライベートアドレス空間には以下のIPアドレスが推奨される
- 10.0.0.0 - 10.255.255.255 (10/8 プレフィックス)
- 172.16.0.0 - 172.31.255.255 (172.16/12 プレフィックス)
- 192.168.0.0 - 192.168.255.255 (192.168/16 プレフィックス)
・[IPv6 CIDRブロック]で選択
※このオプションはVPCにIPv6 CIDR ブロックが関連付けられている場合にのみ使用できます。
- IPv6 CIDR ブロックなし:リソースにIPv6アドレスブロックが割り当てられていない状態
- IPAM割り当てのIPv6 CIDRブロック:AWS IPAMによって割り当てられたIPv6ブロック
- Amazon提供のIPv6 CIDRブロック:AWSが管理しているIPv6プレイフィックスからAWSがユーザに割り当てたIPv6ブロック
- IPv6 CIDR所有:ユーザ自身が所有するIPv6プレフィックスをAWSに持ち込んで使うケース
・[テナンシー]を選択
※テナンシー:AWSのEC2インスタンスがどの物理ホスト上で動作するか(共有か専有か)を指定するオプション
- デフォルト(共有ハードウェア):EC2インスタンスはAWSの管理するマルチテナント環境に配置。
- 物理ホストを他の顧客共有
- 専有:インスタンスは専用ホスト(他の顧客と共有しない物理サーバ)上で動作
コンプライアンスや監査要件が厳しい業界で使用
・[タグ]で(必要があれば)タグの追加
※タグ:AWSリソースにつける「キー=バリュー形式のラベル」
タグをつけることで管理しやすく・分析しやすく・安全に運用できる。
※キーバリュー:データを「キー(key)」と「バリュー(value)」のペアで管理する形式
④VPCを作成をクリックします。
以上でVPCは作成完了です。
続いてパブリックサブネットを作成します。 主に、インターネットと通信させるためです。
2.パブリックサブネットを作成する。
サブネットはVPC内のIPアドレスの範囲です。1つの大きなネットワークを複数の小さなネットワークに分けることを指します。
特定のサブネットにはEC2インスタンスなどのAWSリソースを作成できます。インターネットに接続する必要があるリソースには、パブリックサブネットを使用し、インターネットに接続しないリソースには、プライベートサブネットを使用します。
サブネットは下図の部分です。
2.1.パブリックサブネットを作成する。
①左側のナビゲーションペインの[仮想プライベートクラウド]で、[サブネット]をクリックします。
②サブネットを作成をクリックします。
③[サブネット作成]ページで、以下の設定をします。
・[VPC ID]で、ドロップダウンメニューから[1で作成したVPC名]を選択
・[サブネット名]に名前を入力(名前は自分で設定)
・[アベイラビリティゾーン]でAZを選択
冗長性を考慮して複数のAZにまたがるサブネットを作るとベター。どのAZを選択してもOK。
※アベイラビリティゾーン(AZ):サブネットを配置する物理的なゾーン
・[IPv4 VPC CIDR ブロック]にサブネットのVPCのIPv4 CIDRブロックを選択。
※サブネットの IPv4 アドレスブロックを CIDR 形式 (10.0.0.0/24 など) で指定します。IPv4 ブロックサイズは /16 ネットマスクと /28 ネットマスクの間にする必要があり、VPC の IPv4 CIDR ブロック以下である必要があります。
・[IPv4 サブネット CIDR ブロック]にサブネットに割り当てるIPアドレスの範囲を入力
※他のサブネットと被らないように設定
・[タグ-オプション]でタグを追加する。
※必要な人だけ
※タグ:リソース(この場合はサブネット)に名前やメタデータをつけるための仕組み
タグを追加する際はキーと値を設定する。
④サブネット作成をクリックします。
2.2.サブネットの設定を編集する。
①[作成したサブネット名]をクリックします。
②[アクション]メニューで、[サブネットの設定を編集]を選択します。
③[サブネットの設定を編集]ページで次の操作を行います。
・[IPアドレスの自動割り当て設定]で、[Enable auto-assign public IPv4 address]をクリック
→パブリックIPv4アドレスの自動割り当てを有効にしている。
→この操作をすることで、インスタンスに自動的にパブリックIPアドレスが割り当てられる。
※有効にするとインスタンスが外部からアクセス可能になるため、セキュリティに注意。Webサーバなどは有効化が必須。
④保存をクリックします。
※パブリックサブネットが作成されましたが、まだパブリックサブネットではありません。(矛盾している)
→パブリックサブネットにはインターネットゲートウェイが必要です。
3.インターネットゲートウェイを作成する。
インターネットゲートウェイとは、AWSのVPC(仮想プライベートクラウド)内のリソースがインターネットと通信できるようにするためのコンポーネントです。これにより、VPC内のインスタンス(EC2など)が外部のインターネットと接続できるようになります。冗長性と高い可用性を備えており、水平スケーリングが可能です。
下図の部分です。
3.1.インターネットゲートウェイを作成する。
①左側のナビゲーションペインの[仮想プライベートクラウド]で、[インターネットゲートウェイ]をクリックします。
②インターネットゲートウェイの作成をクリックします。
③[インターネットゲートウェイの作成]ページで、以下の操作を行います。
・[名前タグ]に名前を入力(名前は自分で設定)
④インターネットゲートウェイの作成をクリックします。
3.2.インターネットゲートウェイをVPCにアタッチ
①[アクション]メニューで[VPCにアタッチ]を選択します。
②[使用可能なVPC]検索ボックスで[1で作成したVPC名]をクリックします。
③インターネットゲートウェイのアタッチをクリックします。
※インターネットゲートウェイを作成してVPCにアタッチしましたが、インターネットゲートウェイを作成しただけで、まだインターネットへの接続はできません。
→パブリックサブネットのルートテーブルにデフォルトルート(0.0.0.0/0)を追加する必要があります。
4.ルートテーブルを作成し、デフォルトルートを追加してパブリックサブネットを関連付ける 。
ルートテーブルには、サブネットまたはゲートウェイからのネットワークトラフィックの経路を判断する、ルートと呼ばれる一連のルールが含まれます。
ルートテーブルがサブネットのルーティングを制御するため、VPCの各サブネットはルートテーブルに関連付けられている必要があります。
インターネットゲートウェイを使用するには、インターネットに送信されているトラフィックをインターネット経由で送信するルートをサブネットのルートテーブルに追加する必要があります。ルートの範囲として、ルートテーブルで明示的に既知ではないすべての送信先(IPv4・0.0.0.0/0、IPv6・::/0)を指定するか、特定のIPアドレスの範囲を指定できます。サブネットが、インターネットゲートウェイへのルートを持つルートテーブルと関連付けられている場合、パブリックサブネットといいます。
※現在VPCに関連付けれているデフォルトのルートテーブルが1つあります(3.2)。これにより、トラフィックはローカルにルーティングされています。
ここからはパブリックトラフィックをインターネットゲートウェイにルーティングするための別のテーブルを作成します。このテーブルをゲートウェイルートテーブルといいます。このテーブルを作成することにより、VPCに入るトラフィックのルーティングパスを細かく制御できます。
下図の部分を作成します。
4.1.ルートテーブルを作成します。
①左側のナビゲーションペインの[仮想プライベートクラウド]で、[ルートテーブル]をクリックします。
②ルートテーブルを作成をクリックします。
③[ルートテーブルの作成]ページで、以下のように操作します。
・[名前-オプション]にルートテーブルの名前を入力(自分で設定)
・[VPC]で、ドロップダウンメニューから[1で作成したVPC名]を選択。
・[タグ]で、必要に応じてタグを追加する。
④ルートテーブルを作成をクリックします。
※ルートテーブルには10.0.0.0/16ネットワーク内のトラフィックがネットワーク内を流れることを許可する1つのルートがありますが、このルートはトラフィックをネットワークの外側にルーティングしません。
次に、パブリックトラフィックを有効にする新しいルートを追加します。
4.2. ルートを編集・追加する。
①作成したルートテーブルを選択し、ページ下部の[ルート]タブをクリックして、ルートを編集をクリックします。
②ルートを追加をクリックします。
③[ルートの編集]ページで、以下のように操作します。
・[送信先]に0.0.0.0/0と入力
→これは全IPアドレスを表す特別な送信アドレス
・[ターゲット]でドロップダウンから[インターネットゲートウェイ]を選択し、次に3で作成したインターネットゲートウェイを選択
※これを設定することで、外部アクセスが可能になる
④変更の保存をクリック
⑤[サブネットの関連付け]タブをクリック
⑥[明示的なサブネットの関連付け]セクションでサブネットの関連付けを編集をクリック
⑦[2で作成したパブリックサブネット名]をクリック
⑧関連付けを保存をクリック
※この操作でサブネットはインターネットゲートウェイ経由でインターネットに接続されているためパブリックサブネットになりました。関連付けをしなければ作成したルートテーブルは誰にも使われません。
5.ウェブサーバのVPCセキュリティグループを作成。
セキュリティグループとはEC2インスタンスの仮想ファイアウォールとして機能し、インバウンド・アウトバウンドトラフィックを制御します。VPCを作成すると、デフォルトのセキュリティグループが使用されます。
VPCごとに追加のセキュリティグループを作成し、それぞれに独自のインバウンドルールとアウトバウンドルールを設定することにより、トラフィックを制御することができます。VPC内で作成するインスタンスには最大5つのセキュリティグループを割り当てることができます。
下図のようにインスタンスのインバウンド・アウトバウンドトラフィックを制御します。
まず、セキュリティグループを追加して、ユーザがHTTP経由でウェブサーバーにアクセスできるようにします。
①左側のナビゲーションペインの[セキュリティ]で[セキュリティグループ]をクリック
②[セキュリティグループ作成]ページで以下の操作をします。
・[セキュリティグループ名]と[説明]にセキュリティグループの名前とその説明を入力
・[VPC]でドロップダウンメニューから[1で作成したVPC名]を選択
③[インバウンドのルール][アウトバウンドのルール]セクション(任意)
・ルールごとにルールを追加し、プロトコル、ポート、送信元を指定
・タイプ:(インバウンドを許可する)プロトコルのタイプを選択
Ex)Webサイトの場合:HTTPやHTTPS
・リソースタイプ:
- Anywhere-IPv4:0.0.0.0./0 IPv4 CIDRブロック
- Anywhere-IPv6:::/0 IPv6 CIDRブロック
- マイIP-ローカルコンピュータのパブリックIPv4アドレス
④セキュリティグループを作成をクリック
以上の操作でVPCの構築は完成です。必要に応じて
・NATゲートウェイまたはNATインスタンスの設定
→プライベートサブネットからインターネットアクセスが必要な場合
・VPCピアリング
→他のVPCとの通信
・VPCフローログの有効化
→トラフィックの監視
などを設定することができます。
今回は初心者向けの基本的なVPC作成手順であるため、上記の手順は省略させていただきます。
VPCを構築すれば、基本的な仮想ネットワークインフラが整った状態になりました。VPC構築後はEC2やデータベースを使用して
・Webサーバの構築
・データベースを使ったデータの保存・管理
・バックエンドAPIの構築
などのEC2インスタンスやAWSのデータベースサービス(AWS RDSやAWS Dynamo DB)などのAWSリソースを活用してできる具体的な機能やサービスなどのWebアプリケーションやデータベース駆動型のシステムを構築し、運用することができます。
引用
1.AWS skill Builder
2.https://docs.aws.amazon.com/ja_jp/
・サブネットの作成
・VPC とサブネットの IP アドレス指定
・インターネットゲートウェイを使用して VPC のインターネットアクセスを有効にする・ゲートウェイテーブル
・VPC 用のセキュリティグループを作成するには
・セキュリティグループのルールを設定する