概要
VirtualBox上に仮想マシンを構築する際、セキュリティと利便性のどちらもに気を配るとすると、ネットワーク設定はどのようにすべきか。
ここでいうネットワーク設定とは、仮想マシンの設定で選択できるNAT、ブリッジアダプター、ホストオンリーアダプターなどを意味する。
結論
- アダプター1を"NAT"、アダプター2を"ホストオンリーアダプター"に設定する
- これはVagrantを使った場合と同じ設定である
OSのネットワーク設定
このネットワーク設定を行った場合、OS(Linuxを想定)のネットワーク設定はどのようになるか
(最近のOSではデバイス名がeth0とかeth1ではなくなっているようなので、適宜読み替えてほしい )
###ポイント
- アダプター1(おそらくeth0)はDHCPを使う
- アダプター2(おそらくeth1)は固定IPアドレスを設定する
- 設定するIPアドレスは、ホストOSにアタッチされている"ホストオンリーアダプター"を見て(詳細は後述)
設定例(抜粋)
/etc/sysconfig/network-scripts/ifcfg-eth0
~~~
TYPE=Ethernet
BOOTPROTO=dhcp
ONBOOT=yes
~~~
/etc/sysconfig/network-scripts/ifcfg-eth1
~~~
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.33.30
NETMASK=255.255.255.0
~~~
「ホストOSにアタッチされているホストオンリーアダプターとは
- VirtualBoxの仮想マシンの設定で「ホストオンリーアダプター」を選択した場合、最低1つ以上の仮想的なNICがホストOS(VitualBoxを動かしているマシン)にアタッチされている状態となる
- これは、Windowsであれば
ipconfig
、Linuxであればifconfig
で確認できる- Windowsであれば、「イーサネットアダプター VirtualBox Host-Only Network #1」という項目になっているはず
- ここで「IPv4アドレス: 192.168.33.1、サブネットマスク:255.255.255.0」となっていれば、仮想マシンに設定するIPアドレスの範囲は、192.168.33.2 ~ 192.168.33.254 となり、サブネットマスクは255.255.255.0となる
- 若番、老番は念のため避けて、"192.160.33.30"くらいを使えばよいと思う
解説
冒頭で、アダプター1を"NAT"、アダプター2を"ホストオンリーアダプター"に設定するのが最適であると述べたが、その根拠を簡単に説明する。
ブリッジアダプターを使うべきではない理由
手っ取り早く仮想マシンをネットワーク(インターネット含む)に接続するやり方として、「ブリッジアダプター」を選択する方法があるが、残念ながらセキュリティ的に問題がある。
この設定を行った仮想マシンはホストOSと同じネットワークに存在することとなり、同じLAN内にある別のユーザからアクセスされる恐れがある。(ホストOSを経由した仮想マシンへのパケットは通常、ホストOSのFWでブロックされるが、セキュリティ的な穴をなるべく作らない方がいい)
その他の理由としては、ホストOSが所属するLANと密接な関係をもってしまう点がある。このことは、個人的な検証環境としてVirtualBoxを使うような一般的なユースケースにおいては、うれしくないだろう。
例えば社内環境であれば、仮想マシンに静的なIPアドレスを設定した場合、他のユーザのPCが社内DHCPサーバによって割り当てられたIPアドレスと競合してしまう恐れがある。
もちろんあえて仮想マシンを外部に公開したい場合においては、ブリッジアダプターは選択すべきだ。その場合でも、設定するネットワーク設定には注意を払う必要がある。
NATとホストオンリーアダプターを共存させる理由
まず、NATをつかうことで、ネットワーク設定が容易になる。
NATを使いつつVirtualBoxの内部にあるDHCPサーバを利用することで、IPアドレス、デフォルトゲートウェイ、DNSサーバの設定が自動的に得られるため、面倒なインターネット接続までの設定が不要になる。
しかし、このままではIPアドレスは固定されないため、仮想マシン上でアプリを動かしたときの動作確認や、ホストOSからのSSH接続の設定が面倒だ。
そこでホストオンリーアダプターの設定が効いてくる。ここでは固定IPアドレスを設定する。
まとめると、1つ目のアダプターでネットワーク設定を自動化し、2つ目のアダプターで固定IPアドレスを持たせてアクセスしやすくする。
こうすることで、セキュリティと利便性のどちらもに配慮したネットワーク設定が実現できる。
参考文献
- VirtualBoxのドキュメント