前回、プライベートサブネットにDBサーバーを構築しました。DBサーバーはインターネットとは接続されていないため、Webサーバーを経由してのみのアクセスとなります。

サーバーへの接続に関して、pingコマンドを通じて接続を確認したかと思います。

前回の記事『pingコマンドでDBサーバへのアクセスを確認する』

DBサーバーに対してインターネットからアクセスができないようにするのは、セキュリティ上の観点からも重要ですが、例えば、何かしらのソフトをインストールしたり、サーバーをアップデートするような場合に接続ができないのは、少々問題です。

そこで、今回はそのような問題を解決するためにNATサーバーを構築していきます。

NATサーバーとは

過去に遡りますが、これまでインスタンス内に『Webサーバー』と『DBサーバー』を構築しました。一般的にはDBサーバーにはMySQLをインストールしていくのですが、DBサーバーはプライベートサブネット内に配置していますので、インターネットに接続することができないのです。

通常、ソフトウェアをダウンロードする場合には、yumコマンドを使用しますがそれがでいないということになります。踏み台サーバーを経由した方法もありますが、それでは時間と手間がかかりすぎてしまいます。。。

そこで、NAT(Network Address Translation)サーバーを使って問題を解決していきます。

2つのネットワークインターフェイスを持つNAT

NATサーバーは2つのネットワークインターフェイスを持ちます。

片方は、「パブリックIPアドレス」を設定し、インターネットに接続できるようにします。もう片方は「プライベートIPアドレス」を設定し、プライベートサブネットに接続します。

プライベートサブネットにあるホスト(サーバーやクライアント)がインターネットにパケットを送信する時に、NATはパケットの送信元IPアドレスをパブリックIPアドレスに変換します。

これによって送信元が、プライベートIPアドレスではなく、NATサーバーが持つパブリックIPアドレスに変換されるため、インターネットに接続することができるのです。

逆に、インターネット側からはプライベートサブネット方向に接続することはできません。プライベートサブネットにパブリックIPアドレスを割り当ててインターネット接続を許可するよりもセキュリティ性を高めることができます。

ルータにはNAT機能が動作している

NATサーバーについての説明をさせていただきましたが、ルーターにはこの機能が動作しています。

一般的にプロバイダーから与えられるIPアドレスはひとつだけです。この与えられたIPアドレスをNAT(ルーター)でプライベートIPアドレスを割り当てて、複数の端末に共有します。

ルーター(NAT)がないと、1台の端末でしかインターネットに接続することができませんね。

NATに関しては、以外にも身近なところで使用しているのです。

サブネット同士をNATサーバで接続するための手順

NATサーバを通じて、プライベートサブネットからインターネット接続していく手順について一度整理していきたいと思います。

複数のサブネットがまたがり、NATも経由しながらルーティングも設定していく必要がありますので、下記の図にまとめてネットワーク構成を整理してみました。

NATサーバーの構成

NATサーバーの配置

NATサーバーはインターネットから接続な場所に設置します。具体的には「パブリックサブネット内」ですね。

AWSの場合は、既にNATサーバーが構成されたAMIがありますので、それを設置すれば、すぐにサーバーを起動できます。

割り当てIPアドレス(プライベートIPアドレス)については、パブリックサブネットで使われているIPアドレスであれば、何でも構いません。ここでは「10.0.1.20」とします。

NATサーバーのセキュリティグループを構成

NATサーバーにセキュリティグループを割り当てていきます。

要件に応じて、適切なセキュリティグループを割り当てる必要がありますが、今回NATサーバーを設置する目的としては、yumコマンドでファイルをダウンロードすることです。ですので、使用する「HTTP通信(80番ポート)」と「HTTPS通信(433番ポート)」を開放します。

安全性を考慮して、必要のないポートについては開放しません。今回は80番と443番のみ開放するようにします。

デフォルトゲートウェイの設定

プライベートサブネットからインターネット宛のパケットが、NATサーバーを経由するように、ルートテーブルを変更します。

これは、デフォルトゲートウェイをNATサーバーに向ける設定で「0.0.0.0/0」に対してNATサーバーを選択します。※0.0.0.0/0とは、全てのIPアドレスを意味します。

以上がNATサーバーについての説明となり、実施に構築するまでの準備となります。

次回は、実際にNATサーバーを構築していきたいと思います。

今回はこの辺で。