AWSでネットワークに関する作業をする際、知っておくべき構成要素について解説します。AWSを使う上で、「ネットワーク構築とは具体的に何をするのか?」「トラブル時にどこを確認したらよいのか?」など判断できる知識が必要です。
物理的な拠点
Region|拠点都市
Region(リージョン)とは拠点都市のことを言います。
- 東京リージョン(ap-northeast-1)
- 北バージニアリージョン(us-east-1)
など、世界中に拠点が作られています。
Region同士は インターネットで接続 されます。
AZ|データセンター
Region内に複数のAZ(アベイラビリティゾーン)が用意されています。
同一Region内のAZ同士は 高速な通信線で接続 されています。
何のためにAZは存在する?
耐障害性を高めるためです。
例えば、AZ(1a)で障害が発生したとき、AZ(1c)を利用するといった障害対策をとることができます。
構成図
後述するVPC、サブネットなどのイメージが湧きやすいように大まかな構成図を示します。
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
の活用を検討してみてください。