teratail新年度特別企画 - 学習チュートリアル 応用編3

セキュアなDB接続環境を整えよう

チュートリアルをはじめるなら

無料クーポンでさくらのクラウドを触ってみよう!

※無料クーポンの配布期間は終了いたしました。

本チュートリアルは、teratail新年度応援企画「 インフラ技術を極めろ!クラウドマスター認定試験 」の一部として作成されました。

応用編の最後はVPCルータを使い、安全にデータベースに接続する環境を構築します。リモートアクセス機能を有効にすると、手元のパソコンから安全に接続できます。

▼応用編3で作成する範囲

Web-DB構成のインフラ構築

応用編2「ロードバランサを動かしてみよう」では、Webサーバ上にHTMLの静的コンテンツを配置し、実際にWebサーバとして機能するのを確認しました。しかし、実際のWebアプリケーションの構築においては、データベース用サーバの存在が不可欠になってくるでしょう。今回は、DBサーバを作成し、Webサーバとローカルネットワーク(インターネットから直接アクセスできない閉じられたセキュアなネットワーク)経由で通信できるようにします。

まずローカルネットワークに使用するスイッチを作成します。左メニューの「スイッチ」をクリックし、右上の「追加」をクリックします。

「名前」のテキストボックスに任意の名前を入力し、右下の「作成」をクリックします。

再度左メニューの「スイッチ」をクリックすると、新しいスイッチの作成を確認できます(以下画像の赤枠部分)。

NICの追加・ローカル側スイッチとの接続

WebサーバにNICを追加し、ローカル側スイッチと接続します。左メニューの「サーバ」をクリックし、サーバ一覧を表示します。

NICを追加するにはサーバをシャットダウンする必要があります。web01→web02の順に1台ずつシャットダウンします。Webサーバへのアクセスはロードバランサで分散されています。そのため、1台ずつメンテナンスを行うことで、サービスを完全には止めずにメンテナンスできます。
Web01のメンテナンスを行うため、Web01の左側のチェックボックスにチェックを入れ、「電源操作」をクリックし、「シャットダウン」をクリックします。

作業対象のサーバを確認し、「シャットダウン」をクリックします。

サーバ一覧画面でweb01が停止状態になったことが確認できたら、行(以下画像の赤枠部分)をダブルクリックします。

サーバ詳細画面の「NIC」タブをクリックし、右下の「追加」をクリックします。

追加されたNIC右側の「▼」をクリックし、「接続を編集」をクリックします。

「スイッチに接続」のラジオボタンをクリックし、先に作成したスイッチを選択し、右下の「更新」をクリックします。この際に誤って「ルータ+スイッチ」を選択してしまわないよう注意してください。

左メニューの「マップ」で確認すると、web01がルータ+スイッチとスイッチの両方への接続を確認できます。

以上でweb01のローカル側スイッチへの接続は完了です。同様の作業をweb02に対しても行います。

プライベート・ネットワーク用 IP アドレス設定

サーバの電源をONにし、ローカルネットワーク用のプライベートIPアドレスを設定します。プライベートIPアドレスは以下の図の通りに設定します。

左メニューの「サーバ」をクリックし、web01の左側にチェックを入れ、画面右の「電源操作」をクリックし、「起動」をクリックします。

サーバが起動したら、SSHログイン(応用編2の「WebサーバへのSSHログイン」参照)し以下のコマンドを入力します。

    nmcli connection add type ethernet con-name local-eth1 ifname eth1 ip4 192.168.0.1/24 gw4 192.168.0.254

IPアドレスが正しく割り当てられているか確認します(以下の赤字部分)。なお、IPアドレスの反映には少し時間がかかる場合があります。すぐに反映が確認できない場合は少し時間をおいて、再度ご確認ください。

    # ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN qlen 1
<中略>
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
<中略>
    inet xxx.xxx.xxx.166/28 brd xxx.xxx.xxx.175 scope global eth0
<中略>
3: eth1:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
<中略>
    inet 192.168.0.1/24 brd 192.168.0.255 scope global eth1
<後略>

以上でweb01へのプライベートIPアドレスの設定は完了です。同様の作業をweb02に対しても行います。
割り当てるIPアドレスは192.168.0.2/24となりますのでnmlcliコマンドを打つ際にはご注意ください。

    
nmcli connection add type ethernet con-name local-eth1 ifname eth1 ip4 192.168.0.2/24 gw4 192.168.0.254
    

DBサーバの作成

Webサーバのローカルネットワーク接続作業が完了したら、DBサーバを作成します。DBサーバはローカルネットワークにのみ接続され、インターネット上からは直接アクセスできません。

DBサーバの作成

