【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

AWS でネットワークを構成しているとたまに「なぜつながらないんだろう?」と思うことがあります。

結局は何度も繰り返し設計しては構築しての作業をしなければなかなか深いところまでは技術は身に付きませんが、今回はよく構築するであろう AWS の基本的なパターンを解説します。

 

 

 

AWS ネットワーク基本構成

下図は AWS でよく設定するであろう基本的なネットワーク構成図です。

 

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

今回の作業概要

今回の作業は以下の流れになります。

  1. Amazon VPC の作成
  2. Elastic IP の作成
  3. 「パブリックサブネット」と「プライベートサブネット」の作成
  4. インターネットゲートウェイの作成
  5. 作成した「インターネットゲートウェイ」を VPC にアタッチする
  6. NAT ゲートウェイの作成
  7. ルートテーブルの作成

 

 

 

Amazon VPC の作成

現在 VPC が 1つもない状態なので、まずは初めに 1つ VPC を作成します。

 

AWS 管理画面より「ネットワーキング&コンテンス配信」-「VPC」をクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

左側ペインより「VPC」をクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

「VPC の作成」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

「VPC の作成」画面で以下のように設定します。

設定が完了したら「はい、作成する」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

しばらく待ち、以下のように VPC が作成されていることを確認します。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

以上で、枠となる VPC の作成は完了です。

 

 

 

Elastic IP の作成

次に「Elastic IP」を 2つ作成します。

 

Elastic IP とは

Elastic IP とは、静的な IPv4 アドレスです。

 

 

Elastic IP 作成手順

AWS 管理画面より「ネットワーキング&コンテンス配信」-「VPC」をクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

左側ペインより「Elastic IP」をクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

「新しいアドレスの割り当て」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

「割り当て」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

下図のように「新しいアドレス」が割り当てられたことを確認します。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

「パブリックサブネット」と「プライベートサブネット」の作成

以下の設定で作成します。

パブリックサブネットに「NAT ゲートウェイ」を設置します。

→NAT ゲートウェイを設置する理由は、EC2 インスタンスがアップデートなどでインターネットに出て行けるようにするためです。

 

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

パブリックサブネットの作成

「VPC ダッシュボード」の左側ペインより「サブネット」をクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

「サブネットの作成」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

 

下図のように設定してパブリックサブネットを作成します。

設定が完了したら「はい、作成する」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

サブネットが作成されたことを確認します。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

プライベートサブネットの作成

次にプライベートサブネットを作成します。

再度「サブネットの作成」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

 

下図のように設定してプライベートサブネットを作成します。

設定が完了したら「はい、作成する」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

 

「パブリックサブネット」「プライベートサブネット」の2つのサブネットが作成されたことを確認します。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

インターネットゲートウェイの作成

次にインターネットゲートウェイを作成します。

 

インターネットゲートウェイとは

インターネットゲートウェイは、VPC 内の EC2 インスタンスとインターネットとの間で通信する場合に必要になります。

インターネットゲートウェイは、VPC ごとに 1つだけアタッチ(付与)することができます。

後ほど設定で出てきますが、ルートテーブルでインターネットゲートウェイを指定することで、インターネットゲートウェイを経由してインターネットに出ていくことができます。

つまり、Windows Update や yum updateが可能になります。

通常は「0.0.0.0/0」というようにデフォルトゲートウェイとしてインターネットゲートウェイを指定することになります。

 

 

インターネットゲートウェイの作成手順

「VPC ダッシュボード」の左側ペインより「インターネットゲートウェイ」をクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

「インターネットゲートウェイの作成」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

「インターネットゲートウェイの作成」画面で、分かりやすい任意の「Name タグ」を設定して「作成」ボタンをクリックします。

※IPアドレスは自動的に割り振られます。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

インターネットゲートウェイが作成されたことを確認し「閉じる」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

作成した「インターネットゲートウェイ」を VPC にアタッチする

次に、作成した「インターネットゲートウェイ」を VPC にアタッチします。

再度、左側ペインより「インターネットゲートウェイ」をクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

作成直後は「デタッチ」(どの VPC にもアタッチされていない)状態です。

「アクション」をクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

「VPC にアタッチ」を選択します。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

 

「アタッチ」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

下図のように「インターネットゲートウェイ」「VPC」がアタッチされている状態であることを確認します。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

NAT ゲートウェイの作成

次に「NAT ゲートウェイ」を作成します。

今回の VPC 環境は「パブリックサブネット」「プライベートサブネット」の混在環境です。

そのため、NAT ゲートウェイを作成する必要があります。

 

NAT ゲートウェイとは

