クロスケーブル接続の惨劇

<< 戻る   トップ >>

VNC を使っていてふと考えた。今、VNC のサーバ(Windows XP)とクライアント(Linux/Fedora 8)はともにワイヤレス接続されている。そのせいかなんとなく動作がぎこちないのだが、よく考えてみるとどちらにも有線LAN のインターフェースがあって、しかも未使用である。ならば、VNC専用のネットワークを組めばよいではないか。しかも、接続するのはこの2台で、当面増加する気配はない。ならば、クロスケーブルを使って peer-to-peer 接続すればシンプルでよい。

さっそくクロスケーブルを購入して試してみた。近頃ではLANのインターフェースも進化してストレート・クロスのどちらのケーブルを使っても大丈夫、という噂があるのだがとにかく手堅くクロスだ。ケーブルを接続したら、次はやはり ping で TCP/IP レベルでの接続確認をすべきであろう。やってみた。応答なし。

この段階で接続に失敗している、と誤解したのが悲劇の始まりであった。真っ先に疑ったのが、通信規格の問題だ。サーバは 100Base/TX、クライアントは 1000Base/T のインターフェースである。もちろん、サーバは 10Base/T に、クライアントは 100Base/TX・10Base/T に対応している。そしてこのように規格が異なっていても、自動的に相互に通信可能な規格を使用するように「交渉」し、接続を確立するはずなのだ。クロスケーブル接続では、この「交渉ー接続」の過程がうまくいっていないのではないか、と疑ったわけだ。

そこで、クライアント側の Intel のネットワークインターフェースのドライバのマニュアルを読み、デバイスドライバモジュールを modprobe コマンドで取り去ったりつけ直したり /etc/modprobe.conf を編集したりしてサーバと同じ 100Base/TX Full Duplex で動作させた (ちゃんと設定されたかどうかは今となっては謎である)。にも関わらず、相変わらず ping は通らない。こりゃダメだ、と諦めたのが昨晩のことであった。

諦めたつもりであったがやはりどうも納得できない。そこで、今日、とりあえずクライアントのデバイスドライバの設定は元に戻し、dmesg コマンドでネットワークインターフェースの動作を確かめてみた。すると、"e1000: eth0: e1000_watchdog: NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX/TX" というメッセージが出ていて「交渉」はうまくいっているように見える。ここでやっと思い当たった。

サーバである Windows XP のウィルス対策アプリケーションを止めると、サーバからクライアントへの ping が通るようになった。さらに、Windows FIrewall の設定をよく見ると ping 応答を止めてある。これを許可するとクライアントからサーバへの ping が通った。なんのことはない、VNC サーバである Windows XP マシンが ping の出入りを止めていただけのことだった。接続は最初から確立していたのであった。もちろん VNC もさくさく動く。

本件の教訓。「疑うべきは Windows マシン」。

付記

作成: 2008-04-23 17:19:06.0更新: 2008-04-23 22:59:39.0
http://museo-anonimo.jp/nanban/?id=630,http://museo-anonimo.jp/nanban/tr/630