CentOSにSSH接続してみる！VirtualBoxのNATとホストオンリーアダプターによるネットワーク設定のベストプラクティス！〜安全かつ快適な開発ができるようにする〜

#はじめに
VirtualBoxでCentOSの環境を作ってみた系の記事がたくさん上がっていますが、よく目にするのは**とりあえず「ブリッジアダプター」にしよう。**みたいな設定です。確かに、この設定にすることで外部ネットワーク、仮想マシン同士、ホストOSとゲストOS間の双方向接続全てが可能になります。
しかし、このままだとセキュリティ的によろしくないです。なぜなら、ブリッジアダプターではゲストOSのネットワークはホストOSと同じネットワークに繋がってしまい、そのネットワークにいる他のPCからもゲストOSにアクセスできてしまうからです。
そこで、セキュリティを保ちながら開発もしやすいように必要な部分のアクセスのみ許容するネットワーク設定をご紹介します！

#ベストプラクティス
・NAT
・ホストオンリーアダプター
この２つを設定することで、
`仮想マシンからは外部ネットワークに接続できて、外部ネットワークからは仮想マシンに接続できない状態。`
`ホストOSからゲストOSへの接続(sshとか)ができる状態。`
この２つの状態を作ることができます。
外部から汚されず、ホストからゲストへの通信も行える安心安全なネットワーク設定です！
今回はこの設定方法を説明します！

#環境
 - macOS 10.12.6
 - MacBook pro 2016
 - VirtualBox 5.2.18
 - CentOS 7.6-1810

#VirtualBoxの設定
まずは、ホストオンリーアダプターを設定するために、アダプターを作成します。
VirtualBoxを起動して、右上のグローバルツールをクリック。
<img width="1041" alt="スクリーンショット 2019-01-04 2.08.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/01dba583-19e3-46ec-1068-9798fd4bf80d.png">
次は、「ホストネットワークマネージャー」をクリック。
<img width="1440" alt="スクリーンショット 2019-01-04 1.35.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/ed124dfd-f9ea-d6c7-eef7-e92d4b58883c.png">
左上の「作成」をクリックすると、新しくアダプターを作成できます。
作成されたアダプターを選択して、下に表示されるアダプタータブを開き、「アダプターを手動で設定」を選択します。
そのあと、IPv4アドレスを設定してください。
このIPアドレスがホストOS側のIPアドレスとなります。
ここは、プライベートIPなので`192.168.*.*`にしましょう。
ここで設定したIPは後で使うので覚えておいてください。
※DHCPサーバーを有効化して、IPを自動割り当てにしても良いですが、その際は上限と下限を正しく設定してあげないと繋がらなくなることがあるので注意してください。
<img width="1440" alt="スクリーンショット 2019-01-04 1.35.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/f989a458-c4e6-c8c3-6a67-8313b6ce057c.png">
これで、VirtualBoxでの設定は完了です！
#仮想マシンの設定
仮想マシンの設定を行います。
対象の仮想マシンを選択した状態で、左上の設定をクリックします。
そのあとに、ネットワークを選択してください。
アダプター1はデフォルトで`NAT`になっているので、そのままで大丈夫です。
<img width="1440" alt="スクリーンショット 2019-01-04 3.20.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/9d10559e-d528-a094-1b3f-baee448f5c9d.png">
アダプター2をクリックして、「ネットワークアダプターを有効化」をチェックしてください。
割り当ての項目を、`ホストオンリーアダプター`に設定して、名前を先ほど作成したアダプター名にしてください。
<img width="1440" alt="スクリーンショット 2019-01-04 3.30.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/b33d5e77-f222-d61d-5126-23d2fbabecea.png">
これで、仮想マシン側の設定は完了です！
#CentOSの設定
次は、CentOSの設定です。
まずはログイン。
`nmtui（NetworkManagerのtui）`コマンドで、ネットワークマネージャーを開きます。
<img width="718" alt="スクリーンショット 2019-01-04 3.51.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/3be04727-a4cd-d49f-e6d7-39958d1f8771.png">
開いたあとは、「Edit a connection」を選択してEnter
<img width="720" alt="スクリーンショット 2019-01-04 3.54.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/0483de63-1634-ef46-4bb7-efbfc6a360c8.png">
まずは「enp0s3」を選択してEnter
※enp0s3はNATのアダプター名です。
<img width="718" alt="スクリーンショット 2019-01-04 3.54.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/d1c41133-2d13-8cf2-7638-4c322874a8ff.png">
IPv６の部分を`Ignore`に変更して、「Automatically connect」にチェックを付けてください。（チェックはspaceキーでつけることができます）
NATのアダプターの設定はこれで完了。
<img width="719" alt="スクリーンショット 2019-01-04 3.56.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/2c05fc47-caa0-f427-425d-f450e82cbb03.png">
OKを選択してEnterすると、先ほどの画面に戻るので、「■■■■1」を選択してEnter（何故かこの文字化け見たいな名前になっていますが、本来は`enp0s8`となっているはずです…）
これが、ホストオンリーアダプターの名前になります。<img width="721" alt="スクリーンショット 2019-01-04 4.10.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/43d49f21-ca15-5556-071e-33ed2b9072dc.png">
Profile name を「enp0s8」にしてください。
IPv4の部分を`Manual`に変更してください。
IPv4の右側の`show`を選択してEnterを押すと、詳細が開かれます。
`Addresses`の部分を入力します。
先ほどVirtualBoxで設定した、ホストOSのIPv4のIPアドレスを下限に、ネットマスクを上限にして、IPアドレスを入力してください。
<img width="721" alt="スクリーンショット 2019-01-04 4.12.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/973956e9-4fb0-e7a0-d940-ddbc952e4ccb.png">
<img width="1047" alt="スクリーンショット 2019-01-04 4.21.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/ac033939-6387-bb83-8540-5fc36d99f6b2.png">
IPv6をNATの時と同様に、`Ignore`に変更して、「Automatically connect」にチェックを付けてください。
<img width="722" alt="スクリーンショット 2019-01-04 4.12.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/c5e9cc76-a166-9ae5-11c9-b312ba2d6017.png">
OKを押して、次はBackを押します。
<img width="722" alt="スクリーンショット 2019-01-04 3.58.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/5e417d9f-9967-54e8-ed0d-e70645ae5113.png">
最後にQuitを押して、nmtuiを閉じます。
<img width="722" alt="スクリーンショット 2019-01-04 3.58.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/183984/38f9ed5d-a436-4e2c-aaba-3f3be96c1389.png">
あとは、NetworkManegerとNetworkを再起動させて、変更の反映をします。

```
# systemctl restart NetworkManager 
# systemctl restart network 
```

あとは、ホストOS側でSSHできたら、完了！！

```
$ ssh root@192.168.10.3 //自分でホストオンリーアダプターに設定したゲストOSのIP
```

###余談
このIPアドレスをいちいち入力しなければならないのは面倒ですよね…
hostsファイルに設定を書き加えてあげると、IPアドレスと任意の名前が結びついてくれます。
ファイルの場所は以下です！

```
mac
/private/etc/hosts

Windows
C:\Windows\System32\drivers\etc\hosts
```
#次回
CentOSにApachを入れて設定しみる！