AWS でネットワークを構成しているとたまに「なぜつながらないんだろう?」と思うことがあります。
結局は何度も繰り返し設計しては構築しての作業をしなければなかなか深いところまでは技術は身に付きませんが、今回はよく構築するであろう AWS の基本的なパターンを解説します。
AWS ネットワーク基本構成
下図は AWS でよく設定するであろう基本的なネットワーク構成図です。
- 「パブリックサブネット」と「プライベートサブネット」に分かれています。
- 「パブリックサブネット」と「プライベートサブネット」にそれぞれ EC2 インスタンスが存在します。
- パブリックサブネットに所属する EC2 インスタンスは「インターネットゲートウェイ」経由でインターネットにアクセスします。
- パブリックサブネットに所属する EC2 インスタンスは「パブリックIP」を持っているのでインターネット経由で ssh でログインできます。
- プライベートサブネットに所属する EC2 インスタンスは、パブリックサブネットに所属する EC2 インスタンス経由でインターネットから ssh でログインできます。
- プライベートサブネットに所属する EC2 インスタンスは「NAT ゲートウェイ」経由でインターネットにアクセスします。
今回の作業概要
今回の作業は以下の流れになります。
- Amazon VPC の作成
- Elastic IP の作成
- 「パブリックサブネット」と「プライベートサブネット」の作成
- インターネットゲートウェイの作成
- 作成した「インターネットゲートウェイ」を VPC にアタッチする
- NAT ゲートウェイの作成
- ルートテーブルの作成
Amazon VPC の作成
現在 VPC が 1つもない状態なので、まずは初めに 1つ VPC を作成します。
AWS 管理画面より「ネットワーキング&コンテンス配信」–「VPC」をクリックします。
左側ペインより「VPC」をクリックします。
「VPC の作成」ボタンをクリックします。
「VPC の作成」画面で以下のように設定します。
- 名前タグ ← 分かりやすい任意の名前を付けます。
- IPv4 CIDR ブロック ← 10.0.0.0/16 に設定します。(すでに使用しているならアドレスを変更します)
設定が完了したら「はい、作成する」ボタンをクリックします。
しばらく待ち、以下のように VPC が作成されていることを確認します。
以上で、枠となる VPC の作成は完了です。
Elastic IP の作成
次に「Elastic IP」を 2つ作成します。
- インターネットゲートウェイ用 Elastic IP
- NAT ゲートウェイ用 Elastic IP
Elastic IP とは
Elastic IP とは、静的な IPv4 アドレスです。
Elastic IP 作成手順
AWS 管理画面より「ネットワーキング&コンテンス配信」–「VPC」をクリックします。
左側ペインより「Elastic IP」をクリックします。
「新しいアドレスの割り当て」ボタンをクリックします。
「割り当て」ボタンをクリックします。
下図のように「新しいアドレス」が割り当てられたことを確認します。
「パブリックサブネット」と「プライベートサブネット」の作成
以下の設定で作成します。
- パブリックサブネット ← 10.0.1.0/24 ← NAT ゲートウェイを配置します。
- プライベートサブネット ← 10.0.2.0/24
パブリックサブネットに「NAT ゲートウェイ」を設置します。
→NAT ゲートウェイを設置する理由は、EC2 インスタンスがアップデートなどでインターネットに出て行けるようにするためです。
パブリックサブネットの作成
「VPC ダッシュボード」の左側ペインより「サブネット」をクリックします。
「サブネットの作成」ボタンをクリックします。
下図のように設定してパブリックサブネットを作成します。
- 名前タグ ← 任意の分かりやすい名前を設定します。
- VPC ← 今回の環境用に作成した「sophos-test-vpc」を選択します。
- アベイラビリティゾーン ← 冗長化を意識し、任意のアベイラビリティゾーンを選択します。
- IPv4 CIDR ブロック ← 今回作成したいサブネットの CIDR ブロックを設定します。【例】では「10.0.1.0/24」
設定が完了したら「はい、作成する」ボタンをクリックします。
サブネットが作成されたことを確認します。
プライベートサブネットの作成
次にプライベートサブネットを作成します。
再度「サブネットの作成」ボタンをクリックします。
下図のように設定してプライベートサブネットを作成します。
- 名前タグ ← 任意の分かりやすい名前を設定します。
- VPC ← 今回の環境用に作成した「sophos-test-vpc」を選択します。
- アベイラビリティゾーン ← 冗長化を意識し、任意のアベイラビリティゾーンを選択します。
- IPv4 CIDR ブロック ← 今回作成したいサブネットの CIDR ブロックを設定します。【例】では「10.0.2.0/24」
設定が完了したら「はい、作成する」ボタンをクリックします。
「パブリックサブネット」と「プライベートサブネット」の2つのサブネットが作成されたことを確認します。
インターネットゲートウェイの作成
次にインターネットゲートウェイを作成します。
インターネットゲートウェイとは
インターネットゲートウェイは、VPC 内の EC2 インスタンスとインターネットとの間で通信する場合に必要になります。
インターネットゲートウェイは、VPC ごとに 1つだけアタッチ(付与)することができます。
後ほど設定で出てきますが、ルートテーブルでインターネットゲートウェイを指定することで、インターネットゲートウェイを経由してインターネットに出ていくことができます。
つまり、Windows Update や yum updateが可能になります。
通常は「0.0.0.0/0」というようにデフォルトゲートウェイとしてインターネットゲートウェイを指定することになります。
インターネットゲートウェイの作成手順
「VPC ダッシュボード」の左側ペインより「インターネットゲートウェイ」をクリックします。
「インターネットゲートウェイの作成」ボタンをクリックします。
「インターネットゲートウェイの作成」画面で、分かりやすい任意の「Name タグ」を設定して「作成」ボタンをクリックします。
※IPアドレスは自動的に割り振られます。
インターネットゲートウェイが作成されたことを確認し「閉じる」ボタンをクリックします。
作成した「インターネットゲートウェイ」を VPC にアタッチする
次に、作成した「インターネットゲートウェイ」を VPC にアタッチします。
再度、左側ペインより「インターネットゲートウェイ」をクリックします。
作成直後は「デタッチ」(どの VPC にもアタッチされていない)状態です。
「アクション」をクリックします。
「VPC にアタッチ」を選択します。
「アタッチ」ボタンをクリックします。
下図のように「インターネットゲートウェイ」と「VPC」がアタッチされている状態であることを確認します。
NAT ゲートウェイの作成
次に「NAT ゲートウェイ」を作成します。
今回の VPC 環境は「パブリックサブネット」と「プライベートサブネット」の混在環境です。
そのため、NAT ゲートウェイを作成する必要があります。
NAT ゲートウェイとは
NAT ゲートウェイについては以下の記事でまとめました。
【AWS】NAT ゲートウェイまとめ
VPC のプライベートサブネットに配置された EC2 インスタンスがインターネットに出ていくためには「NAT ゲートウェイ」か「NAT インスタンス」が必要になります。
- NAT ゲートウェイ
- NAT インスタンス
NAT ゲートウェイの作成手順
NAT ゲートウェイは「パブリックサブネット」に作成する必要があります。
左側ペインより「NAT ゲートウェイ」をクリックします。
「NATゲートウェイの作成」ボタンをクリックします。
下図のように設定をします。
- サブネット ← パブリックサブネットの「サブネットID」を選択します。
- Elastic IP 割り当て ID ← 先ほど作成した「EIP IP」を選択します。
設定をしたら「NAT ゲートウェイの作成」ボタンをクリックします。
下図のように「NAT ゲートウェイ」が作成されたことを確認します。
ルートテーブルの作成
次にルートテーブルを作成します。
ルートテーブルを「パブリックサブネット用」と「プライベートサブネット用」に 2つ作成します。
- パブリックサブネット ← インターネットゲートウェイへの関連付けが必要
- プライベートサブネット ← NAT ゲートウェイへの関連付けが必要
左側ペインより「ルートテーブル」をクリックします。
パブリックサブネット用ルートテーブルの作成
最初に「パブリックサブネット用ルートテーブル」を作成します。
左側ペインより「ルートテーブルの作成」ボタンをクリックします。
「ルートテーブルの作成」画面で以下のように設定します。
- 名前タグ ← 分かりやすい名前を付けます。
- VPC ← 今回利用する「sophos-test-vpc」を選択します。
設定をしたら「はい、作成する」ボタンをクリックします。
作成した「ルートテーブル」が選択されていることを確認し、「ルート」タブに移動して「編集」ボタンをクリックします。
「別のルートを追加」ボタンをクリックします。
以下のようにパブリックサブネットのデフォルトゲートウェイ「0.0.0.0/0」にはインターネットゲートウェイを設定します。
その結果、EC2 インスタンスがインターネットに出て行けるようになります。
設定を入れたら「保存」ボタンをクリックします。
下図のようにデフォルトゲートウェイが追加され、ステータスが「アクティブ」になっていることを確認します。
次に「サブネットの関連付け」タグをクリックして移動し、「編集」ボタンをクリックします。
「パブリックサブネット」にチェックを入れて「保存」ボタンをクリックします。
下図のように「パブリックサブネット」が関連付けられ、サブネットの関連付けが「1サブネット」になっていることを確認します。
プライベートサブネット用ルートテーブルの作成
次に「プライベートサブネット用ルートテーブル」を作成します。
「ルートテーブルの作成」ボタンをクリックします。
「ルートテーブルの作成」画面で以下のように設定します。
- 名前タグ ← 分かりやすい名前を付けます。
- VPC ← 今回利用する「sophos-test-vpc」を選択します。
設定をしたら「はい、作成する」ボタンをクリックします。
作成した「ルートテーブル」が選択されていることを確認し、「ルート」タブに移動して「編集」ボタンをクリックします。
「別のルートを追加」ボタンをクリックします。
以下のようにプライベートサブネットのデフォルトゲートウェイ「0.0.0.0/0」には「NAT ゲートウェイ」を設定します。
その結果、プライベートサブネットに所属する EC2 インスタンスがインターネットに出て行けるようになります。
設定を入れたら「保存」ボタンをクリックします。
以下のようにデフォルトゲートウェイが追加されていることを確認します。
続けて「サブネットの関連付け」タブをクリックして移動し、「編集」ボタンをクリックします。
プライベートサブネットにチェックを入れて「保存」ボタンをクリックします。
下図のように「プライベートサブネット」が関連付けられ、サブネットの関連付けが「1サブネット」になっていることを確認します。
【エラー】NAT ゲートウェイを作成したがしばらくすると「失敗」となる場合
AWS ネットワークを構成していく中で、以下のように「NAT ゲートウェイ」を作成したが、しばらくするとステータスが「失敗」になる場合があります。
この原因は「インターネットゲートウェイ」がない状態だからとなります。
「インターネットゲートウェイ」を作成する前に「NAT ゲートウェイ」を作成しても、インターネットに出ていけないために、作成後にしばらくすると下図のように「失敗」のステータスになります。
それぞれのサブネットに EC2 を作成して動作確認をする
以上で AWS VPC ネットワーク環境は完成したので、あとは各サブネットに EC2 インスタンスを作成して動作確認をします。
パブリックサブネット配置の EC2 インスタンスの場合
「ifconfig」コマンドでIPアドレスを確認します。
[ec2-user@ip-10-0-1-20 ~]$ ifconfig |
インターネットにアクセスをしてアップデートが可能か「yum update」コマンドを実施します。
[root@ip-10-0-1-20 ~]# yum update
~ 省略 ~ |
プライベートサブネット配置の EC2 インスタンスの場合
プライベートサブネットにログインする場合は、一度パブリックサブネット配置の EC2 インスタンスにログインしてから ssh コマンドでログインする形になります。
(パブリックサブネットの EC2 インスタンスが踏み台サーバーとなります)
踏み台サーバーより鍵を指定してログインします。
[ec2-user@ip-10-0-1-20 ~]$ ssh -i .ssh/basic-network.pem 10.0.2.20 |
「ifconfig」コマンドでIPアドレスを確認します。
[ec2-user@ip-10-0-2-20 ~]$ ifconfig |
インターネットにアクセスをしてアップデートが可能か「yum update」コマンドを実施します。
[root@ip-10-0-2-20 ~]# yum update
~ 省略 ~ [root@ip-10-0-2-20 ~]# |
以上で以下のネットワーク構成の構築が完了です。
コメント