VirtualBoxでローカル開発環境を構築する際のネットワーク設定

Oracle VM VirtualBoxでローカルマシンに開発環境を構築する際のネットワーク周りの設定。
以下の要件を満たすような設定とした。

    • GuestOSは外部ネットワーク(インターネット)にアクセスできる
    • GuestOSへのアクセスは、基本的にHostOS以外は遮断する
    • HostOSからGuestOSへのアクセスは、常に決まったIPアドレスを使用する

上記要件を満たすために、「ホストオンリーアダプタ」と「NAT」ネットワーク構成を組み合せた。

    • ホストオンリー: HostOSからのアクセス
    • NAT: 外部ネットワーク(インターネット)へのアクセス

GuestOSのインタフェースは、eth0にホストオンリー、eth1にNATを割り当てた。

VirtualBoxの設定

対象のGuestOSのネットワーク設定にて、アダプタ1と2を有効化し、それぞれ「ホストオンリーアダプタ」と「NAT」を割り当てる。
「ホストオンリーアダプタ」には「vboxnet0」を指定する。
アダプタタイプは好きなものを使用。

GuestOSの設定

GuestOSには、Debian GNU/Linux Lennyを使用した。

    • /etc/network/interface
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface (VirtualBox Host-Only-Network interface)
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.56.101
netmask 255.255.255.0

# The secondary network interface (VirtualBox NAT interface)
auto eth1
allow-hotplug eth1
iface eth1 inet dhcp

eth0をDHCPとしてしまうと、HostOSからGuestOSへのアクセスに使用するIPアドレスが、毎回違ってしまうので固定にする。
ルーティングテーブルは、以下のようになる。

$ netstat -rn
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ   MSS Window  irtt インタフェース
10.0.2.0   0.0.0.0    255.255.255.0 U  0  0   0 eth1
192.168.56.0 0.0.0.0    255.255.255.0 U  0  0   0 eth0
0.0.0.0    10.0.2.2   0.0.0.0     UG 0  0   0 eth1

あとは、GuestOSに必要な開発環境を構築するだけです。
仮想化ソフトウェアを使うと、柔軟なネットワーク構成が可能であること、開発やテストの際に普段使用するHostOS側には影響がない、スナップショットなどで環境の復元が容易など、理想的な開発環境が構築できると思います。