LoginSignup
2
2

More than 3 years have passed since last update.

AWSでサーバーとネットワーク構築を勉強してみた

Posted at

サーバーサイドエンジニア2年生の私が、書籍「Amazon Web Services 基礎からのネットワーク&サーバー構築」でインフラの基礎を学び、アウトプットとしてまとめました。
この記事を読んだ後に実際にAWSに触ってみた時、何をやっているのかざっくりわかる」ような記事を意識しました。
いろいろな方がお勧めしているとおり、ハンズオン形式でAWSだけでなくインフラの基礎も学べます。
インフラ&AWS初心者の方はぜひ!

はじめにざっくり理解

ネットワーク構築とは、コンピュータ同士を安全に接続するためにいろいろな設定をする作業
【やること】

  • VPC領域を作る
  • ルーティング情報を設定する
  • デフォルトゲートウェイを設定する

サーバー構築とは、サーバーを用意して、安全かつ安定したサーバーになるようにいろいろな設定をする作業
【やること】

  • EC2インスタンスを作る
  • サーバーにセキュリティを設定する

セキュリティ強化のために行われる当たり前のサーバー構築手法

  • 踏み台サーバーを作る
  • NAT(Network Address Translation)サーバーを作る

前提知識

今回利用するサービスは、VPCとEC2です。2つだけ。
VPCはネットワーク構築、EC2はサーバー構築に関するサービスです。
はじめに、AWSの専門用語2つと、IPアドレス、サーバーについて整理します。

リージョン(Region)

これはAWSの専門用語。
世界で10か所のデータセンター群があり、その一つ一つのデータセンター群の事をリージョンという。
たとえば、「オレゴンリージョン」「東京リージョン」がある。
実際に運用する時は、エンドユーザに近いリージョンを選ぶとよい(レスポンスがよくなる)。
2020年5月現在、日本のリージョンは「東京リージョン」のみ。
AWS公式によると、「大阪リージョン」が近日開始するとのこと。1

アベイラビリティゾーン(Availability Zone:AZ)

これもAWSの専門用語。
リージョンがさらに分割された区域のこと。耐障害性のために、リージョンの中に分散している。
たとえば、「ap-northeast-1(アジアパシフィックの東京)」「ap-northeast-2(アジアパシフィックのソウル)」「us-east-1(米国東部のバージニア北部)」などがある。
実際に運用する時は、耐障害性を高めるために、複数のアベイラビリティゾーンに同じサーバーを置いて負荷分散するとよい(AWS公式が推奨している)。

IPアドレス

ネットワークに繋がれているコンピュータやネットワーク機器に割り振られる、一意の番号のこと。インターネット上の住所ともいえるよ。
IPアドレスは大きく2種類。

パブリックIPアドレス(グローバルIPアドレス)

  • インターネットに接続するときにつかうIPアドレスのこと
  • ICANN(Internet Corporation for Assigned Names and Numbers)という団体が管理している
  • AWSでは「パブリックIPアドレス」という名称がつかわれているよ

プライベートIPアドレス

  • インターネットで使われないIPアドレスのこと
  • だれも管理してないから、自由に使っていい
  • 例えば、社内LANを構築する時に使ったり、個人の学習用として使える
  • だいたいは、10, 172, 192 のどれかからはじまる

サーバー

LinuxとかWindows ServerとかのサーバーOSがインストールされたコンピューターのこと。
サーバーOSとは、サーバー用に作られたOSのこと。
たくさんのユーザ(=クライアント)からの接続要求に答えたり、常時安定した稼働を実現するなど、クライアントに対してサービスを提供することに特化している。
サーバーに専用のソフトウェアをインストールすることで、「Webサーバー」とか「DBサーバー」が出来上がる。
もう少し具体的な例を図にしてみた。
スクリーンショット 2020-04-12 18.01.50.png

ちなみに、Webサーバー用のソフトとDBサーバー用のソフトをインストールすることで、「Webサーバー兼DBサーバー」も作れるよ。

ネットワーク構築って何をするの

ネットワーク構築とは、ざっくりいうと、コンピュータ同士を安全に接続するための設定をいろいろすること

VPC領域を作る

実世界でいうと、ルータやハブなどを用意して環境を整える作業にあたる。

VPC(Amazon Virtual Private Cloud)

ひとことで言うと、AWS上のネットワークの範囲のこと。
パブリックサブネット(インターネットに接続することを目的としたサブネット)と、プライベートサブネット(インターネットから隔離したサブネット)の2種類を作ることが多い。
こうすることで、セキュリティを高めることができる。
たとえば、DBサーバーをプライベートサブネットに配置することで、外部から攻撃を受けにくくなる。
(プライベートサブネットはインターネットから隔離してあるから)

VPC領域を作った直後は、デフォルトのルートテーブルが作られる。
サブネットを作った時も、そのサブネットのデフォルトルートテーブルが作られる。

少し踏み込んだ内容になりますが…
はじめてサブネットを作成するとき、[Availability Zone]は「No Presence」でよい。
 →ランダムなアベイラビリティゾーンが自動で割り当てられるから
