スクリーンショット_2020-01-30_00

AWS習得編 Amazon Web Service 基礎からのネットワーク&サーバー構築 Chapter7

こちらの書籍について学んだことです。

Chapter7 NATを構築する

プライベートサブネットに配置したサーバーは、インターネットから接続できないため、安全。しかし、インターネットと一切通信できないのと、サーバーのアップデートやソフトウェアのインストールの際に不便。この問題を解決するのがNAT。

NATは、プライベートサブネット→インターネットの向きの通信だけを許可する。

7-1 NATの用途と必要性

パブリックにWebサーバー
プライベートにDBサーバー

がある状態

DBサーバーにデータベースソフトをインストールして、Webサーバーから利用できるようにする。

本書ではデータベースとしてMySQLを使用する。

yumコマンドを使ってMySQLをインストールするが、ひとつ問題がある。
DBサーバーはプライベートサブネットにあるため、インターネットに接続できない。
踏み台サーバーを経由して必要なソフトウェアをひとつずつscpコマンドでコピーすることもできるが、手間がかかりすぎる。

■NATの仕組み
この問題を解決するのがNAT
Network Address Translation

NATはIPアドレスを変換する装置で、2つのネットワークインターフェースを持つ。

片側のインターフェースには、一般にパブリックIPアドレスを設定し、インターネットに接続可能な構成にしておく。もう片側のインターフェースにはプライベートIPアドレスを設定してプライベートサブネットに接続する。

一方通行なのでセキュリティを高められる。


NATには2種類ある。
IPアドレスのみを置換するもの→NAT
IPアドレス+ポート番号を置換するもの→NAPT

実は家のルータにはNAT機能がある。だから複数台のPCがインターネットに接続できる。

AWSではNATゲートウェイというのがある。


■NATインスタンスとNATゲートウェイ

AWSでNATを構成する場合は2つの方法がある。
①NATインスタンス
NATソフトウェアがあらかじめインストールされたAMIから起動したEC2インスタンスを使う方法
コミュニティAMIでami-vpc-natで検索すると、NAT機能付きEC2インスタンスを作れるAMIを選べる

NATインスタンスは、Amazon LinuxをベースとしたLinux OSなので、そのEC2インスタンスに、NAT以外のソフトウェアをインストールすることもできる。NATインスタンスの性能は、EC2インスタンスのスペックによって決まる。
また、通常のEC2インスタンスと同様に、利用していないときは停止することもできる。

②NATゲートウェイ
NAT専用に構成された仮想的なコンポーネント、配置するサブネットを選ぶだけで構成できる。
NATゲートウェイは、NATインスタンスと違って、負荷に応じてスケールアップする。料金は、時間辺りと転送バイトの転送量で決められる。東京リージョンの場合0.062ドル/時間、0.062ドル/ギガバイト

NATゲートウェイはNATインスタンスと違って停止という操作はない。利用しないときは破棄するしかない。

どちらでもいいが、今回は構築のしやすさから②のNATゲートウェイを使用することにする。

■パブリックサブネットとプライベートサブネットをNATゲートウェイで接続する

今回、プライベートサブネットに配置したDBサーバーを、NATゲートウェイを経由してインターネットに接続できるようにする。

①NATゲートウェイを配置する

NATゲートウェイは、インターネットから接続可能な場所であるパブリックサブネットに配置して起動する。

②デフォルトゲートウェイを設定する

NATゲートウェイの準備ができたら、プライベートサブネットからインターネット宛のパケットが、NATゲートウェイを経由するように、ルートテーブルを変更する。

7-2 NATゲートウェイを構築する

■NATゲートウェイを起動する
NATゲートウェイをサブネットに配置して起動してみる。


【NATゲートウェイをサブネットに配置して起動する手順】
VPCを開く

左のメニューからNATゲートウェイをポチ

NATゲートウェイの作成をポチ

その前に右上のリージョンを東京にする

NATゲートウェイの作成画面になる。
サブネットをパブリックサブネットにする。
Elastic IPは新しいのを取得したい。
新しいEIPの作成をポチ
18.177.183.9が作成される
NATゲートウェイの作成をポチ

NATゲートウェイの作成画面になる

閉じて完了

■ルートテーブルを更新する