左メニューの「サーバ」をクリックし、右上の「追加」をクリックします。

サーバ作成画面の詳細説明は割愛します。ポイントのみ解説します。

サーバスペック

デフォルト値(最小構成)とし、アーカイブはCentOS7.3(本記事執筆時点最新版)を選択します。

NIC

「スイッチに接続」のラジオボタンをクリックし、先に作成したスイッチを選択します。この際に誤って「ルータ+スイッチ」を選択しないよう注意してください。

サーバ設定

冒頭の図に記載したプライベートアドレスの割り当てに従って入力します。IPアドレスは「192.168.0.100」、ネットマスクは「24」、ゲートウェイは「192.168.0.254(VPCルータのプライベートIPアドレス)」とします。管理ユーザ(root)のパスワードを2回入力します。ホスト名は「db01」と入力し、公開鍵はなし、スタートアップスクリプトも今回は特に選択しません。
VPCルータのプライベートIPアドレスをゲートウェイに設定することで、グローバルIPアドレスを持たないDBサーバでも、インターネット接続し、パッケージのインストールやOSSの動作検証のアップデート等が行えます。

名前の入力/サーバ作成

名前に「db01」と入力し、右下の「作成」をクリックします。

この後サーバにログインしてDBサーバソフトウェアのインストール等を行うわけですが、今の状態ではDBサーバにSSHでログインできません。また、DBサーバからインターネットへの接続もできませんので、コンソール経由でのセットアップもできません。そこで、VPCルータを作成し、リモートアクセス経由でローカル側のネットワークに直接つなげるようにします。

VPC ルータ

VPCルータの役割

VPCルータを追加すると、以下の図の①と②の通信を実現できます。

VPCルータの作成・ローカルスイッチとの接続

それではVPCルータを作成していきます。

左メニューの「VPCルータ」をクリックし、右上の「追加」をクリックします。

プランは「スタンダード」を選択し、名前のテキストボックスに任意の名前を入力し、右下の「作成」をクリックします。

作成ボタン押下後、クラウド基盤内部ではVPCルータのコピーが行われます。これには少し時間がかかります。

コピーが完了すると、VPCルータの一覧画面で「利用可能」と表示されます。この状態で、対象のVPCルータの行をダブルクリックします。

VPCルータは作成された時点ではインターネットとは接続されている状態ですが、ローカルネットワーク用のスイッチとは接続されていませんので、接続設定を行います。VPCルータ詳細画面で「インターフェース」タブをクリックし、プライベート1の行の右側にある鉛筆マークのアイコンをクリックします。

「既存スイッチに接続」のラジオボタンをクリックし、先に作成したローカルネットワーク用のスイッチを選択します。IPアドレスは「192.168.0.254」、プリフィックスは「/24」とし、右下の「更新」をクリックします。

リモートアクセスVPNの設定

VPCルータにL2TP/IPsecを使用してリモートアクセスVPN接続ができるよう設定します。
「リモートアクセス」タブをクリックし、その下の「L2TP/IPsecサーバ」をクリックし、右下の「編集」をクリックします。

「L2TP/IPsecサーバ」の項目で「有効」のラジオボタンをクリックすると設定項目が表示されます。「動的割り当て範囲」とは、L2TPクライアントがVPN経由で接続する際に割り当てられるIPアドレスです。ここでは例として開始:192.168.0.200、終了:192.168.0.249と入力します。Pre Shared Secretには任意の文字列を入力します(後ほど接続する際に必要になりますので忘れないように注意してください)。入力が完了したら、右下の「更新」をクリックします。

次に、L2TP接続する際に使用するアカウントを作成します。「アカウント管理」タブをクリックし、右下の「追加」をクリックします。

任意のユーザ名とパスワードを入力し、右下の「追加」をクリックします。

ここまで設定が完了したら、右上の「反映」をクリックします。

さらにその左側にある「DOWN:電源操作」をクリックし、「起動」をクリックします。

以上でVPCルータの設定は完了です。マップで確認すると、以下のような構成のサーバ/ネットワークができあがっています。(以下のマップ表示はマウス操作で位置を修正して見やすくしたものですので、実際の表示とは異なることがあります)

VPN経由でサーバにSSHログインしよう

自分のPCとVPCルータをVPNで接続し、DBサーバにSSHでログインします。リモートアクセスVPN機能を使うことにより、インターネット側のサーバを介さずに、ローカル側のスイッチに繋がっているDBサーバにログインできます。接続のイメージ図は以下のとおりです。

VPN 設定手順(Windows7の場合)※Macの場合はこちら

コントロールパネルを開きます。

「ネットワークと共有センター」を開きます。

「新しい接続またはネットワークのセットアップ」をクリックします。

