初心者が押さえておきたい、AWSネットワーク構成要素

AWSでネットワークに関する作業をする際、知っておくべき構成要素について解説します。AWSを使う上で、「ネットワーク構築とは具体的に何をするのか?」「トラブル時にどこを確認したらよいのか?」など判断できる知識が必要です。

物理的な拠点

Region|拠点都市

Region(リージョン)とは拠点都市のことを言います。

  • 東京リージョン(ap-northeast-1)
  • 北バージニアリージョン(us-east-1)

など、世界中に拠点が作られています。
Region同士は インターネットで接続 されます。

AZ|データセンター

Region内に複数のAZ(アベイラビリティゾーン)が用意されています。
同一Region内のAZ同士は 高速な通信線で接続 されています。

何のためにAZは存在する?

耐障害性を高めるためです。
例えば、AZ(1a)で障害が発生したとき、AZ(1c)を利用するといった障害対策をとることができます。

構成図

後述するVPC、サブネットなどのイメージが湧きやすいように大まかな構成図を示します。

266-aws-network_sample.png

VPC|独立したネットワーク

リージョンに VPC(Virtual Private Cloud) という独立したネットワークを構成できます。
VPCを構成する際、VPC全体で利用できるIPアドレス範囲を設定します。

サブネット|目的ごとのネットワーク

VPCの中でIPアドレスを切り分けて、いくつかのネットワークに分割できます。
分割したネットワークのことを サブネット と言います。
サブネットは、 1つのアベイラビリティゾーン上に作成 できます。

どういったサブネットが必要なの?

よくある構成を紹介します。
(VPC全体のIPアドレス範囲を 10.0.0.0/16 としています。)

サブネット インターネットに公開 AZ ネットワーク範囲
pub-subnet-a 1a 10.0.1.0/24
pub-subnet-c 1c 10.0.2.0/24
pri-subnet-a × 1a 10.0.3.0/24
pri-subnet-c × 1c 10.0.4.0/24

耐障害性を高めるために複数のAZにサブネットを構築します。

セキュリティの観点から、DBなどはインターネットに公開させたくありません。そのため、インターネットから 直接通信できるサブネット直接通信できないサブネット を構築します。

IGW|インターネットに接続

VPC内のインスタンスがインターネットに接続するには、 IGW(Internet Gateway) をVPCに紐づける必要があります。

ルートテーブル|転送先を設定

IGWをVPCに紐づけただけでは、サブネットからインターネットにアクセスできません。
なぜなら、IGWへ転送する経路設定ができていないからです。

サブネットをインターネットに繋げる手順を確認します。

1. デフォルトゲートウェイをIGWに転送するルートテーブルを作成

以下のようにルートテーブルを作成します。

送信先 ターゲット
10.0.0.0/16 local
0.0.0.0/0 IGW

ルールは、上から順に適用されます。

まず、VPCのIPアドレス範囲内( 10.0.0.0/16 )であれば、VPC内のルーターに転送します。

次に 0.0.0.0/0 であれば、IGWに転送します。 0.0.0.0/0 は全てのIPアドレスを示すので、VPCのIPアドレス範囲外であればインターネットに転送されるようになります。

2. 1で作成したルートテーブルをサブネットに紐づける

サブネットごとにルートテーブルを1つ設定できます。1で作成したルートテーブルを インターネットに公開したいサブネット に設定します。

パケットフィルタリング

セキュリティを高めるためには、余計な通信をできないようにする必要があります。
パケットフィルタリングを利用して、必要な通信のみ通すように設定します。

ネットワークACL|サブネットレベル

ネットワークACLの特徴は以下のようになります。

  • サブネットレベルでパケットフィルタリングできます。
  • 1つのサブネットに対して1つのネットワークACLを紐付けます。
  • 許可と拒否の両方を設定できます。

SG|インスタンスレベル

SG(Security Group)の特徴は以下のようになります。

  • インスタンスレベルでパケットフィルタリングできます。
  • 1つのインスタンスに複数のセキュリティグループを紐づけられます。
  • 許可のみ設定できます。
  • 設定しなかったものは拒否されます。

許可する接続元、接続先を指定するのに IPアドレス を利用できますが、 他のセキュリティグループ で指定することもできます。

他のセキュリティグループ で指定できると何が便利なのでしょうか?
例えば、以下のようなケースが考えられます。

インスタンス 割り当てるSG
ELB sg1
Webサーバー sg2
RDS sg3

sg2 のインバウンドルールの送信元に sg1 を設定します。
すると、sg1 を割り当てられたインスタンス( ここではELB )からWebサーバーに接続できるようになります。

sg3 のインバウンドルールの送信元に sg2 を設定します。
すると、sg2 を割り当てられたインスタンス( ここではWebサーバー )からRDSに接続できるようになります。

ネットワークの基礎

AWSのネットワーク設定をする上で、一般的なネットワーク基礎知識も当然必要となります。
知っておくべきネットワーク基礎知識について解説します。

CIDR表記

10.0.0.0/16 のような表記がありましたね。これを CIDR表記 と言います。
最初の16ビットが ネットワーク部 となりそれ以外が ホスト部 になります。

プライベートIPアドレス

VPCのIPアドレス範囲にはプライベートIPアドレスを指定します。

クラス 利用可能な範囲 ネットワーク数
クラスA 10.0.0.0 ~ 10.255.255.255 1
クラスB 172.16.0.0 ~ 172.31.255.255 16
クラスC 192.168.0.0 ~ 192.168.255.255 256

特別なIPアドレス

あらかじめ予約されたIPアドレスが存在することを知っておきましょう。

名称 アドレス 説明
ネットワークアドレス 10.0.0.0 ネットワーク自体を示す
ブロードキャストアドレス 10.255.255.255 ネットワーク内の全てのホストを示す
ループバックアドレス 127.0.0.1 自分自身を示す

上記以外に、 0.0.0.0 も覚えておきましょう。

これは、文脈により意味の違いがありますが、AWSを利用する上では、

「0.0.0.0」は「それ以外の送信先全て」を表し、「デフォルトルート」を設定したいときに活用できる

と覚えておきましょう。

次のステップ

AWSでネットワークを構築するために、必要な構成要素がいくつか存在することがわかりました。
これを管理画面にて、手作業で構築するのは面倒ですし、設定ミスも生じやすくなります。

そこで、 CloudFormation の活用をお勧めします。ソースコードで管理設定を記述でき、再現性の高い方法を確立していくことができます。

一度は手作業で構築してもいいと思いますが、その後は CloudFormation の活用を検討してみてください。