datchの日記

気がついたら社会人。気になる技術的なことについて少しずつ書いていけたらと思っております。

Windows上でVirtualBoxにCentOSを入れてネットワーク設定で詰まった話

最近、手広くやりすぎて色々と立ち回りが下手になっていますね。
もっと、一つの事に集中しないといずれ自分を潰しかねないので要注意です。
さて、今日はデザインパターンの話ではなく仮想マシン構築でのネットワーク設定の話。
せんちゃん、デザインパターンの話は次回だ(`・ω・´)

概要


動機



以前から仮想マシンの上で開発を行いたいと思っており、先月にVirtualBox上にCentOSをインストールして開発を行おうと思ったのですが、何故か外向きのネットワークが繋がらずに非常に困ってしまいました。
必死にググったのですが、記事によって書いてある内容が微妙に違うため、それらを組み合わせて試行錯誤しながら挑戦しても外向きのネットワークが繋がらず…
結局、諦めてしばらく放置していたのですが、今週に設定を知る機会があったので備忘録として技術メモを残しておく。

VirtualBoxとは



VirtualBox画像
VirtualBoxとは仮想マシンを構成することが出来るアプリケーションです。
仮想マシン(以降、VMと呼称)はユーザが使っているOSの上で違うOSを動かす事が出来ます。
WindowsMacなどのクライアントOSなのに、サーバOSの環境で開発することが出来るのでサーバOSを使うような人には重宝されています。
CentOS

CentOS仮想マシンにインストールする前に



まず、CentOSをインストールする前にやることがある。

VirtualBoxにホストオンリーネットワークアダプタを追加

仮想マシンを新規作成してRedHat64bitを選択し、適当にメモリや記憶領域を割り当てる。
以降、この仮想マシンの名前を「CentOS_Server」という過程で話を進める。

ここでいきなりCentOSをインストールしてはいけない。
まずはVirtualBoxネットワークアダプタを追加しよう。
バージョンによって追加の方法は異なるがver4.3.1.0では
「ファイル」→「環境設定」→「ネットワーク」→「ホストオンリーネットワーク」を選んで、右側にあるプラスボタンを押す。

Windows8ホストでのVirtualBoxネットワーク設定 - Code Aquariumから画像を転載。

個々で既にホストオンリーネットワークアダプタが追加されていた場合は、追加しなくてもいい。
ホストオンリーネットワークアダプタが追加されれば、「ネットワーク共有設定」→「アダプタ設定の変更」を開いて[VirtualBox Host-Only Network]というのが追加されていれば大丈夫だ。

ついでにそれを右クリックしてプロパティに進み、「TCP/IPv4」のプロパティを開こう。
何も弄っていなければIPアドレスが「192.168.56.1」、サブネットマスクが「255.255.255.0」になっているはずなので、この値をしっかりと覚えておこう。

VirtualBox仮想マシンのネットワークを設定

次に「CentOS_Server」の右クリックメニューで「設定」→「ネットワーク」→「アダプター2」を選ぶ。*1
[ネットワークアダプタを有効化]にチェックを入れて、割り当てのドロップダウンメニューで[ホストオンリーアダプター]を選び、[OK]ボタンを押す。


CentOSをインストール後


CentOSのインストール途中でネットワーク設定をまったく設定しなかった仮定で話を進める。
まずはネットワークアダプタ設定ファイルを探しに行く。
CentOS6.5では以下のコマンドで対象のファイルがあるディレクトリに辿り着ける。

$ cd /etc/sysconfig/network-scripts

このディレクトリに[ifcfg-eth0]と[ifcfg-eth1]というファイルがある。
このeth0の方は先ほどの設定で触れた[アダプター1]が[NAT]、eth1の方は[アダプター2]で[ホストオンリーアダプター]だ。

ここで外との通信の役割を果たすのは[NAT]、ホストOSとの通信の役割を果たすのが[ホストオンリーアダプター]だ。
ここで以下の様に指定された部分を書き換える。

$ vi ifcfg-eth0

# 起動時にこのネットワーク・インターフェースを起動
ONBOOT="yes" 
# ネットワークサーバのDHCPがNATに自動でIPを割り当てる。VirtualBoxの標準ではDHCPサーバは動く様に設定されている
BOOTPROTO="dhcp"
$ vi ifcfg-eth1

# 起動時にこのネットワーク・インターフェースを起動
ONBOOT="yes" 
# 固定のIPを割り振る
BOOTPROTO="static"
# アダプター設定のプロパティ値をここに設定する
IPADDR=192.168.56.1 # IPアドレス
NETMASK=255.255.255.0 # サブネットマスク

もし、インストールする前にネットワークアダプタの設定をせずにインストールしていると、[ifcfg-eth1]というファイルが存在しないので、自分でデバイスの設定をする必要があり面倒になる。

これをやったあとに何も考えずに以下のコマンドを打とう。

$ ifdown eth0
$ ifdown eth1
$ ifup eth0
$ ifup eth1
$ service network restart

ネットワークの再起動がエラーを出さずに成功すれば以下のコマンドを打って外向きのネットワーク通信が出来るかを確認する。

$ ping google.com

名前解決が出来なかったり、タイムアウトにならなければ正常に外との通信が出来るようになっている。
これでyumコマンドを使ってパッケージのインストールが可能になった。

更にホストOSとの通信が出来ているかの確認も同様に行う。

$ ping 192.168.56.1

こちらも成功すればネットワークの設定は終了。
お疲れ様でした。

最後に



今回はこのような記事を見て頂きありがとうございました。
実サーバでのネットワーク設定はすんなり行ったのに、VM上では上手く設定が出来なかったのでモヤモヤしていたのですが、これでそのもやもやも消えました。
他のサイトではブリッジ接続を使ったネットワーク設定などもあり、どの設定にどういった特徴があるかは自分でも認識していませんが、今は気にしない。

*1:ちなみにアダプター1には[NAT]が設定されているはずだ