VirtualBoxのネットワークアダプタの種類と各アダプタによる動作の違いについて理解があいまいだったので整理しました。
ネットワークアダプタの種類
VirtualBoxで作成したVMを選択し「設定」画面を開いて「ネットワーク」設定を確認すると、以下のネットワークアダプタを設定できることがわかります。
- NAT
- ブリッジアダプター
- 内部ネットワーク
- ホストオンリーアダプター
- 汎用ドライバー
- NATネットワーク
上記のうち、汎用ドライバー以外のアダプターについて動作の違いを整理。
NAT
ゲストOSから外部への通信が可能
割当てられた IPアドレス(下図で言うと、10.0.2.15)からホストPCの IPアドレス(下図で言うと、192.168.0.2)へ送信元NATされ外部へ出ていくイメージです。
ゲストOSのNICに割当てられる IPはDHCPの場合、10.0.2.15になる模様。複数台の VMを作成しすべてNAT設定にした場合、全ゲストOSが 10.0.2.15の IPを割当てられる。それでも外部への通信は各ゲストOSから問題なく行えます。
外部からゲストOSへアクセスするにはポートフォワーディング設定が必要
外部からゲストOSへアクセスするには、VMの[設定] - [ネットワーク] - [NATアダプター] - [高度] - [ポートフォワーディング]で設定が必要です。
ホストIPとゲストIPの設定は必須ではない(空白でよい)ので、プロトコルとホストポート、ゲストポートを設定すればよい。 ホストPCの 「TCP2222番ポート」宛のパケットを ゲストOSの「TCP22番ポート」へ転送したい場合は、「プロトコル=TCP」「ホストポート=2222」「ゲストポート=22」と設定すればよい。 上記設定をすれば、外部PCなどから 「ssh -p 2222 ホストPCのIPアドレス」へアクセスするとゲストOSへSSH接続可能になります。
ゲストOS間の通信はできない
ゲストOS間の通信を行いたい場合は、NATネットワークを選択する必要があります。
ブリッジアダプター
ホストPCと同じセグメントの IPを割当てる
ブリッジアダプターの場合、ゲストOSのNICにホストPCの物理NICに割当てている IPアドレスと同じセグメントの IPアドレスを割当てます。 外部(インターネット)への通信ならびに同じセグメント内のPC(他のゲストOSも含む)との送受信が行え、外部(下図のノートPCやルータ)からの通信を隔離する必要がないのなら一番お手軽です。 ただし社内PCなどで IPアドレスの割当がシステム管理者によって管理されているような環境だと勝手に設定できない場合があります。
内部ネットワーク
ゲストOS間の通信ができる
内部ネットワークの名前(任意に設定可能。初期値は intnet)が一致するゲストOS間の通信が可能になります(もちろんゲストOS側の IPアドレス/サブネットマスクを適切に設定する必要はあります) 完全にゲストOS間に閉じた通信だけ行えればいい場合は、内部ネットワークを選択するとよい。
ゲストOSとホストPCや外部との接続ができない
上記の通り外部との通信はできません。
ホストオンリーアダプター
ゲストOS間の通信ができる
内部ネットワークの場合と同様、ゲストOS間の通信ができます。 VMのアダプター設定で同じホストオンリーアダプターを選択し、ゲストOS側のIPアドレス/サブネットマスクを適切に設定すればよい。
ホストOSからゲストOSへの通信ができる
ホストOSに物理NICとは別の仮想NIC(ホストオンリーアダプター)を追加し、IPアドレス/サブネットマスク(初期値は192.168.56.1/24)やDHCP有効/無効(有効の場合は割当て範囲の設定なども)実施します。 ホストOSからゲストOSへの通信は、ホストオンリーアダプターを使用して行われます。
NATネットワーク
NAT + ゲストOS間通信
NATではできなかったゲストOS間の通信が可能になります。 VMのアダプター設定で同じNATネットワーク(任意に設定可能)を選択し、ゲストOS側の IPアドレス/サブネットマスクを適切に設定すればよい。 (NATネットワークは、VirtualBoxの[ファイル] - [環境設定] - [ネットワーク]で設定可能)
外部からゲストOSへアクセスするにはポートフォワーディング設定が必要
NATと同様、外部からゲストOSへアクセスするにはポートフォワーディング設定が必要になります。 ポートフォワーディング設定は「NATネットワーク」の編集画面で行います。
おまけ
NAT + ホストオンリーアダプター
以下のような環境の場合、NAT+ホストオンリーアダプターを使用するとよい。
- ゲストOSからインターネット接続がしたいが、社内NWの IPアドレスを使用できない環境(ブリッジアダプターを使用できない)
- ホストPCからゲストOSへの通信は必要だが、別PCからゲストOSへの接続は不要
- ゲストOS間の通信が必要
上記の設定を行うには、VMに2つアダプタ(仮想NIC)を持たせて「NAT」と「ホストオンリーアダプター」を割当てます。 ゲストOSからインターネットへの通信には NATアダプタを使用し、ホストPCからゲストOSの通信、ゲストOS間の通信にはホストオンリーアダプターを使用するよう設定します。