2つめ以降を作るときは、1つめに作ったアベイラビリティゾーン以外のアベイラビリティゾーンを選択するとよい。
 →片方のアベイラビリティゾーンに障害があったときに、影響が出にくくなるから

ルーティング情報を設定する

ネットワークにデータを流すために、ルーティング情報を設定する。
この設定を、「ルートテーブル」や「ルーティングテーブル」という。
具体的には、宛先IPアドレスの値がいくつのときに、どのネットワークに流すべきかを設定する。
スクリーンショット 2020-04-13 0.31.49.png

上の設定値の意味は、

送信先が「10.0.0.0/16」に含まれるIPアドレスのパケットであれば、VPC領域のルーターに接続されている相手への通信と判断するよ。
だから、VPC領域のルータ(今回はlocal)にパケットを転送するよ。

デフォルトゲートウェイを設定する

デフォルトゲートウェイとは、転送先が設定されてないときのデフォルトの転送先のこと。
「0.0.0.0/0」は、すべてのIPアドレス範囲を表す。
つまり、「0.0.0.0/0」に対するターゲットの設定は、デフォルトゲートウェイとして機能する。
このデフォルトゲートウェイを、インターネットゲートウェイに設定すれば、インターネットに接続できる。

先ほどの2工程、「ルーティング情報を設定」と「(インターネットゲートウェイとしての)デフォルトゲートウェイを設定」をすることで、インターネットに接続できる状態になる。

サーバー構築って何をするの

サーバー構築とは、ざっくりいうと、サーバーを用意して、安全かつ安定したサーバーになるように設定をいろいろすること
ただ作ればいいってもんじゃないの。

EC2インスタンスを作る(立てる)

つまりサーバーを立てるってこと。

EC2(Amazon Elastic Compute Cloud)

平たく言うと、サーバーのこと。
もう少し詳しくいうと、AWSの仮想サーバーのこと。
だからインスタンスのことは仮想サーバーと読み替えても問題ない。
AWSで作ったサーバーのことをインスタンスという。
「AWSで作ったサーバー」とざっくり言った理由は、EC2の他にもRDS(DB構築&管理できるサービス)やEB(Elastic Beanstalk:アプリのデプロイや管理を自動でしてくれるサービス)などからもインスタンスが作成できるから。
インスタンスを作るときは、
 ・CPUのスペック
 ・ディスクの容量
 などが決められる。
高性能なインスタンスを作る場合は課金が必要。

サーバーにセキュリティを設定する

AWSでは、「セキュリティグループ」で設定する
「Inbound」「Outbound」の2種類設定できる

  • Inbound・・・外から、このインスタンス(仮想サーバ)に接続するときの設定
    →誰かが接続しようとしているのを排除するために設定する

  • Outbound・・・このインスタンス(仮想サーバ)から、外側に出ていくときの設定
    →サーバーから、他のコンピュータに接続しようとするのを防ぐために設定する

踏み台サーバーを作る

踏み台サーバーとは、インターネット接続されていないサーバーにアクセスするための方法のひとつ。
これは、セキュリティ強化のための、クラウド・オンプレ環境の両方にある概念というか手法。
よくある構造は以下。
スクリーンショット 2020-05-05 1.10.35.png

言葉にすると、

ローカル環境やインターネットから、Webサーバーにアクセスする
そして、WebサーバーからDBサーバーにアクセスして処理が行われる

このときのWebサーバーは、DBサーバーの「踏み台サーバー」になる。
どうしてわざわざ踏み台サーバーを作るか、というと、セキュリティを強化できるから。
→たとえば、踏み台サーバー以外のところからのアクセスは全て不正アクセスとする、とかできる。

でも、必要なアプリをインストールとかアップデートするときも、わざわざ踏み台サーバー経由するの手間かかるな、、、
そこでつかえる方法が、NATサーバー!
NATサーバーを利用すれば、プライベートサブネット内のサーバーからインターネットに接続できる。

NAT(Network Address Translation)サーバーを作る

NATサーバーの役割は、IPアドレスを変換すること。
IPアドレスを変換することで、「プライベートサブネット→インターネット」の向きのみ許可する通信を実現できる。

もう少し具体的にいうと、2つの仕事をしている。

① プライベートサブネット内ホストのIPアドレスを自分(NATサーバー)のIPアドレスに変換して、プライベートサブネットからの要求を接続先へに伝える
② 接続先からの応答を受け取り、宛先をプライベートサブネット内ホストのIPアドレスに変換して、インターネットからの応答をプライベートサブネット内のホストに伝える

図解もしてみた。
スクリーンショット 2020-05-05 1.47.44.png

プライベートサブネット側からの送受信はできるが、インターネット側からの送受信はできない。
プライベートサブネットにパブリックIPアドレスを割り当ててインターネット接続する(つまりインターネット側からも送受信できる状態)よりも、セキュリティを高めることができる。

参考文献と註

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2