Amazon Web Services基礎からのネットワーク&サーバー構築 を実施した際の備忘録です。
※前回はこちら
今回の目標
DB用サーバのEC2をプライベートサブネットに配置し、外部インターネットから隔離します。
ただ外部インターネットと完全に遮断すると、DB用サーバのソフトウェアアップデート・インストールが不便なため、NATを構築して プライベートサブネット> 外部インターネット への通信のみ許可します。
プライベートサブネットを構築する
まずはオレンジ枠の箇所を構築します。
※MariaDBのインストールは次回実施します。
まずプライベートサブネットを作成します。
VPC ID では、事前に作成したVPCを選択します。
サブネットの設定におけるアベイラビリティーゾーンは、パブリックサブネットが存在するゾーンを選択します。
またサブネットのCIDRブロックは 10.0.2.0/24 とします。
ルートテーブルを確認すると、プライベートサブネットはデフォルトのルートテーブルが設定されてます。
今回のプライベートサブネットは外部インターネットに接続しないため、このままでOKです。
DB用サーバを構築する
次にDB用サーバとするEC2インスタンスを作成します。
名前は『HogeDBServer』とします。
AWSの1年間の無料利用枠で利用できるLinuxサーバは1台分のみです。
2台目のEC2インスタンスは課金の対象になるため注意してください。
基本的な箇所は以下記事で設定した内容と同じです。本記事では相違点のみ記載します。
サブネットは先ほど作成したプライベートサブネットを選択し、パブリックIPの自動割り当てを無効化します。
新たにセキュリティグループを作成し、MariaDB の通信ポート『3306』のみ許可する設定を追加してください。
※後ほど NAT を構築した際にアクセスするため、ソースタイプは任意の場所とします。
またIPアドレスは『10.0.2.10』とします。
相違点は以上です。
EC2インスタンス起動完了後はPingコマンドで疎通確認をします。
DB用サーバのセキュリティグループに、ICMPプロトコルを許可する設定を追加します。
その後セッションマネージャーからWebサーバ用のEC2インスタンスに接続し、下記pingコマンドを実行します。
$ ping 10.0.2.10
疎通していれば画像のように返答が戻ってきます。
DB用サーバにSSHポートフォワードを使用してログインする
今回はSSHポートフォワードを用いて、DB用サーバに接続します。
Rloginで新規接続設定を行います。
まず踏み台サーバ > プロトコルから、ポートフォワードを選択します。
新規設定として以下の内容を追加します。
次にDB用サーバの設定を行います。
ポイントは前接続先に踏み台サーバを指定する必要があることです。
その後プロキシ設定を行います。
Select Proxy Protocol で『SOCK5』を選択し、Proxy Server Address と Socket Port には踏み台サーバのポートフォワード設定と同じ内容を入力します。
ただこの時点ではDB用サーバがSSHプロトコルを許可していなかったため、接続できませんでした…
DB用サーバに以下のセキュリティグループを追加し対応しました。
※ソースには踏み台サーバのセキュリティグループを指定してます。
こうして無事接続することができました。ただこのままではソフトウェアインストール・アップデートができないため、NATを構築します。
NATを構築する
NATを介することで、外部インターネットからプライベートサブネット内のDB用サーバへの送受信を拒みつつ、DB用サーバから外部ネットワークへ送受信のみ許可することができます。
今回はNATゲートウェイを使って構築します。
NATゲートウェイを作成時にはパブリックサブネットを選択し、ElasticIPを割り当てます。
次にルートテーブルを編集します。
メインルートテーブルを選択し、『ルートの編集』を押下します。
NATゲートウェイへ送信先『0.0.0.0/0』のルートテーブルを追加し、保存します。
NATゲートウェイの疎通を確認する
crulコマンドをDB用サーバで実行し、HTMLが表示されるか確認します。
※URLはQiitaです。
$ curl https://qiita.com
実行してHTMLが表示されれば、OKです。
お疲れさまでした。
ここまで Amazon Web Services基礎からのネットワーク&サーバー構築 の内容を実践してきました。今まで学んできた内容の復習に丁度良い教材でした。本書では次回チャプターでDBを用いたブログシステムの構築を行っているので、興味のある方はぜひご購入ください。