NAT ゲートウェイについては以下の記事でまとめました。

 

【AWS】NAT ゲートウェイまとめ

 

VPC のプライベートサブネットに配置された EC2 インスタンスがインターネットに出ていくためには「NAT ゲートウェイ」「NAT インスタンス」が必要になります。

 

 

NAT ゲートウェイの作成手順

NAT ゲートウェイは「パブリックサブネット」に作成する必要があります。

 

左側ペインより「NAT ゲートウェイ」をクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

 

「NATゲートウェイの作成」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

下図のように設定をします。

設定をしたら「NAT ゲートウェイの作成」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

下図のように「NAT ゲートウェイ」が作成されたことを確認します。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

ルートテーブルの作成

次にルートテーブルを作成します。

 

ルートテーブルを「パブリックサブネット用」「プライベートサブネット用」に 2つ作成します。

 

 

左側ペインより「ルートテーブル」をクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

パブリックサブネット用ルートテーブルの作成

最初に「パブリックサブネット用ルートテーブル」を作成します。

 

左側ペインより「ルートテーブルの作成」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

「ルートテーブルの作成」画面で以下のように設定します。

設定をしたら「はい、作成する」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

作成した「ルートテーブル」が選択されていることを確認し、「ルート」タブに移動して「編集」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

「別のルートを追加」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

以下のようにパブリックサブネットのデフォルトゲートウェイ「0.0.0.0/0」にはインターネットゲートウェイを設定します。

その結果、EC2 インスタンスがインターネットに出て行けるようになります。

設定を入れたら「保存」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

下図のようにデフォルトゲートウェイが追加され、ステータスが「アクティブ」になっていることを確認します。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

次に「サブネットの関連付け」タグをクリックして移動し、「編集」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

「パブリックサブネット」にチェックを入れて「保存」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

下図のように「パブリックサブネット」が関連付けられ、サブネットの関連付けが「1サブネット」になっていることを確認します。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

プライベートサブネット用ルートテーブルの作成

次に「プライベートサブネット用ルートテーブル」を作成します。

 

「ルートテーブルの作成」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

「ルートテーブルの作成」画面で以下のように設定します。

設定をしたら「はい、作成する」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

 

 

作成した「ルートテーブル」が選択されていることを確認し、「ルート」タブに移動して「編集」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

「別のルートを追加」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

以下のようにプライベートサブネットのデフォルトゲートウェイ「0.0.0.0/0」には「NAT ゲートウェイ」を設定します。

その結果、プライベートサブネットに所属する EC2 インスタンスがインターネットに出て行けるようになります。

設定を入れたら「保存」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

以下のようにデフォルトゲートウェイが追加されていることを確認します。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

続けて「サブネットの関連付け」タブをクリックして移動し、「編集」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

プライベートサブネットにチェックを入れて「保存」ボタンをクリックします。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

下図のように「プライベートサブネット」が関連付けられ、サブネットの関連付けが「1サブネット」になっていることを確認します。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

【エラー】NAT ゲートウェイを作成したがしばらくすると「失敗」となる場合

AWS ネットワークを構成していく中で、以下のように「NAT ゲートウェイ」を作成したが、しばらくするとステータスが「失敗」になる場合があります。

この原因は「インターネットゲートウェイ」がない状態だからとなります。

「インターネットゲートウェイ」を作成する前に「NAT ゲートウェイ」を作成しても、インターネットに出ていけないために、作成後にしばらくすると下図のように「失敗」のステータスになります。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

それぞれのサブネットに EC2 を作成して動作確認をする

以上で AWS VPC ネットワーク環境は完成したので、あとは各サブネットに EC2 インスタンスを作成して動作確認をします。

 

パブリックサブネット配置の EC2 インスタンスの場合

「ifconfig」コマンドでIPアドレスを確認します。

[ec2-user@ip-10-0-1-20 ~]$ ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001 
        inet 10.0.1.20  netmask 255.255.255.0  broadcast 10.0.1.255 
        inet6 fe80::46a:6dff:fe30:bb18  prefixlen 64  scopeid 0x20

 
        ether 06:6a:6d:30:bb:18  txqueuelen 1000  (Ethernet) 
        RX packets 230  bytes 27899 (27.2 KiB) 
        RX errors 0  dropped 0  overruns 0  frame 0 
        TX packets 281  bytes 30287 (29.5 KiB) 
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 
 
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536 
        inet 127.0.0.1  netmask 255.0.0.0 
        inet6 ::1  prefixlen 128  scopeid 0x10 
        loop  txqueuelen 1000  (Local Loopback) 
        RX packets 64  bytes 6080 (5.9 KiB) 
        RX errors 0  dropped 0  overruns 0  frame 0 
        TX packets 64  bytes 6080 (5.9 KiB) 
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 
 
