AWSを始める 〜 8.NATサーバを構築してインターネットへ接続できるようにする

◎これまでの学習

AWSを始める 〜 1.仮想サーバの立ち上げ
AWSを始める 〜 2.SSHを使用した仮想サーバへの接続
AWSを始める 〜 3.仮想ネットワークの作成
AWSを始める 〜 4.設定したVPCにインスタンスを作成する
AWSを始める 〜 5.新しく作成したインスタンスにSSHで接続する(※プライベートキーを無くした)
AWSを始める 〜 6.ミドルウェアのインストール 〜 Apache Web サーバ
AWSを始める 〜 7.プライベートサブネットにDBサーバ用のインスタンスを構築する

◎今回の内容

1.NATサーバとは
2.NATサーバの構築
2−1.構成図
2−2.NATサーバ用のセキュリティグループの作成
2−3.NATサーバインスタンスの作成
2−4.パブリックサブネットのデフォルトゲートウェイをNATサーバに設定する
2−5.接続確認

前回「AWSを始める 〜 7.プライベートサブネットにDBサーバ用のインスタンスを構築する」では、DBサーバ用のインスタンスを構築した。しかし、このままではインターネットへのアウトバンドの接続ができないため、yumでのインストールもできない。
そこで、インバンドの接続は拒否するが、アウトバンドの接続は可能にするためにNATサーバを構築する。

1.NATサーバとは
NATサーバとはIPアドレスを変換するサーバ。NICを2つ持つ。
1つのNICには「パブリックIPアドレス」を設定してインターネットへ接続し、もう1つのNICには「プライベートIPアドレス」を設定してプライベートサブネットに接続する。
詳細はwikipediaあたりを参考にすればよいだろう。

2.NATサーバの構築
2−1.構成図
それではNATサーバを構築する。今回作成したい構成は次の図。

行うことは大きく分けて2つ有る。
1つはNATインスタンスの作成であり、もう1つはプライベートサブネットのルートテーブルのデフォルトゲートウェイをNATサーバに設定すること。

2−2.NATサーバ用のセキュリティグループの作成
NATサーバのセキュリティグループの設定を行う。
Inboundの設定は、プライベートサブネットからのHTTP/HTTPSの接続を許可する。また、WEBサーバからのSSHによる接続を許可する。
なお、WEBサーバ1台を設定するさいにも、CIDR表記としなければならず、「/32」と記入する必要が有ることに注意する。

Outbandの設定は、インターネットへのHTTP/HTTPSの接続を許可する。つまり、HTTP/HTTPSはインターネットゲートウェイへ転送する。

2−3.NATサーバインスタンスの作成
AWSにはNATサーバ機能が構成されたAMIが用意されているため、それを使用する。
「EC2→Instances→Launch Instance」とたどる。
「am-vpc-nat」を検索する。

NATのインスタンスを選択する。

サブネットにはパブリックサブネットを使用し、インターネットへ接続するためにパブリックIPアドレスは自動的に割り振られるようにする。

ストレージはデフォルトのまま。

名前は適当につける。

セキュリティグループは先ほど作成したので、既にあるセキュリティグループを選択するようにする。

プライベートキーは新規に作成してダウンロードする。

ここまででNATサーバ用のインスタンスが起動する。

さて、インスタンスが起動したら、「送信元/送信先のチェックを無効にする」必要がある。
Amazon EC2のデフォルト構成では「パケットを受け取るには、そのインスタンスが送受信するトラフィックの送信元、または、送信先である」という条件が課せられている。NATサーバはパケットの送信元IPアドレスや宛先IPアドレスを書き換える用途なので、このチェックに引っかかってしまう。そのため、このチェックを無効にする。「Instances→Change Source/Dest Check」をDisableにする。

2−4.パブリックサブネットのデフォルトゲートウェイをNATサーバに設定する
プライベートサブネットのデフォルトゲートウェイをNATサーバに設定する。

2−5.接続確認
DBサーバにログインする。
curlでyahoo.co.jpからGETする。

[ec2-user@ip-172-31-2-171 ~]$ curl yahoo.co.jp
<!doctype html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><title>Yahoo! - 301 Moved Permanently</title><style>
/* nn4 hide */
・・・・

成功した。つまり、プライベートサブネットから外部へ接続できるということ。
試しにNATサーバを停止させてみて、その後にcurlを実行するとアクセス出来ない。