VirtualBox のインスタンスをクローンして他のPCに展開したらブリッジ接続がうまくいかなかった話
前提
- ホストマシンは Windows10
- VirtualBox のバージョンは 5.1.4
- ゲスト OS 配下の通り
- CentOS6.8
- CentOS7.1
- Debian8.5
- ゲストはブリッジ接続のみ
- ゲストは DHCP でローカル IP を自動取得する
症状
それぞれのゲストマシンはネットワークを利用でき、外には出られる。
しかし、ホストマシンからゲストへ SSH ができない。
ifconfig
などでゲストの IP を確認すると全てのPCで同じ値だった。
原因
クローン(仮装アプライアンスのエクスポート)をすると、ネットワークアダプタの MAC アドレスが同一になってしまう。
そのため、ルーターは同一の MAC アドレスには同一の IP でルーティングする。
その結果 SSH で IP を指定してログインしようとしても、対象のマシンが探せなくなる(厳密には最初の1台はつながる)。
対応
MAC アドレスを変えましょう!
MAC アドレス変更手順
- VirtualBox で イメージを選択
- [設定]
- [ネットワーク] タブ
- [高度]が閉じてるのでクリックして開く
- 現在の MAC アドレスをメモしておく (重要!)
- MACアドレスを変更(手入力 or 右端の丸いアイコンを押す)
- [OK]
ゲストでネットをできるか確認する。
普通にゲストを起動する
CentOS6.8 の場合
繋がらない。
そもそもネットワークが上がってこない。
MAC アドレスが設定ファイルに記述されているものと異なるせいでエラーがでるためだ。
以下はネットワーク周りの設定を特にいじっていない状態を前提としている。
まず修正すべき設定ファイルは /etc/sysconfig/network-script/ifcfg-eth0
である。
このファイルを vi
などで HWADDR
の値を編集する。
編集する値は先ほど設定した MAC アドレス。
次に編集すべきファイルは /etc/udev/rules.d/70-persistent-net.rules
で。
vi
などで開いてみると2行あると思われる(設定をいじってある場合は多い場合もある)。
このうち「 MAC アドレス変更手順」の5でメモっておいた MAC アドレスが書いてある行の先頭に #
を書いてコメントアウトする。
そして、新しく設定された MAC アドレスが書いてある行の name="eth1"
となってある箇所 name="eth0"
に変更する。
その後再起動 (shutdown -r now
) させる。
これで MAC アドレスの更新され、新しいローカル IP アドレスが発行されるはず。
ifconfig
で確認する。
CentOS7.1 の場合
そのまま繋がる(かしこい!)。
Debian8.5
そのまま繋がる(かしこい!)。
結論
エクスポートによるゲストのコピーは便利だけど、同時に使うときは気をつけよう!
CentOS6 は MAC アドレスの設定で苦労するようなので、順次サポートも切れていくしサクッと7使おう。
Discussion