Q

ファイル・サーバーとして使っていたNT Server 4.0をWindows 2000 Serverにリプレースしました。ところが,NT Workstation 4.0(SP6a)からWindows 2000 Serverの共有ディレクトリに接続できません。Windows 2000 Serverのイベント・ビューアには,図1のようなエラーが発生しています。コマンド・プロンプト上で,NetBIOS名やFQDNを使用して接続を試みましたが,「システム エラー 51」や「システム エラー 53」が発生します。Windows 2000クライアントからは問題なく接続できますが,NTと2000で何か動作に違いがあるのでしょうか?なお,NT 4.0のWINSサーバーを導入して,Windows 2000 Serverには静的マッピングしています。


図1●イベント・ビューアに表示されたエラーをテキストに書き出したもの

A

断定はできませんがエラーの現象から察するに,Windows 2000 ServerがNetBIOS名でListenしていなかったためだと思われます。Windows 2000クライアントからは,従来のNBT(NetBIOS over TCP/IP: 主に 139/tcp) を使用せず,ダイレクト・ホスティング(445/tcp)を使用し接続に成功したものと思われます。

 NetBIOS名でListenしない原因はいくつかありますが,この状況の場合,Windows 2000 ServerのNetBIOS名をWINSへ静的マッピングで登録しているために発生したのでしょう。NT 4.0クライアントがWindows 2000のファイル・サーバーにアクセスするまでの接続手順を通してどういうことかを詳しく説明します。

 静的マッピングを行っているWindows 2000 Serverは起動時に,自身のNetBIOS名を送信し,WINSサーバーにNetBIOS名を自動登録しようとします(図2)。


図2●NTクライアントがWindows 2000のファイル・サーバーにアクセスするまでの接続手順

 しかしWINSサーバーには静的マッピングで既にWindows 2000 ServerのNetBIOS名が登録されているため,エラーを返信します。名前の登録に失敗したことにより,Windows 2000 ServerはNetBIOS名でListenしなくなります。この結果,NTクライアントはWINSサーバーでファイル・サーバーのIPアドレスを取得しても,NetBIOS名によるファイル・サーバーへのアクセスができないのです。

静的マッピングを削除する
 サーバーがNetBIOS名でListenしているかどうかは,通信をモニタリングしながら,コマンド・プロンプトで「net view \\NetBIOS名」を実行し,その際のパケットをトレースすることで確認できます。139/tcpセッション確立後,NBTレベルで「Negative Session Response」などのメッセージがクライアントに返信されている場合は,NetBIOS名でlistenしていないと考えられます。

 このようなトラブルの対策としては,すべてのWINSサーバー上で静的マッピングを削除し,関連するサーバーを再起動することをお薦めします。ネットワーク上の問題や運用環境により,WINSの静的マッピングをしているような場合が散見されますが,本来は静的マッピングを使用せずとも動作できるのが正しい姿です。このような環境で使用している場合には今回のトラブルに遭遇する可能性がありますので注意してください。

小森博司