📚

はじめてのAmazon VPC構築レポート(1)_基礎調査から設計まで

に公開

はじめてのAmazon VPC構築レポート(1)_基礎調査から設計

初めまして! 株式会社HESの望月と申します。

先日私は、会社で実施した技術合宿に参加してきました。
合宿のテーマは「ネットワークの基礎を学び、Amazon VPC上にAPサーバーを構築してみる」というものでした。

私は理工学部出身で、ネットワークの基礎講義を受けたことがあります。しかし「ややこしい分野だ」という先入観があったためか、当時からずっと苦手意識を持っていました。。。

そんな中、今回の合宿でネットワークの全体像をつかむことができ、最後にはAmazon VPC上にAPサーバーを立てることに成功しました。
その体験をみなさんに共有するために、全2回のレポートを投稿します。

1. 合宿の概要

1.1. 合宿の目標

  • ネットワークの仕組みを理解し、PCからAPサーバーまでの正しい通信シーケンス図を書けるようになる
  • Amazon VPCの基礎要素を理解し、APサーバーのネットワーク構成図を書けるようになる
  • Amazon VPC上にAPサーバー[OpenWebUI, MCPO, Dify]を構築する

1.2. 実施項目

  1. ネットワークの基礎調査 (1日目) ←本記事の内容
  2. Amazon VPCの基礎調査 (1日目) ←本記事の内容
  3. Amazon VPCの構成図を作成 (1日目) ←本記事の内容
  4. Amazon VPCをトライアンドエラーで構築 (2日目)
  5. Amazon VPCの構成図を再度作成 (2日目)

まず1日目にネットワークとAmazon VPCの基礎を調査しました。
そして1日目で得た知識を使って、自分なりの「VPC構成図」を書いてみました。
本記事ではまず、1日目に実施した内容を書いていきます。

2日目は、1日目に作成した「VPC構成図」を基にトライアンドエラーでVPCを構築しました。
最後に、トライアンドエラーの経験を基に、1日目に作った「VPC構成図」をきれいに書きなおします。
2日目に実施した内容は、次回の投稿にて共有します。

2. 実施内容 (1日目)

2.1. ネットワークの基礎調査

まずはVPCを構築するために必要なネットワークの基礎を調査しました。
大学時代の基礎のおかげで苦労はなかったですが、うっかり忘れていた部分を[メモ]として残しておきます。


1. ネットワークの種類

  • LAN:建物内などの狭い範囲のネットワーク
  • WAN:離れたLANどうしを接続した広域ネットワーク
  • インターネット:世界中のネットワークを相互接続した大規模ネットワーク

2. IPアドレス

ネットワーク上の機器の「住所」となる番号
ネットワーク上の通信の宛先を識別するために使われる
PC,スマートフォン,ルーターなどの、ネットワークに接続する機器に割り当てられている

  • プライベートIP:LANなどの閉じたネットワーク内で使う「ローカルな住所」
  • グローバルIP:インターネット上で使う「世界で一つだけの住所」

3. ポート番号

通信先(IPアドレス)の、どのプログラム(Web、メール等)に通信を届けるかを指定する「窓口番号」。
例)
  22:SSH (Secure Shell)
  80:HTTP (Web)
  443:HTTPS (Secure Web)

192.168.10.1:80のように、IPアドレスの後ろに:(コロン)をつけてポート番号を指定する。

4. DNS(Domain Name System)

通信先の「ドメイン名」(例: google.com)を「グローバルIPアドレス」に変換するシステム
例えば、AWSは「Route53」というDNSサービスを提供している


2.2. 「2. Amazon VPCの基礎要素調査」

次に、Amazon VPCの基礎要素について調査しました。
AWSについては知識が全くないため調査に苦労しましたが、VPCの構築に最低限必要な知識を得られたので以下にまとめます。

■ VPCとは?

VPC(Virtual Private Cloud)は、AWS等のパブリッククラウド内に作れる、プライベートなネットワーク空間のこと。外部ネットワークと隔離されていて出入りする通信を一括管理できるため、安全なサーバーやデータベースを配置するために使われる。

■ VPCの機能は?

