アットウィキロゴ
あるエンジニアの独り言
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

あるエンジニアの独り言

VMWareでホストOSとゲストOS間の通信ができない件

最終更新:

paladin

- view
管理者のみ編集可

2010/01/17

VMWareにUbuntuLinuxをインストールしてちまちま遊んでいる。
そんな中、ひとつ問題に遭遇した。

ホストOS(WindowsXP SP3)とゲストOS(UbuntuLinux)の間で
TCP通信がうまくいかないのだ。

気になったので、色々調べてみた。

環境は以下のとおり。

A:ホストOS WindowsXP 192.168.99.100
B:ゲストOS UbuntuLinux 192.168.99.101 Apache2インストール済
C:外部OS WindowsVista 192.168.99.102
※IPアドレスは仮。

状況としては

A → B にPingは届く
A → B にブラウザでアクセスはNG
C → B にPingは届く
C → B にブラウザアクセスでページ表示

Cからの通信が成功している以上、Bの問題では無いと思われる。
また、AからBにPingが届いており、http通信ができていないので
TCPレイヤでの問題であることが推量できる。

不思議だったので、WireSharkでパケットキャプチャしてみたところ

A → B [SYN]
A ← B [SYN,ACK]
A → B [ACK]
A ← B [SYN,ACK]
A ← B [SYN,ACK]
A ← B [SYN,ACK]

ざっくり、上記のような通信状態になっていた。
つまり、3Wayハンドシェイクがうまくいっていない。
確定的な裏までは取り方が思いつかないが、どうも下記のような状態に見える。
1.AからBへの[SYN]は"届いている"
2.BからAへの[SYN,ACK]は"送信されている"
3.AからBへの[ACK]は"送信されている"
4.BからAへの[SYN,ACK]が"再送されている"
上記4から推察するに、BがAからの[ACK]がなんらかの要因で受信できておらず、
[SYN,ACK]の再送を繰り返しているように見える。

ここで手詰まり。
1から2への流れがあるから、AからBへのTCP通信がまるっきりできてないわけでは無い。
(2は1というトリガーが無いと送信されないはずなので)

とまぁ、ここまでの調査結果を踏まえてネットで調べてみたところ
同様の事例はあるらしい。
NAT接続で回避しているケースもあったが、一件ブリッジ接続での
解決方法を発見。


いい線まで調査できていたけど、詰めが甘かった。
これで万事解決。
次のステップに進めそうだ。

しかし、文字だらけでわかりづらい。
気が向いたら、キャプチャ画像とかログのせてみるかも。






=============== <<<ここから宣伝(自動追加)>>> ===============
最近更新されたスレッド
ウィキ募集バナー
急上昇Wikiランキング

急上昇中のWikiランキングです。今注目を集めている話題をチェックしてみよう!