「職場に接続します」をクリックし、「次へ」をクリックします。

既に別のVPN接続がセットアップされている場合、以下のような画面が表示されます。その場合は「いいえ、新しい接続を作成します(C)」を選択し、「次へ」をクリックします。

接続の方法は「インターネット接続(VPN)を使用します」をクリックします。

その次の画面では、以下の項目を指定します。

  • インターネットアドレス…VPCルータのグローバルIPアドレス(記載箇所は次項に書いてます)を入力
  • 接続先の名前…「VPN接続(さくらのクラウド)」など、任意の名前を入力
  • その他のオプション…「今は接続しない。自分が後で接続できるようにセットアップのみを行う」のみチェック

なお、VPCルータのグローバルIPアドレスは、コントロールパネルの「VPCルータ」→「インターフェース→「グローバル」行の「IPアドレス」から確認できます。

ユーザ名とパスワードは、VPCルータのリモートアクセスVPN設定の際に作成したアカウントのユーザ名とパスワードを入力し、「作成」をクリックします。

作成後は「閉じる」をクリックします。
それから、「ネットワークと共有センター」画面で、「アダプターの設定の変更」をクリックします。

作成したVPN接続のアイコンを右クリックし、「プロパティ」をクリックします。

「セキュリティ」タブの「VPNの種類」は「IPsecを利用したレイヤー2トンネリングプロトコル(L2TP/IPsec)」を選択します。

そして「詳細設定」をクリックします。

「認証に事前共有キーを使う」のラジオボタンをクリックし、「キー」のテキストボックスには VPC ルータの”リモートアクセスVPN設定”の際に設定した「Pre Shared Secret」を入力し、「OK」をクリックします。

それから「OK」をクリックし、プロパティを閉じます。

作成したVPN接続のアイコンをダブルクリックすると、接続確認の画面が表示します。パスワードを入力し、「接続」をクリックします。

「接続済み」と表示されたら、VPN 接続に成功しています。

次のように「接続済み」と表示されていれば、接続完了です。

あとは、疎通確認のために、VPCルータのプライベートIPアドレスとDBサーバのプライベートIPアドレスにpingを実行します。

    
>ping 192.168.0.254

192.168.0.254 に ping を送信しています 32 バイトのデータ:
192.168.0.254 からの応答: バイト数 =32 時間 =24ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 =2ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 =7ms TTL=64
192.168.0.254 からの応答: バイト数 =32 時間 =9ms TTL=64

192.168.0.254 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 2ms、最大 = 24ms、平均 = 10ms

>ping 192.168.0.100

192.168.0.100 に ping を送信しています 32 バイトのデータ:
192.168.0.100 からの応答: バイト数 =32 時間 =19ms TTL=63
192.168.0.100 からの応答: バイト数 =32 時間 =6ms TTL=63
192.168.0.100 からの応答: バイト数 =32 時間 =8ms TTL=63
192.168.0.100 からの応答: バイト数 =32 時間 =5ms TTL=63

192.168.0.100 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 5ms、最大 = 19ms、平均 = 9ms
    

疎通を確認できたので、DB サーバにSSHでログインします。ログイン時に指定するホストは DB サーバの IP アドレスです。ログインできたら、インターネット上のサーバへ ping を実行し、インターネットと DB サーバの疎通を確認します。

    
[root@db01 ~]# ping www.sakura.ad.jp
PING site-112800350116.gslb3.sakura.ne.jp (153.127.213.134) 56(84) bytes of data.
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=1 ttl=55 time=18.5 ms
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=2 ttl=55 time=18.4 ms
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=3 ttl=55 time=18.6 ms
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=4 ttl=55 time=18.4 ms
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=5 ttl=55 time=18.4 ms
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=6 ttl=55 time=18.5 ms
^C
--- site-112800350116.gslb3.sakura.ne.jp ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5008ms
rtt min/avg/max/mdev = 18.440/18.517/18.637/0.152 ms
    

VPN設定手順(macOSの場合)

「システム詳細設定」を開きます。

「ネットワーク」を開きます。

赤枠部分の「+」アイコンをクリックします。

インターフェイスは「VPN」、VPNタイプは「L2TP over IPsec」、サービス名を「VPN(さくらのクラウド接続用)」とし、「作成」をクリックします。

「サーバアドレス」にVPCルータのグローバルIPアドレス(記載箇所は次項に書いてます)を入力し、「アカウント名」はVPCルータのリモートアクセスVPN設定の際に作成したアカウントのユーザ名を入力します。入力が終わったら下の「詳細設定」をクリックします。

なお、VPCルータのグローバルIPアドレスは、コントロールパネルの「VPCルータ」→「インターフェース→「グローバル」行の「IPアドレス」から確認できます。

