Posted at

VirtualBoxでNAT + Host-Only Network環境を構築する

More than 5 years have passed since last update.

Debian系のディストリビューションで綺麗にはまってしまったのでメモ。

Redhat系が予期に計らってくれるおかげで3週間ほどずっとはまっていました…。

OSを5回くらいインストールし直しました。


0.前提



  • VirtualBox + UNIX系OSでローカル環境にサーバを構築したい。

  • 無駄なマシンパワーを使いたくないので、GUIはインストールしない。

  • 外部ネットワークに接続したい(インターネットを使いたい)。

  • ポートフォワーディングは使わない。


1.ネットワーク構成


  • ゲストはホストのNICを利用してNATで外部ネットワークに接続する。

  • ホストオンリーネットワークでゲストにSSHで接続する。

  • ホストオンリーネットワーク側のゲストのIPアドレスは固定する。

ネットワーク構成


2.OSインストール

インストール手順自体はVirtualBox 4.0でCentOS 6.0を動かしてみたよ。 - 大人になったら肺呼吸などで画像つきで紹介されているので割愛します。

注意する点として、ネットワークインターフェースはインストール前に指定しておくことです。

インストール時点でOSが自動設定してくれるので予め指定しておくほうが楽です。


3.ネットワーク設定

ハマったポイントがここです。注意事項は1つだけです。

ホストオンリーネットワーク側のゲートウェイは指定しない。


Redhat系

EVICE="eth0"

BOOTPROTO="static"
HWADDR="08:0F:46:5A:CD:37"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="0f25669f-6928-4c31-8343-98ba7752f1f6"
IPADDR="192.168.56.10"
NETMASK="255.255.255.0"

DEVICE="eth1"

BOOTPROTO="dhcp"
HWADDR="08:1A:34:99:12:34"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="f68320a2-2454-4dd7-2356-52256804eb58"


Debian系

auto lo

iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.56.10
netmask 255.255.255.0

auto eth1
iface eth1 inet dhcp


4.原因

ゲートウェイを指定した状態で両方のインターフェースを起動すると、routeコマンドの実行結果におそらく以下の2行が現れます。

デフォルトゲートウェイが2つ指定されている状態になるため、外部ネットワークに接続できなくなってしまいます。

default         10.0.2.2       0.0.0.0         UG    0      0        0 eth0

default 192.168.56.1 0.0.0.0 UG 0 0 0 eth1


5.補足

現状で確認している限り、


  • CentOSはゲートウェイを指定しても問題ありません。

  • Debian/Ubuntuはゲートウェイを指定するとつながらない場合が多いです。が、たまに繋がってしまうので厄介です。

ですが、ゲートウェイを指定しないのが無難です。


参考