Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

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

ベストプラクティス

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

環境

  • macOS 10.12.6
  • MacBook pro 2016
  • VirtualBox 5.2.18
  • CentOS 7.6-1810

VirtualBoxの設定

まずは、ホストオンリーアダプターを設定するために、アダプターを作成します。
VirtualBoxを起動して、右上のグローバルツールをクリック。
スクリーンショット 2019-01-04 2.08.19.png
次は、「ホストネットワークマネージャー」をクリック。
スクリーンショット 2019-01-04 1.35.26.png
左上の「作成」をクリックすると、新しくアダプターを作成できます。
作成されたアダプターを選択して、下に表示されるアダプタータブを開き、「アダプターを手動で設定」を選択します。
そのあと、IPv4アドレスを設定してください。
このIPアドレスがホストOS側のIPアドレスとなります。
ここは、プライベートIPなので192.168.*.*にしましょう。
ここで設定したIPは後で使うので覚えておいてください。
※DHCPサーバーを有効化して、IPを自動割り当てにしても良いですが、その際は上限と下限を正しく設定してあげないと繋がらなくなることがあるので注意してください。
スクリーンショット 2019-01-04 1.35.37.png
これで、VirtualBoxでの設定は完了です!

仮想マシンの設定

仮想マシンの設定を行います。
対象の仮想マシンを選択した状態で、左上の設定をクリックします。
そのあとに、ネットワークを選択してください。
アダプター1はデフォルトでNATになっているので、そのままで大丈夫です。
スクリーンショット 2019-01-04 3.20.08.png
アダプター2をクリックして、「ネットワークアダプターを有効化」をチェックしてください。
割り当ての項目を、ホストオンリーアダプターに設定して、名前を先ほど作成したアダプター名にしてください。
スクリーンショット 2019-01-04 3.30.47.png
これで、仮想マシン側の設定は完了です!

CentOSの設定

次は、CentOSの設定です。
まずはログイン。
nmtui(NetworkManagerのtui)コマンドで、ネットワークマネージャーを開きます。
スクリーンショット 2019-01-04 3.51.06.png
開いたあとは、「Edit a connection」を選択してEnter
スクリーンショット 2019-01-04 3.54.04.png
まずは「enp0s3」を選択してEnter
※enp0s3はNATのアダプター名です。
スクリーンショット 2019-01-04 3.54.26.png
IPv6の部分をIgnoreに変更して、「Automatically connect」にチェックを付けてください。(チェックはspaceキーでつけることができます)
NATのアダプターの設定はこれで完了。
スクリーンショット 2019-01-04 3.56.32.png
OKを選択してEnterすると、先ほどの画面に戻るので、「■■■■1」を選択してEnter(何故かこの文字化け見たいな名前になっていますが、本来はenp0s8となっているはずです…)
これが、ホストオンリーアダプターの名前になります。スクリーンショット 2019-01-04 4.10.58.png
Profile name を「enp0s8」にしてください。
IPv4の部分をManualに変更してください。
IPv4の右側のshowを選択してEnterを押すと、詳細が開かれます。
Addressesの部分を入力します。
先ほどVirtualBoxで設定した、ホストOSのIPv4のIPアドレスを下限に、ネットマスクを上限にして、IPアドレスを入力してください。
スクリーンショット 2019-01-04 4.12.14.png
スクリーンショット 2019-01-04 4.21.25.png
IPv6をNATの時と同様に、Ignoreに変更して、「Automatically connect」にチェックを付けてください。
スクリーンショット 2019-01-04 4.12.28.png
OKを押して、次はBackを押します。
スクリーンショット 2019-01-04 3.58.31.png
最後にQuitを押して、nmtuiを閉じます。
スクリーンショット 2019-01-04 3.58.49.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を入れて設定しみる!

nooboolean
3年目になってしまったエンジニア。 基本自分の備忘録用として残していますが、自分と同じことに迷った人に伝わりやすい記事を書くことが目標です。わかりにくい部分があればどしどしご指摘ください。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away