[ec2-user@ip-10-0-1-20 ~]$

 

 

 

インターネットにアクセスをしてアップデートが可能か「yum update」コマンドを実施します。

[root@ip-10-0-1-20 ~]# yum update 
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos 
rhui-REGION-client-config-server-7                                               | 2.9 kB  00:00:00 
rhui-REGION-rhel-server-releases                                                 | 3.5 kB  00:00:00 
rhui-REGION-rhel-server-rh-common                                                | 3.8 kB  00:00:00 
(1/7): rhui-REGION-client-config-server-7/x86_64/primary_db                      | 1.2 kB  00:00:00 
(2/7): rhui-REGION-rhel-server-releases/7Server/x86_64/group                     | 855 kB  00:00:00 
(3/7): rhui-REGION-rhel-server-rh-common/7Server/x86_64/group                    |  104 B  00:00:00 
(4/7): rhui-REGION-rhel-server-rh-common/7Server/x86_64/primary_db               | 121 kB  00:00:00 
(5/7): rhui-REGION-rhel-server-releases/7Server/x86_64/updateinfo                | 2.8 MB  00:00:00 
(6/7): rhui-REGION-rhel-server-rh-common/7Server/x86_64/updateinfo               |  33 kB  00:00:00 
(7/7): rhui-REGION-rhel-server-releases/7Server/x86_64/primary_db                |  53 MB  00:00:01 
Resolving Dependencies 
--> Running transaction check 
---> Package NetworkManager.x86_64 1:1.10.2-13.el7 will be updated 

 

~ 省略 ~

 
[root@ip-10-0-1-20 ~]#

 

 

 

 

 

 

プライベートサブネット配置の EC2 インスタンスの場合

プライベートサブネットにログインする場合は、一度パブリックサブネット配置の EC2 インスタンスにログインしてから ssh コマンドでログインする形になります。

(パブリックサブネットの EC2 インスタンスが踏み台サーバーとなります)

 

踏み台サーバーより鍵を指定してログインします。

[ec2-user@ip-10-0-1-20 ~]$ ssh -i .ssh/basic-network.pem 10.0.2.20 
Last login: Sat Jun 16 14:40:20 2018 from 10.0.1.20 
[ec2-user@ip-10-0-2-20 ~]$

 

 

 

「ifconfig」コマンドでIPアドレスを確認します。

[ec2-user@ip-10-0-2-20 ~]$ ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001 
        inet 10.0.2.20  netmask 255.255.255.0  broadcast 10.0.2.255 
        inet6 fe80::4d6:66ff:feb2:701a  prefixlen 64  scopeid 0x20

 
        ether 06:d6:66:b2:70:1a  txqueuelen 1000  (Ethernet) 
        RX packets 246  bytes 26855 (26.2 KiB) 
        RX errors 0  dropped 0  overruns 0  frame 0 
        TX packets 293  bytes 28460 (27.7 KiB) 
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 
 
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536 
        inet 127.0.0.1  netmask 255.0.0.0 
        inet6 ::1  prefixlen 128  scopeid 0x10 
        loop  txqueuelen 1000  (Local Loopback) 
        RX packets 64  bytes 6080 (5.9 KiB) 
        RX errors 0  dropped 0  overruns 0  frame 0 
        TX packets 64  bytes 6080 (5.9 KiB) 
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 
 
[ec2-user@ip-10-0-2-20 ~]$

 

 

 

インターネットにアクセスをしてアップデートが可能か「yum update」コマンドを実施します。

[root@ip-10-0-2-20 ~]# yum update 
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos 
rhui-REGION-client-config-server-7                                               | 2.9 kB  00:00:00 
rhui-REGION-rhel-server-releases                                                 | 3.5 kB  00:00:00 
rhui-REGION-rhel-server-rh-common                                                | 3.8 kB  00:00:00 
Resolving Dependencies 
--> Running transaction check 
---> Package NetworkManager.x86_64 1:1.10.2-13.el7 will be updated 
---> Package NetworkManager.x86_64 1:1.10.2-14.el7_5 will be an update 
---> Package NetworkManager-config-server.noarch 1:1.10.2-13.el7 will be updated 

 

~ 省略 ~

[root@ip-10-0-2-20 ~]#

 

 

 

以上で以下のネットワーク構成の構築が完了です。

【AWS】ネットワーク構築の基本(パブリックとプライベートサブネット&インターネットゲートウェイ&NAT ゲートウェイ)

 

 

 

 

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人