某新人くんに捧ぐ…
前提
まず、私の使用しているWindows PCのネットワークはこんな感じ
インターネットには無線LANのアダプタを通して接続しています。
有線LANのアダプタもあります。
ホストオンリーアダプター
# VirtualBoxのデフォルトの設定はNATですが、説明しやすさから、まずはこちら。
Host-only Adapterは、仮想的なアダプタ(NIC)をホストOSに作成して、それを通して、VirtualBoxの仮想マシンとホストOSを接続します。ホストOSからすると、物理的にLAN接続して別の機器を通信しているように見えます。
VirtualBoxの仮想マシン同士も、このloopback interfaceとして作られたアダプタを通して通信するので、ホストOSからパケットを覗くことができます。なお、このネットワークは、ホストOSの物理的なアダプタと関わらないので、仮想マシンがインターネットへ出ることはできません。
内部ネットワーク
こちらは、VirtualBox内部のスイッチ的なものを通して仮想マシン同士を通信を可能にします。
ホストOSのアダプタは一切介さないので、ホストOSからパケットを覗くことはできません。また、当然このネットワークもインターネットと接続することはできません。
NAT
"NAT"はホストOSと仮想マシンつなぎ、仮想マシンからインターネットへの接続を可能にします。Virtual Boxがルーターとして、仮想マシンとホストOSをつなぎ、さらにホストOSが仮想マシンからのパケットをルーティングして、インターネットへと送り出します。ホストOSからは、VirtualBoxの仮想マシンも別のネットワークにいるホストに見えます。
この設定は仮想マシンごとに、OSとの間にルーターがあるイメージなので、仮想マシン同士は接続できません。また、NATを挟んでいるので、そのままではインターネットやホストOSから仮想マシンへアクセスすることはできません(ポートフォワーディングを行ええば可能ですが、ここでは詳細省略)。
仮想マシン同士が接続できないので一見不便ですが、インターネットからアクセスさせるような時、その対象を指定の一台に限定することができます。
Nat network
NATネットワークは、VirtualBox内のNAT用ネットワークと、ホストOSとを接続します。ホストOSやインターネットからの見え方はNATと同じです。
NATと異なり、VirtualBoxの内部ネットワークを作成するので、仮想マシン同士も接続が可能です。
Bridged
ブリッジは、ホストOSの物理アダプタを利用して、仮想マシンとホストOSを接続します。ホストOSからすると、既存のアダプタで接続しているネットワーク上に、新しく機器が加わったような感じです(VirtualBoxはスイッチ的な役割)。
当然ブリッジ接続した仮想マシン同士の通信は可能です。実際はホストOSの物理アダプタを利用した通信なので、仮想マシン同士の通信はアダプタからパケットが覗けます。また、同じアダプタをつかっているので、当然仮想マシンもインターネットへ接続ができるようになります。
NATと違い、ホストOS同様もろにインターネットにさらされることになる点に注意。
組み合わせ例
webサーバーは外からもアクセスできるようブリッジでインターネットへ接続できるようにして、その他はホストオンリーでホストOSとつなげるようにしています。
参考
基本的に公式Documentに全て書いてあります。
https://www.virtualbox.org/manual/ch06.html
以上