【AWS⑥】 NATを構築して、プライベートサブネットからインターネットへの接続のみを許可する
どうもoreoです。
前回までの記事で、プライベートサブネット内にDB用サーバーを用意しました。今回の記事ではNATを導入して、プライベートサブネットからインターネットへの接続のみを許可できるようにします!
【AWS③】EC2インスタンスにWebサーバーをインストールしてアクセスできるようにする
【AWS⑤】 プライベートサブネットにDB用サーバーを構築する
自分へのメモ的な記事になりますが、普段インフラを触らない人の参考になれば幸いです!
1 NAT(Network Address Translation)とは
NATはIPアドレスを変換する装置で、2つのインターフェースを持ちます。
一般的には、片側のインターフェースには「パブリックIPアドレス」を設定し、インターネットに接続可能な構成にし、もう片側のインターフェースには「プライベートIPアドレス」を設定して、プライベートサブネットに接続するようにします。そうすることで、プライベートサブネットからインターネットの向きだけの通信を許可できます。
NATを使うと、プライベートサブネットにインターネットから接続される危険性を排除しつつ、プライベートサブネット内でインターネットからライブラリなどを取得することができます。
AWSでNATを構成するには、NATインスタンスとNATゲートウェイの二つの方法がありますが、今回はNATゲートウェイを使用します。NATインスタンスを作成したい場合は、下記の記事などをご覧ください!
2 NATゲートウェイを構築する
今回は、インターネットから接続可能なパブリックサブネットにNATゲートウェイを配置し、プライベートサブネットからインターネット宛のパケットがNATゲートウェイを経由するようにルートテーブルを設定します(下記概要)。
2-1 NATゲートウェイを構築する
「VPC」>「NATゲートウェイ」で「NATゲートウェイを作成する」を選択します。
「サブネット」をパブリックサブネットとし、「Elastic IP(静的な固定パブリックIPアドレス)を割り当て」を行い、NATゲートウェイを作成します。
2-2 ルートテーブルの編集
デフォルトゲートウェイ(転送先が何も設定されていない時のデフォルトの転送先)をNATゲートウェイにすることで、プライベートサブネットからインターネットに対して通信する際に、パケットがNATゲートウェイの経由するように設定します。
まず、2-1で作成したNATゲートウェイIDを確認します。
「VPC」> 「ルートテーブル」からプライベートサブネットに適応されているルートテーブルを選択し、「ルート」タブから「ルートを編集」を選択します。
新たに「送信元」を0.0.0.0/0、ターゲットを先ほど確認したNATゲートウェイIDとして、「変更を保存」を選択します。
3 NATゲートウェイで疎通確認をする
DBサーバーにログインし、インターネットに対して、curl
コマンドを使ってHTTPやHTTPSで接続できるか疎通確認します。curl
コマンドを使うとサーバーに対してリクエストを投げてレスポンスを受け取ることができます。
まず踏み台サーバー(webサーバー)を経由してDBサーバーにログインします。
ssh -i ~/.ssh/my-key.pem ec2-user@[パブリックIPアドレス or パブリックDNS名]
ssh -i my-key.pem ec2-user@10.0.2.10
curl
コマンドで、阿部寛さんのホームページにリクエストを投げてみます。
curl abehiroshi.la.coocan.jp/
下記のように、HTMLがレスポンスとして返されればOKです。
curl
コマンドを使えばいろんな検証ができます(下記に使い方が分かりやすく記載されてました)。
4 最後に
今回の記事で、プライベートサブネットからネットワークへの方向の接続ができるようになりました。curl
コマンドを使えるといろいろ検証できますね。今後、プライベートサブネット内のDB用サーバーにDBソフトウェアをインストールしたいとお思います!
5 参考
Discussion