これでNATゲートウェイが起動して動作するようになった。
次に、プライベートサブネットからインターネットに対して通信するとき、パケットがNATゲートウェイの方向に流れるように構成する
これは、デフォルトゲートウェイ(宛先が未知のIPアドレスだった際にパケットを転送する「デフォルト」のゲートウェイ)をNATゲートウェイに向ける設定。
0.0.0.0/0に対して、NATゲートウェイを選択するだけ。

【プライベートサブネットのデフォルトゲートウェイをNATゲートウェイに向ける手順】
VPCからNATゲートウェイを選択して、NATゲートウェイIDを確認しておく。
nat-05232e41de2e50c4e

VPCメニューから、ルートテーブルをポチ

VPC領域のメインがはいになっているものをポチ

メインルートテーブルのデフォルトゲートウェイをNATゲートウェイに変更する。
下のルートタブのルートの編集をポチしてルートの追加をし、送信先に0.0.0.0/0を設定してターゲットをさっきメモしたNATゲートウェイにする。

ルートの保存をポチ

ルートが正常に作成されたと出る

完了!


7-3 NATゲートウェイを通じた疎通確認をする

以上で、NATゲートウェイの設定が終わった。
正常にNATゲートウェイが動作しているか確認してみる。
今回の構成では、プライベートサブネットからHTTPおよびHTTPSの通信を許可している。
そこで、DBサーバーにログインして、インターネットに対してHTTPやHTTPSで接続できるかどうかを調査し、NATゲートウェイが正常に動作しているかを確認する。

■curlコマンドで確認する
Amazon Linuxには標準でtelnetコマンドはインストールされていない。
その代わりcurlコマンドを使うことにする。

curlは、HTTPやFTPでファイルをダウンロードしたりアップロードしたりするコマンド。
Webサーバーを踏み台にしてDBサーバーにログインし、
curl www.nikkeibp.co.jp
を実行してみる

----------------------------------------
Last login: Sun Jan 26 05:23:01 on ttys000
ナイショ ~ % cd Dropbox/【フリーランスエンジニア に必要なデータ】/001\ ブログ/001\ 未経験からWeb系エンジニアへ/013\ AWS習得編
ナイショ 013 AWS習得編 % ssh -i my-key.pem ec2-user@54.249.78.248
Last login: Sat Jan 25 20:24:22 2020 from kd113158199015.ppp-bb.dion.ne.jp
      __|  __|_  )
      _|  (     /   Amazon Linux AMI
     ___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
No packages needed for security; 5 packages available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-0-1-10 ~]$ ssh -i my-key.pem ec2-user@10.0.1.20
ssh: connect to host 10.0.1.20 port 22: No route to host
[ec2-user@ip-10-0-1-10 ~]$ ssh -i my-key.pem ec2-user@10.0.2.10
Last login: Sat Jan 25 20:29:17 2020 from ip-10-0-1-10.ap-northeast-1.compute.internal
      __|  __|_  )
      _|  (     /   Amazon Linux AMI
     ___|\___|___|
https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
[ec2-user@ip-10-0-2-10 ~]$ curl www.nikkeibp.co.jp
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://www.nikkeibp.co.jp/">here</a>.</p>
</body></html>
[ec2-user@ip-10-0-2-10 ~]$ 
----------------------------------------

NATゲートウェイを削除するときは、VPCからNATゲートウェイをポチして削除すればおk

セキュリティも高められる。

もう一度通信したくなったらNATゲートウェイを作り直す。
そのとき、NATゲートウェイのIDが変わるため、ルートテーブルも編集し直す必要あり。


7-4 まとめ


NATゲートウェイを用いてプライベートサブネットからインターネットに接続した。
NATゲートウェイを構成すれば、プライベートサブネットからでもインターネットに接続できるため、あたかもパブリックIPアドレスが割り当てられているような使い勝手になる。

インターネットからプライベートサブネットには接続できないため、サーバーにパブリックIPアドレスを割り当てるよりもずっと安全。

NATゲートウェイを構築したことで、プライベートサブネットに配置されたDBサーバーで、yumコマンドを使ってソフトウェアをインストールできるようになった。

次の章で、実際にyumコマンドを使ってMySQLをインストールする。

さらに、WebサーバーにWordPressをインストールし、ブログサーバーとして運用できるようにする。


この記事が気に入ったらサポートをしてみませんか?