VirtualBoxのゲストCentOSとホストWindows 7の間でpingが通らない問題が解決しました


VirutalBoxのゲストOSとしてCentOSの仮想マシンを作成したのですが、ホストOSであるWindowsとの間でpingが通らない問題に遭遇しました。真の原因は判らないのですが、ゲストOSでNATとブリッジの装備順を変えているうちに解決しました。

こんな問題は私だけかもしれませんが、念のため記しておきます。

環境

  • VirtualBox 4.3.30/5.0.4
  • Windows 7(ホストOS)
  • CentOS 6.6(ゲストOS)

Windowsのネットワーク構成

  1. ローカルエリア接続(Realtek PCIe GBE Family Controller)
  2. ローカルエリア接続2(ASIX AX88179 USB 3.0 to Gigabit Ethernet Adapter)
  3. VirtualBox Host-Only Ethernet Adapter(#1,#2,#3)

Linuxのネットワーク構成(当初の構成)

  1. eth0 : dhcp
  2. eth1 : 192.168.56.101(VirtualBox Host-Only Ethernet Adapter #1を割り当て)
  3. eth2 : 192.168.1.101(ブリッジアダプタでローカル接続2を割り当て)

問題の現象

ホストマシンからも、ゲストマシンからも、お互いにpingが通りませんでした。当然他のプロトコルであっても通りませんでした。

解決策

Linuxのネットワーク構成(当初の構成)

ゲストOS側のネットワーク構成(/etc/sysconfig/network-srcript/ifcfg-eth[02])を変更しました。

  1. eth0 : dhcp
  2. eth1 : 192.168.56.101(VirtualBox Host-Only Ethernet Adapter #1を割り当て)
  3. eth2 : 192.168.1.101(ブリッジアダプタでローカル接続2を割り当て)

補足(ブリッジアダプタの用途について)

ソフトウェアの開発用物理ネットワークは、インターネットアクセスの物理ネットワークと完全に分けるため、USB LANアダプタを購入してPCに装着しました。古いVirtualBoxの場合は今回のような問題は起きなかったと記憶していますので、最初は何が起きているのかさっぱりわかりませんでした。

ブリッジに使用しているローカル接続2には、仮想マシン郡と同じネットワークアドレスを割り当てていましたから、ルーティングの問題でもないし原因がわからず色々試した結果、今回の結果にたどり着きました。

pingが通らない現象ですが、厳密には激しくロスっているようです。特にホストOSからゲストOSへのロスり方が激しく、あたかもpingが通っていないように見えていたみたいです。

補足(ブリッジアダプタの使用するホスト側のアダプタの謎について)

ブリッジアダプタに割り当てるホスト側アダプタは、同一ネットワークが割り当てられているアダプタ(つまり下で言うと2.が該当)であるべきだと勝手に思い込んでいましたが、どうやら別のアダプタ(例えば1.)でも良いかも知れません。良いというか、完全にパケットを遮断できないかも知れません。

  1. ローカルエリア接続(Realtek PCIe GBE Family Controller)
  2. ローカルエリア接続2(ASIX AX88179 USB 3.0 to Gigabit Ethernet Adapter)

というのは、最初に紹介した環境において2.ローカルエリア接続2アダプタでなく、1.ローカルエリア接続アダプタでもパケットが流せるためです。偶然なんですが、アダプタを間違えて割り当ててもロスは酷いですがパケットがゼロにはなりませんでした。

ネットワークアドレスは違うし、ルーティングも設定していないので、相互にパケットを授受できるはずがないと思うので、どうしてこの現象になるのか謎です。

このパケットは物理ネットワークに流れず、VirtualBoxのネットワークドライバ内で閉じているだけかもしれません。実害は無いのかもしれませんが真偽は不明です。。