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を実行するとアクセス出来ない。