Mac OS X 上の仮想環境として、Oracle VirtualBox を利用しています。
VirtualBox のネットワーク設定は幾つかあります。今回、その違いを理解するために調べてみました。
※ 以降の図や構成は理解することを優先に作成したので、技術的に必ずしも正しくない箇所があるかもしれません。
※ VirtualBox を利用したネットワーク構成は様々な状況が考えられ、以下は一例です。
VirtualBox ネットワークとして設定できる、以下4つの設定をそれぞれ見てみます。
- NAT
- Briddged Adapter
- Internal Network
- Host-only Adapter
VirtualBox で設定できる ネットワーキング構成
- NAT (Network Address Translation : ネットワークアドレス交換)
- ゲストOS から外部ネットワークには通信可能
- 外部ネットワークおよびホストOSからの通信は基本不可 (ポートフォワーディング機能を使用することで特定のアプリの接続は可能)
- ゲストOS は DHCP による IPアドレスの自動取得設定とする必要がある (ゲートウェイと DNSサーバーも決めうち)
- ゲストOS 間の通信は不可
- Bridged Adapter (ブリッジアダプタ)
- ゲストOS は、ホストOS と同じネットワークセグメントの設定とすることで、ホストOS と同じように外部ネットワークへ通信可能
- 同じネットワークセグメントであれば、ゲストOS間 および ホストOSとゲストOS 間での通信が可能
- セキュリティへの考慮に気をつけること
- Internal Netwaork (内部ネットワーク)
- ゲストOS は、ホストOS および外部ネットワークへの通信不可
- 同じネットワークセグメントであれば、ゲストOS間での通信が可能
- Host-only Adapter (ホストオンリーアダプタ)
- ゲストOS から外部ネットワークへの通信不可
- ゲストOS と ホストOS は、ホストOS で構成されている Host-Only Network アダプタを介して通信可能
- ゲストOS間での通信は可能
NAT は、VirtualBox のデフォルトネットワーク設定。ホストOS 上の NATエンジンにより、ゲストOS は特別な設定をせず ホストOS より先の外側のネットワーク(インターネットなど)に接続することができる。
外側のネットワークから、ゲストOS に対しては基本的に接続できない。これにより、セキュリティの脅威から ゲストOS を守ることができる。
ポートフォワーディング機能を利用することで、外側のネットワーク上に存在するマシン あるいは ゲストOS上から特定のアプリケーションが ホストOS へ接続することは可能になる。ただしポートごとに設定が必要となるため、ある程度自由に接続したい状況では、柔軟性に欠ける。
ゲストOS では、IPアドレスは DHCP を利用して取得しなければならないなど、ゲストOS 上のネットワーク設定の制限が幾つかある。
NAT 構成の機能をまとめると以下のとおり:
ゲストOS と同じ間隔でネットワークを利用することができる。
ゲストOS と同じネットワークセグメントの設定とすることで、あたかもそのネットワークセグメントに存在しているかのように ゲストOS あるいは ゲストOS上のネットワーク/外側のネットワークと自由に通信することができる。
一番柔軟性が高く何かと便利なのですが、セキュリティの脅威にさらされる状況も ゲストOS と同じ状況なので、ウイルス対策や外からの不意な攻撃に耐えられるようにする必要があるだろう。
Bridged Adapter 構成の機能をまとめると以下のとおり:
ゲストOS から ホストOS 含め外部のネットワークと通信することはできない。
しかし、それ以外の動作はブリッジアダプタとほぼ同じであり、ゲストOS 同士であれば自由に通信をすることができる。
そのため、セキュリティ的な観点からは安全な選択といえるだろう。
Internal Network 構成の機能をまとめると以下のとおり:
これは、「Internal Network の動作」+「ホストOS へ通信可能」の設定といる。
ゲストOS 間では Internal Network のように自由に通信が可能。
外部ネットワークと通信はできませんが、VirtualBox 導入時に ホストOS で構成される「VritualBox Host-Only Network」という仮想イーサネットアダプタを介して ゲストOS から ホストOS へ通信が可能になる。
Host-Only Adapter 構成の機能をまとめると以下です。
これらのことを考えると、
ゲストOS からインターネットなど外部ネットワークに接続したいけど、他のゲストOS やホストOS と通信する必要がないときは NAT を選択
=> セキュリティ的にも安全。通信は柔軟にできないが、VirtualBox の「共有フォルダ」機能を使えば、ホストOS とのデータのやり取りはできる
インターネットに接続する必要はないが、ゲストOS を複数立てて HTTPサーバ <-> DBサーバ みたいなテストをしたいときは Internal Network あるいは Host-Only Adapter を選択
=> Host-Only Adapter であれば、ホストOS から 各ゲストOS に telnet で操作できたり Webヴラウザから自由にアクセスできるので便利
ゲストOS 自体がセキュリティ対策がされており(あるいは、セキュリティ攻撃されたも重要なデータないしOKとか)、ホストOS 以外の複数の人から ゲストOS にアクセスさせたいときは Bridged Adapter を選択
=> 一番色々と自由に使い倒せる設定。複数 ゲストOS 立てて ホストOS 自体が閉じられたネットワーク内にいるなど、セキュリティの考慮も不要であればこれが一番手っ取り早くて便利かも
となるかな。
VirtualBox は複数のイーサネットアダプタを異なる構成で設定できるので、他のサイトでも紹介があるように NAT + Host-Only Adapter の2つのアダプタを構成して、「インターネット接続は NAT」「ホストOSおよびゲストOSへの接続は Host-Only Adapter」としてしまうのがよろしいかも。
自分の場合は・・・ ちょっとした検証で使うことが多いので、セキュリティなど何も考えず Bridged Adapter を使っちゃってます。
【確認環境】
- Mac OS X 10.6.8
- VirtualBox 4.0.10
コメント