AWS勉強 -プライベートサブネットにサーバーを構築する-

# プライベートサブネットにサーバーを構築する

プライベートサブネットができたので次にサーバーを構築していく!

## サーバーを構築する

![スクリーンショット 2018-10-27 18.04.23.png](https://qiita-image-store.s3.amazonaws.com/0/196465/ec4a2a93-09b5-1167-4013-4e68fdecfe51.png)

からの,

https://qiita.com/KawamotoShuji/items/71acff242ee7548bd4f9

ステップ3までは上記参考に🙇‍♂️

![スクリーンショット 2018-10-27 18.27.50.png](https://qiita-image-store.s3.amazonaws.com/0/180668/95351d7b-f47d-e9ee-cc30-d56c396dd057.png)

からの,

![スクリーンショット 2018-10-27 18.31.38.png](https://qiita-image-store.s3.amazonaws.com/0/180668/4330d1df-5eaf-1bd1-3d3f-c0016c438f4a.png)

からの,

![スクリーンショット 2018-10-27 18.35.11.png](https://qiita-image-store.s3.amazonaws.com/0/180668/4d4f5e84-8ea5-eedb-e204-24a0538c403b.png)

からの,

![スクリーンショット 2018-10-27 18.38.50.png](https://qiita-image-store.s3.amazonaws.com/0/180668/998da492-83d3-3221-5ff5-92bc04b5b72b.png)

正常に作られたのか確認する,

![スクリーンショット 2018-10-27 18.49.06.png](https://qiita-image-store.s3.amazonaws.com/0/180668/48725830-3bbb-8688-77ed-302ed5056a00.png)


## pingコマンドで疎通確認できるようにする

このDBサーバーがWebサーバーからアクセスできるかどうか確認してみる.

サーバー間での疎通を確認するときによく用いるのが「pingコマンド」だ.

pingコマンドを実行するとネットワーク疎通を確認したいホストに対して「ICMPエコー要求」というパケットを送信する.
それを受け取ったホストは「ICMPエコー応答」というパケットを返信する.
このコマンドでは「ICMPエコー要求」と「ICMPエコー応答」のやりとりから疎通確認や相手に届くまでの時間を計測したりする.

### ICMPが通るように構成する

#### 手順1 -インバウンドの設定を始める-

![スクリーンショット 2018-10-27 20.04.36.png](https://qiita-image-store.s3.amazonaws.com/0/180668/954b061b-c064-71f1-0bd3-220f89d98b37.png)

からの,

![スクリーンショット 2018-10-27 20.14.18.png](https://qiita-image-store.s3.amazonaws.com/0/180668/4da06e5e-7ba9-8407-f1d2-8b263c4fdba6.png)

からの,

![スクリーンショット 2018-10-27 20.39.17.png](https://qiita-image-store.s3.amazonaws.com/0/180668/1c74ad1a-d92a-9a4b-37de-8a19212e1db6.png)


### 疎通を確認する

ICMPプロトコルを通るように構成したのでpingコマンドを使って疎通確認できる.
実際にWebサーバーからDBサーバーへの疎通確認をしてみる.


![スクリーンショット 2018-10-27 20.40.24.png](https://qiita-image-store.s3.amazonaws.com/0/180668/e9f7074f-23a6-3161-058d-0c0068bf45fe.png)

#### SSHでログインする

```shell
$ ssh -i ~/Downloads/my-key.pem ec2-user@ec2-18-179-47-97.ap-northeast-1.compute.amazonaws.com
```

#### DBサーバーのIPに対してpingを実行してみる

```shell
$ ping 10.0.2.10
```

<img width="412" alt="スクリーンショット 2018-10-27 20.51.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/180668/f090ed9a-80d2-7aed-75df-049e2e6ee8a7.png">

上記みたいな感じになる.

### ローカル環境からWebサーバーに疎通できるようにする

さらにpingコマンドを使って疎通確認を続ける.

#### 接続してみる

ローカル環境からこのWebサーバーに対してpingコマンドを実行してみる.

```shell
$ ping ec2-18-179-47-97.ap-northeast-1.compute.amazonaws.com
```

<img width="740" alt="スクリーンショット 2018-10-27 21.10.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/180668/de533c9a-3719-3d0e-bad3-2402762c2060.png">

しかし,上記のようにTimeOutしてしまう.
これはWebサーバーと疎通不可能なわけではなく,Webサーバーに適用されているセキュリティグループにおいてICMPを許可していないからだ.

#### ICMPを許可する設定を加える

![スクリーンショット 2018-10-27 21.15.19.png](https://qiita-image-store.s3.amazonaws.com/0/180668/68c23eab-1ee9-af8a-db8d-7858a200efd7.png)

そうすると疎通確認することができる.

<img width="742" alt="スクリーンショット 2018-10-27 21.23.48.png" src="https://qiita-image-store.s3.amazonaws.com/0/180668/6d92c000-212d-29b0-dd60-c6fee13247e4.png">

## 踏み台サーバーを経由してSSHで接続する

ここまでで作成したDBサーバーにSSHでログインしてMySQLをインストールする.
そこで疑問なのが,DBサーバーはインターネットと接続されていないのにどうやってSSH接続するのかだ.
その解決策の１つが「踏み台サーバー」だ.
ここまでで,WebサーバーにはSSHで接続でき,WebサーバーからDBサーバーに疎通確認が取れている.
そこで,
①WebサーバーにSSHでアクセス,②WebサーバーからDBサーバーにSSHでアクセスというようにWebサーバーを踏み台とすればローカル環境からDBサーバーへとアクセスできる.

### 秘密鍵をアップロードする

インスタンスにSSHでアクセスするには「秘密鍵」をWebサーバーに置く必要がある.
サーバーにファイルを転送するには「SCP(Secure Copy)」というプロトコルを使う.

#### ファイルを転送してみる

Macで行う!
ターミナルで以下を実行.

```shell
$ scp -i ~/Downloads/my-key.pem ~/Downloads/my-key.pem ec2-user@ec2-18-179-47-97.ap-northeast-1.compute.amazonaws.com:~/
```

### WebサーバーからSSHで接続する

接続しましょう!(雑

#### 鍵ファイルのパーミッションを変更する

下記コマンドを入力

```shell
$ chmod 400 my-key.pem
```

<img width="345" alt="スクリーンショット 2018-10-27 22.01.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/180668/4ca9343b-b2c2-81d6-bbb7-cfdf911a9b4d.png">

こんな感じ.

#### Webサーバーを踏み台にしてDBサーバーにSSH接続

Webサーバー上から下記コマンドを入力

```shell
$ ssh -i my-key.pem ec2-user@10.0.2.10
```

![スクリーンショット 2018-10-27 22.06.08.png](https://qiita-image-store.s3.amazonaws.com/0/180668/891cce03-53c7-e3dc-e303-2d5698ef5af9.png)

できた❣️

## 感想

会社でAWSのDBサーバーにアクセスするとき,
二回SSHログインしていた意味がわかった.
こんな構成になっていたんだ...
もっと勉強するぞ.