サーバーサイドエンジニア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サーバー」が出来上がる。
もう少し具体的な例を図にしてみた。
ちなみに、Webサーバー用のソフトとDBサーバー用のソフトをインストールすることで、「Webサーバー兼DBサーバー」も作れるよ。
ネットワーク構築って何をするの
ネットワーク構築とは、ざっくりいうと、コンピュータ同士を安全に接続するための設定をいろいろすること。
VPC領域を作る
実世界でいうと、ルータやハブなどを用意して環境を整える作業にあたる。
VPC(Amazon Virtual Private Cloud)
ひとことで言うと、AWS上のネットワークの範囲のこと。
パブリックサブネット(インターネットに接続することを目的としたサブネット)と、プライベートサブネット(インターネットから隔離したサブネット)の2種類を作ることが多い。
こうすることで、セキュリティを高めることができる。
たとえば、DBサーバーをプライベートサブネットに配置することで、外部から攻撃を受けにくくなる。
(プライベートサブネットはインターネットから隔離してあるから)
VPC領域を作った直後は、デフォルトのルートテーブルが作られる。
サブネットを作った時も、そのサブネットのデフォルトルートテーブルが作られる。
少し踏み込んだ内容になりますが…
はじめてサブネットを作成するとき、[Availability Zone]は「No Presence」でよい。
→ランダムなアベイラビリティゾーンが自動で割り当てられるから
2つめ以降を作るときは、1つめに作ったアベイラビリティゾーン以外のアベイラビリティゾーンを選択するとよい。
→片方のアベイラビリティゾーンに障害があったときに、影響が出にくくなるから
ルーティング情報を設定する
ネットワークにデータを流すために、ルーティング情報を設定する。
この設定を、「ルートテーブル」や「ルーティングテーブル」という。
具体的には、宛先IPアドレスの値がいくつのときに、どのネットワークに流すべきかを設定する。
上の設定値の意味は、
送信先が「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・・・このインスタンス(仮想サーバ)から、外側に出ていくときの設定
→サーバーから、他のコンピュータに接続しようとするのを防ぐために設定する
踏み台サーバーを作る
踏み台サーバーとは、インターネット接続されていないサーバーにアクセスするための方法のひとつ。
これは、セキュリティ強化のための、クラウド・オンプレ環境の両方にある概念というか手法。
よくある構造は以下。
言葉にすると、
ローカル環境やインターネットから、Webサーバーにアクセスする
そして、WebサーバーからDBサーバーにアクセスして処理が行われる
このときのWebサーバーは、DBサーバーの「踏み台サーバー」になる。
どうしてわざわざ踏み台サーバーを作るか、というと、セキュリティを強化できるから。
→たとえば、踏み台サーバー以外のところからのアクセスは全て不正アクセスとする、とかできる。
でも、必要なアプリをインストールとかアップデートするときも、わざわざ踏み台サーバー経由するの手間かかるな、、、
そこでつかえる方法が、NATサーバー!
NATサーバーを利用すれば、プライベートサブネット内のサーバーからインターネットに接続できる。
NAT(Network Address Translation)サーバーを作る
NATサーバーの役割は、IPアドレスを変換すること。
IPアドレスを変換することで、「プライベートサブネット→インターネット」の向きのみ許可する通信を実現できる。
もう少し具体的にいうと、2つの仕事をしている。
① プライベートサブネット内ホストのIPアドレスを自分(NATサーバー)のIPアドレスに変換して、プライベートサブネットからの要求を接続先へに伝える
② 接続先からの応答を受け取り、宛先をプライベートサブネット内ホストのIPアドレスに変換して、インターネットからの応答をプライベートサブネット内のホストに伝える
プライベートサブネット側からの送受信はできるが、インターネット側からの送受信はできない。
プライベートサブネットにパブリックIPアドレスを割り当ててインターネット接続する(つまりインターネット側からも送受信できる状態)よりも、セキュリティを高めることができる。
参考文献と註
- [Amazon Web Services 基礎からのネットワーク&サーバー構築] (https://www.amazon.co.jp/Amazon-Web-Services-%E5%9F%BA%E7%A4%8E%E3%81%8B%E3%82%89%E3%81%AE%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E6%A7%8B%E7%AF%89/dp/4822237443)
- https://www.kagoya.jp/howto/rentalserver/serveros/
- https://qiita.com/aaaaaayyymmm/items/ecf9c198b1520c0860e0