VPCには、ネットワークの構成を自由に設計するための機能があります。
代表的な機能をまとめます。

  • サブネット
    VPCのネットワークを、さらに小さなネットワークに分割する機能。
    サブネットごとに役割を分けて異なるセキュリティレベルを設定したり、同じ構成のサブネットを複製して通信を分散させて可用性を向上させるために使われる。
    • パブリックサブネット
      外部インターネットから直接アクセス可能なサブネット。
      Webサーバー等、インターネットに公開するサーバーを配置する。
    • プライベートサブネット
      外部インターネットから直接アクセスできないサブネット。
      データベース等、外部から隔離したい重要なリソースを配置する。
  • インターネットゲートウェイ
    VPCの「正面玄関」で、VPCとインターネットを 双方向(出入り両方) に接続する機能。
  • NATゲートウェイ
    プライベートサブネットからインターネットに接続するための 一方通行(内から外のみ) の「出口」を提供する機能。
  • ルートテーブル
    サブネットから出ていく通信がどこへ向かうべきかを定義する「出口案内」の機能。
    サブネットごとに異なるルートテーブルを設定できる。
    例)
     パブリックサブネットの出口 → インターネットゲートウェイ
     プライベートサブネットの出口 → NATゲートウェイ

■ VPC内に配置する要素は?

VPCによってネットワーク空間ができたら、VPC内にサーバー等を配置します。VPC内で使用できる代表的なAWSのサービスをまとめます。

  • EC2
    VPCのサブネット上に仮想サーバーを構築するサービス。
    EC2で立てられたサーバーのことをEC2インスタンスと呼ぶ。
    VPCはサブネット上に立てられたEC2インスタンスにIPアドレスを割り当てる。
  • ロードバランサ
    VPCのサブネット内に配置し、外部からの通信を複数のサーバーに効率よく振り分ける「ロードバランシング」機能を提供するサービス。
    また、振り分け先のサーバが正常に動作しているかを確認する「ヘルスチェック」機能も提供している。
    用途に応じて複数のタイプが用意されている。
    • ALB(Application Load Balancer)
       VPC内のサーバーへの通信の中身を見て、適切なサーバーへ振り分ける
    • NLB(Network Load Balancer)
        VPC内のサーバーへの通信の宛先IPアドレスとポート番号を見て、適切なサーバーへ振り分ける

■ VPCのセキュリティはどのように設計する?

先述した通りVPCでは、プライベートサブネットパブリックサブネットを使い分けることで、最低限のセキュリティは担保しています。
それに加えてVPCには、有害な通信から防御する機能があります。

  • セキュリティグループ
    EC2インスタンスやALBに適用できる、仮想のファイアウォール機能。
    「送信元IPアドレス」と「宛先ポート」を指定し、その通信を「許可」するルールを設定できる。
    ステートフル(状態を記憶する)なため、「行き」の通信を許可すれば、「戻り」の通信は自動的に許可される。

  • ネットワークACL
    サブネットに適用できる、仮想のファイアウォール機能。
    サブネットとの通信を「許可」と「拒否」するルールを設定できる。
    ステートレス(状態を記憶しない)なため、「行き」と「戻り」の両方の通信ルールを個別に設定する必要がある。


2.3. 「3. Amazon VPCの構成図作成」

「2. Amazon VPCの基礎要素調査」で得られた知識を基に、自分なりの「VPCネットワーク構成図」と、「PCからEC2までのネットワーク構成図」を作成しました。

結論から言うと、1日目の知識で作成した図には **「誤り」** があります。
2日目の構築で間違いに気づきますが、どこが間違っているのかは次回の投稿で詳しく説明します。

これらの図を作成するときに考えていたことを[メモ]として残すので、
どこに間違いがあるのか考えてみてください。

■ VPCネットワーク構成図(初稿)

■ PCからEC2までのネットワーク構成図(初稿)

3. まとめ

本記事では、1日目に得た知識をまとめました。

  • ネットワークの基礎
  • Amazon VPCの基礎要素
  • Amazon VPCの構成図作成(初稿)

しかし、これらの知識にはまだ足りない部分があります。

前章の「VPCネットワーク構成図(初稿)」の 「誤り」 について、少しだけ答え合わせをすると、ロードバランサの使い方が間違っています。
本来ロードバランサは、複数のターゲット(EC2インスタンスなど)に通信を振り分け、システムの可用性(障害への強さ)を高めるために使われます。
そのためALBのターゲットは複数である必要がありますが、今回の構成ではそのようになっていません。

このような知識不足により、2日目の「4. Amazon VPCをトライアンドエラーで構築」ではたくさんの問題にぶつかりました。
2日目の試行錯誤の記録を次回の記事でまとめるので、ぜひご覧ください!

参考

記事作成にあたり、以下サイトの情報を参考にさせていただきました。

HESI :技術や日々のお仕事などを紹介します

Discussion