VirtualBoxのネットワークについて

概要

VirtualBoxのネットワークについて、簡単に解説します。
内容的にはマニュアルの↓の部分です。原文をChrome翻訳などで読める方はそちらの方が正確です。

Chapter 6. Virtual Networking

仮想ネットワックのモードについて

VirtualBoxで構成可能な仮想ネットワークにはいくつかのモードがあり、それぞれ構成や可能なことが異なります。

この画面で割り当ててるやつのことです。アダプターは4つあるので組みあせて使用することも可能です。

モード説明
NAT(デフォルト)いつもお世話になっているモードです。
VM→ホスト/インターネットが可能で、ホスト→VMはポートフォワードしないと出来ません。VM間の通信は出来ません。
NATネットワークVM間の通信も可能なNATです。
ブリッジホストと同じネットワークに参加します。
内部ネットワークVM間だけで通信できます。
ホストオンリーVMとホストが双方向に通信できるモードです。ただしVMはインターネットにはアクセス出来ません。
汎用ドライバ使ったことがないので、説明しません。拡張パックのドライバを使用して、トンネルを作るのに使うようです。

NAT(デフォルト)

デフォルトで簡単そうに見え、Oracleも簡単と言ってますが、ソフト的には実は一番ややこしいモードです。

解説

模式的に書くと以下な感じ。

各VMごとにNATを構成する仮想ルーターがあり、ホストのWindowsはどのIPも10.0.2.2で、ゲスト(VM)はどのIPも10.0.2.15(DHCP)となっています。VMのOSが起動しIPを自動取得すると、仮想ルーターのDHCPで10.0.2.15が返るということです。仮想ルーターはホスト側にIPを持っておらず、従ってVM間の通信はできない、ということになります。ようするにIPが同じか振られていないかで VMの区別が付かないということです。

NATとは…

家庭用のルーターなどで使用されているネットワークの仕組みです。

ネットワークアドレス変換 – Wikipedia

正式にはNAPT、古くはIPマスカレードと呼ばれていた機能の系譜になります。ざっくり説明すると、上図のVMから来たパケットをさもホストから送られたパケットとして外部のネットワークに転送し、返事としてホスト宛に返ってきたパケットを上手いこと識別して(ココが難しい)元のVMに転送する機能です。IP通信はTCP/UDPなどのプロトコルがあり、NAPTは各プロトコルに合わせてIPやポートを上手いこと変換するので、IPマスカレードと呼ばれていました。仕組みについては、

NAPTとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

辺りを読んで分かった気になってください。ココ以上に上手い説明を私は知りません。
IPやポートを変換できないものは弾かれるため、自動的にファイヤーウォールが構築されることになります。

ポートフォワーディングについて

IPやポートを変換できないものに関して、固定の例外的ルールを作ることで、ファイヤーウォールに穴を開けることが出来ます。例えば、sshの標準ポートである22で、通信開始(SYN)のパケットが外から送られてきた場合は、弾かずにVMのIP 10.0.2.15のポート22に転送する、などのルールです。パケットを転送することをフォワードと呼ぶので、これをポートフォワードと呼びます。

ポートフォワーディングの設定がない場合、NATのファイヤーウォールを越えることは出来ません。

NATネットワーク

これを模式的に書くとこんな感じ。

ただのNATよりは幾分スッキリした構成になり、1つの仮想ルーターでVM同士が並び、DHCPで綺麗にIPが振られているのが分かります。これなら物理LAN同様VM同士が通信出来るのも分かります。VMとホストの関係はNATのときと変わらないので、同じように扱う事ができます。

ブリッジ

これを模式的に書くとこんな感じ。

VMがホストと同じネットワークに参加する形になります。VMが普通に1台のPCとしてネットワークに出現してきます。ある意味一番ユーザーには分かりやすい形です。ただしDHCPな環境であれば、1台でホスト+VMの数分IPを使うので管理者泣かせの形ですし、VMにもホストと同等のセキュリティが求められます。

内部ネットワーク

これを模式的に書くとこんな感じ。

VM同士は繋がっていますが、ホストとVMは繋がっていません。DHCPサーバなどもいないので、通常静的IPを使って独自のネットワークを構築します。VirtualBoxの機能を使ってDHCPの機能を追加することも頑張れば出来ます。物理ネットワークに出る手段がない形なので、主に外部からの影響を受けたくないときに一時的に使用するマニアックな構成だと思います。

ホストオンリー

これを模式的に書くとこんな感じ。

内部ネットワークにホストが参加しました!という構成です。ついでにホストにIPを振るための仮想ネットワークアダプタを用意し、DHCPも提供されています。 VMを外のネットワークと遮断した上でホストとは通信できますが、内部ネットワーク同様、個人的にはマニアックな設定に見えます。さすがにホストとは通信したいだろうという配慮なんでしょうかね…

なお、たまにNAT+ホストオンリーなネットワーク構成をオススメしてるサイトも見たことがありますが、ホストとVMを仮想ルーターでも繋げて仮想ブリッジでも繋げるというのは変則的なので、個人的には、素直にNATにポートフォワードの設定をオススメしたいです。

まとめ

VirtualBoxのネットワーク設定の種類について説明し、いつもデフォルトで使っているNATがどんな特性のものなのかを解説しました。
SVGのお絵描き大変ですが、面白かったです。inkscapeありがとう!