VirtualBox ip 설정

2010. 2. 8. 22:1599. 정리전 - IT/13. Unix 얇팍지식

http://d.hatena.ne.jp/p4life/20090413/1239624784

Windows PC 上で仮想的に Linux を動かして、そこを開発環境として使えるといろいろ便利です。それをするためのソフトとして VMware Server、VirtualPC、coLinux などがありますが、今回 VirtualBox を試してみたところ、簡単に開発環境を準備することができました。

VirtualBoxCentOS を入れて、Windows PC 上のウェブサービス開発環境として使えるようにするまでの手順をメモしておこうと思います。

VirtualBox の良い点

  • インストールが簡単
    • ダウンロード&インストールに面倒なユーザー登録がない
      • VMware Server は面倒だった気がする
  • UI が使いやすい
    • 設定画面などが分かりやすい
      • VirtualPC 近い?
    • 日本語化されている
  • 動作が速い
    • 仮想マシンの状態保存/復元が速い
    • スナップショットを取るのがなかなか速い
    • 仮想マシンの実行速度も遅くない(でも CPU は結構喰う気がする)

気をつける点

VirtualBox はバージョンによって UI や設定の仕方が結構違うようです。ここでは VirtualBox 2.2 を対象にします。また VirtualBox をインストールするホスト OS には、Windows Vista を使います。

VirtualBox をインストール

わだっぷさん(id:wadap)のチュートリアルが参考になります。

仮想マシンを作成する

今回は CentOS を仮想マシンの OS (ゲスト OS)とするので、「OSタイプ」の「オペレーティングシステム」に 「Linux」、「バージョン」に「Red Hat」を選択します。

メモリは 512MB を割り当てます。256MB だとネットワークインストール中にエラーが出ることがあるようです。

f:id:p4life:20090413202615p:image

CentOS 5 をインストール

ホスト OS 側:

  • http://ftp.riken.jp/Linux/centos/5/isos/i386/ から CentOS-5.3-i386-netinstall.iso をダウンロードしておく
  • さきほど作成した仮想マシンを起動する
  • ダウンロードした iso ファイルをマウント(仮想マシンを起動すると自動でファイル選択のダイアログが出てきます)
  • あとは通常のインストール手順で進めていく

ゲスト OS 側(インストールの設定例):

  • 言語は English を選択
  • Enable IPv6 support のチェックを外す
  • FTP site: ftp.riken.jp、CentOS directory: /Linux/centos/5/os/i386
  • 「Desktop - Gnome」のチェックを外す
  • インストールが完了したら一旦仮想マシンの電源を落とす

VirtualBox のネットワークアダプタを設定する

VirtualBox 2.2 では、仮想マシンに対して最大 4 つのネットワークアダプタが設定できます。さらに各アダプタはネットワークの割り当て方式として「NAT」、「ブリッジネットワーク」、「内部ネットワーク」、「ホストオンリー ネットワーク」を設定できます。

アダプタタイプとして VirtualBox の仮想アダプタを指定したときの動作:

  • NATVirtualBox のデフォルト設定。ゲスト OS からインターネットは繋がる。ゲスト OS とホストOS 間は繋がらない。
  • ブリッジネットワーク: ゲスト OS のネットワークがホスト OS と同じネットワークに繋がる。インターネットに繋がり、ゲスト OS とホスト OS の間が繋がる。同じネットワーク上の他の PC からも見える。
  • 内部ネットワーク: 仮想マシンを複数起動したときに、各マシン間を繋ぐためのネットワーク?(動作未確認)
  • ホストオンリーネットワーク: ホスト OS と ゲスト OS 間のネットワーク。

ゲスト OS をローカルのウェブサービス開発環境として利用する場合、次のようなネットワークだと都合が良いです。

  • ゲスト OS からネットに繋がる(HTTP で通信したり、メールを送ったりできる)
  • ホスト OS からゲスト OS に繋がる(SSH で繋いだり、ブラウザでアクセスできる)
  • ネットからゲスト OS には繋がらない(外部のネットからはサービスにアクセスできない)
  • ゲスト OS の IP が固定できる

そこで、アダプタ 1 に「ホストオンリーネットワーク」を割り当て、アダプタ 2 に「NAT」を割り当てます。こうすると、ホスト OS とゲスト OS 間が繋がり、NAT によりゲスト OS からネットにアクセスできるようになります。

f:id:p4life:20090413210101p:image

f:id:p4life:20090413202617p:image

(ユーザーマニュアルによると、NAT 接続 + ポートフォワードでも実現できるようですが、VBoxManage.exe というコマンドラインのツールを使うなど、あまり簡単そうではないので別の方法にしました)

インストール後の基本的な設定

IP アドレスを固定する

仮想マシンを起動する度に IP が変わらないように、IP を固定します。ifconfig コマンドで、eth0 に現在割り当てられている IP を調べて、それを固定 IP として設定すれば問題ないと思います。

[root@centos ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static ← dhcp から static に変更
HWADDR=08:00:27:2C:06:13
ONBOOT=yes
IPADDR=192.168.56.102 ← 追加
NETMASK=255.255.255.0 ← 追加

[root@centos ~]# ifdown eth0
[root@centos ~]# ifup eth0 ← 設定を反映させる
iptables を設定する

インストール直後は iptables(ファイアウォール)が設定されていて、ホスト OS から SSH や HTTP で接続できません。必要なサービスが使えるように iptables を設定します。

[root@centos ~]# vi iptables.sh
#!/bin/sh

IPTABLES=/sbin/iptables

# ルールの初期化
$IPTABLES -F

# ポリシーの設定
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

# ループバックアドレス
$IPTABLES -A INPUT -i lo -j ACCEPT

# 接続済みを許可
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ping を許可(1req/sのみ許可)
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# 公開サービス
$IPTABLES -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT # SSH
$IPTABLES -A INPUT -p tcp --dport 25 -m state --state NEW -j ACCEPT # SMTP
$IPTABLES -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT # HTTP
$IPTABLES -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT # HTTPS

[root@centos ~]# chmod 744 iptables.sh
[root@centos ~]# ./iptables.sh ← iptables を設定

[root@centos ~]# iptables -L ← 変更を確認
...
[root@centos ~]# service iptables save ← 変更を保存
[root@centos ~]# service iptables restart

だいたい終わり

ここまでくると、ホスト OS からゲスト OS に接続できるようになります。

あとはユーザーを追加して SSH の設定をしたり、必要なパッケージ(Apache、MySQL など)をインストールして普通に使っていくことができます。