2005.12.19

VirtualPCの MACアドレスの誤認識

VirtualPCを動かしているマシンを全くの外部のマシンから見た場合は以下のように見えます。
  IPAddr:ホストマシン ⇔ MACAddr:ホストマシン
  IPAddr:ゲストマシン ⇔ MACAddr:ホストマシン

つまり、ホストマシンにIPが2つ(以上)割り当てられているように見えます。


これが VirtualPCを動かしているマシンそのものから見た場合は、以下のように見えます。
 ホストマシンから見た場合
  IPAddr:ホストマシン ⇔ MACAddr:ホストマシン
  IPAddr:ゲストマシン ⇔ MACAddr:ゲストマシン(仮想のMACアドレス)
 ゲストマシンから見た場合
  IPAddr:ホストマシン ⇔ MACAddr:ホストマシン
  IPAddr:ゲストマシン ⇔ MACAddr:ゲストマシン(仮想のMACアドレス)

おそらく、VirtualPCの LANドライバが自動的に IPアドレス⇔ MACアドレス変換した結果を
ホスト/ゲストマシン各々に通知する役割をしているようです。


ただ、このうちゲストマシンのみこう見えることがあります。
  IPAddr:ホストマシン ⇔ MACAddr:ゲストマシン(仮想のMACアドレス)
  IPAddr:ゲストマシン ⇔ MACAddr:ゲストマシン(仮想のMACアドレス)
特に無線LANを使用している場合にこの症状が頻発してしまいます。

こうなると、ホストマシンもゲストマシンも、ホストマシンとゲストマシン間だけは
通信できないものの、他のマシンとは通信できるという奇妙な状態になります。
(正確には、ホストマシンからゲストマシンへの一方通行は可能だけれども
ゲストマシンからパケットが返ってこない状態になる)

パケットを見てみると、まったく外部のマシンからホストマシンへの ARPリクエストに対して
ホストマシンが返答したパケットがあった時に、関係のないゲストマシンでも MACアドレスを
変換した状態で見えてしまい、それをゲストマシンが誤って受信(ARPキャッシュに溜め込む)
しているようなのです。
これはゲストOSに Windowsを使っていても Linuxを使っていても発生するようです。


回避策は、今のところゲストマシンでホストマシンに対するスタティック ARPの設定をする
しかないようなのですが、はてさて、なんとかならないもんでしょうか?

コメント (1)

今日VirtualPCで遊んでて全くこの通りになりました。問題の解説と解決方法をご提示くださり感謝します。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
ichikawa