「パスワード」にはVPCルータの”リモートアクセスVPN設定”の際に作成したアカウントのパスワードを入力し、「共有シークレット」にはVPC ルータの”リモートアクセスVPN設定”の際に設定した「Pre Shared Secret」を入力し、「OK」をクリックします。

「適用」をクリックします。

「接続」をクリックします。

VPN接続が開始されます。

以下のスクリーンショットのように「接続済み」と表示されていれば、VPN接続は成功です。

「ターミナル」を開きます。

DB サーバにSSHでログインします。ログイン時に指定するホストは DB サーバの IP アドレスです。

ターミナルを開いたら、下記コマンドを入力します。

    
$ ssh root@192.168.0.100
    

以下のメッセージが表示された場合は「yes」と入力し、Enterキーを押下します。

    
The authenticity of host '192.168.0.100 (192.168.0.100)' can't be established.
ECDSA key fingerprint is SHA256:s8saKG7+8wvUAvk7ztcMPMQOmZbblfX0vMpPDoQ+z4k.
Are you sure you want to continue connecting (yes/no)? yes
    

rootパスワード(管理ユーザーのパスワード)を入力します。

    
Warning: Permanently added '192.168.0.100' (ECDSA) to the list of known hosts.
root@192.168.0.100's password:
    

ログインできたら、インターネット上のサーバへ ping を実行し、インターネットと DB サーバの疎通を確認します。

    
[root@db01 ~]# ping www.sakura.ad.jp
PING site-112800350116.gslb3.sakura.ne.jp (153.127.213.134) 56(84) bytes of data.
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=1 ttl=55 time=19.1 ms
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=2 ttl=55 time=18.4 ms
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=3 ttl=55 time=18.6 ms
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=4 ttl=55 time=18.4 ms
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=5 ttl=55 time=18.5 ms
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=6 ttl=55 time=18.6 ms
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=7 ttl=55 time=18.5 ms
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=8 ttl=55 time=18.6 ms
64 bytes from vip2a.www.sakura.ad.jp (153.127.213.134): icmp_seq=9 ttl=55 time=18.7 ms
^C
--- site-112800350116.gslb3.sakura.ne.jp ping statistics ---
9 packets transmitted, 9 received, 0% packet loss, time 8013ms
rtt min/avg/max/mdev = 18.453/18.663/19.127/0.255 ms
[root@db01 ~]#
    

これで、DBサーバからインターネットへの通信と、自分のPCからDBサーバへの通信ができることを確認しました。実際にはここからMySQL等のDBサーバソフトウェアをインストールし、WebサーバからDBへの接続を許可する設定等、セットアップ作業を行えます。

これで応用編のカリキュラムは完了です。応用編にて作成したインフラ構成は実際にWebサービスを開発・運用していく下地として利用可能です。今回はご紹介できませんでしたが、WebサーバへのWebアプリケーションフレームワークの導入や、負荷に応じてWebサーバを増減させるAutoScaling、DBサーバのクラスタリングなどを勉強していくと、より高度なシステム基盤が構築できるようになりますので、ぜひ挑戦してみてください。

ここまでの内容を理解できているか確かめよう!

閉じる

第1問/3

応用編3チェックテスト

Webサーバのメンテナンスにあたり、ロードバランサが有用になってくる理由を選択してください。

以下から回答を選択してください

閉じる

第2問/3

応用編3チェックテスト

リモートアクセスVPN接続(L2TP/IPsec)において、認証に使用しないものはどれですか。選択してください。

以下から回答を選択してください

閉じる

第3問/3

応用編3チェックテスト

DBサーバを接続した仮想アプライアンスを以下から選択してください。

以下から回答を選択してください

解説

1と3の機能はありません。4は作業中のページを表示しますので、見かけ上のサービスが停止してしまいます。2の"利用者に対して"サービスを停止せずにメンテナンスをできるのが一番の利点です。

解説を閉じる

解説

認証には1(ユーザー名)、2(パスワード)、4(事前共有キー)を用います。IP アドレスは接続先のVPNルータによって異なります。

解説を閉じる

解説

DBサーバはローカルネットワークにのみ接続しました。ルータ+スイッチに接続するとグローバルIPアドレスが割り当てられるためセキュリティ要件を満たしません。VPCルータには直接サーバを接続することができません。ロードバランサにはサーバを接続する機能がありません。

解説を閉じる

閉じる

解答結果

第1問
×不正解 解説を見る
第2問
×不正解 解説を見る
第3問
×不正解 解説を見る

最終のチェックテストが完了しました!

認定試験に挑戦して
「さくら公認クラウドマスター」認定証をGETしましょう!

試験に挑戦する

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る