VirtualBoxのネットワーク設定

VirtualBoxのネットワーク設定周りについて、いまいちよく分かってなかったのでちゃんと調べてみた。
やりたいことは以下のとおり。

  • ホストOSはMacOSX
  • ゲストOSはLinux(CentOS)
  • ホスト(Mac)からゲスト(Linux)にssh接続したい
  • ゲスト(Linux)からインターネットに接続したい

ネットワーク設定を"NAT"にしておくと、ゲストからインターネット接続はできるが、ホストからゲスト上のサービス(sshとか)に接続できない。これを解決するにはポートフォワーディングの設定が必要。

手順は以下の通り。

  1. ふつうにVirtualBox上にCentOSをインストール(仮想マシン名は"CentOS"とした)する。
  2. ネットワーク設定は「NAT」に設定(デフォルト)する。
  3. Mac上で、~/Library/VirtualBox/Machines/CentOS/CentOS.xmlを編集し、以下の3行を追加
<VirtualBox ...>
  <Machine .. name="CentOS" ...>
    <ExtraData>
      ... 
+      <ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" value="TCP"/>
+      <ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" value="22"/>
+      <ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" value="2222"/>
    </ExtraData>
    ...

そして、Macのターミナルから以下を実行

# ssh 127.0.0.1 -p 2222

これでOK。簡単ですね。