Windowsネットワークに強くなる(第6回) 続き

NetBIOSでは接続先でも名前をチェック
 さて,こうして見ると,冒頭で紹介したトラブルが,LMHOSTSファイルの修正で解決した理由が分かってくる。それはリプレースして新しく接続先に指定したファイル・サーバーのNetBIOS名が,LMHOSTSファイルで他のコンピュータのIPアドレスと組み合わせで登録されていたためである。恐らく以前に「FILE-SERVER」という名前のサーバーが別にあり,LMHOSTSにはその当時使っていた情報が残っていたと思われる。

 新しく稼働したサーバーなのでNetBIOSキャッシュに情報がなく,またWINSサーバーを設置していないという環境では,ブロードキャストでNetBIOS名前解決が行われる仕組みである。今回の環境では,ルーターを越えた先にサーバーがあった。その場合には,ブロードキャストも失敗し,LMHOSTSファイルが参照される。そのLMHOSTSファイルが間違っていたのでトラブルになったのだ。

 今回のトラブルから学ぶことはもう1つある。一見すると,LMHOSTSを誤った設定のまま利用しても,「FILE-SERVER」という名前で「FILE-SV」には接続できるような気がするがそれは正しくないことである(FILE-SVへのログオンが許されており,アクセス権がある場合でもだめである)。一方,「FILE-SERVER」を指定したpingコマンドは,誤ったIPアドレスを返すものの成功した。

 DNSやhostsファイルを利用する本来のTCP/IPアプリケーションは,名前解決でIPアドレスを取得すれば後はそのIPアドレスを接続先にして通信を行う。pingコマンドはそのため一応成功するし,同様に本来のTCP/IPサービスの1つであるWebブラウザによる通信も誤った記述があるLMHOSTSファイルのままでも成功する可能性がある。

 これに対し,NetBIOSアプリケーションではクライアントが実際に接続するにあたり,接続先のNetBIOS名を含んだ形でデータを送信し,送信されてきたNetBIOS名を接続先のコンピュータで検証してから接続を行う。このため接続先に指定したIPアドレスが実在しても,接続要求の中に自らに設定されたNetBIOS名がなかった場合,接続を拒否してしまうのである。



△ 図表をクリックすると拡大されます
図4●共有フォルダへのアクセスには正しいNetBIOS名とIPアドレスが必要


△ 図表をクリックすると拡大されます
図5●WINSサーバーへのNetBIOS名の登録


△ 図表をクリックすると拡大されます
図6●WINSサーバーでのNetBIOS名とIPアドレスの静的マッピング

 先の例では「FILE-SV」というNetBIOS名を持つサーバーにクライアントが「FILE-SERVER」という名前で接続を試みた。LMHOSTSファイルにNetBIOS名「FILE-SERVER」と誤ったIPアドレス「192.168.0.36」とが登録されているので,クライアントは「192.168.0.36」のマシンに「FILE-SERVER」というNetBIOS名を送って接続しようとする。だが,ファイル共有などNetBIOSアプリケーションは,送信されたあて先データに自分の名前である「FILE-SV」がないので,サーバーが接続を拒否してしまう(図4)。

 クライアントがWINSを参照する場合でも,LMHOSTSの場合と同様である。問題のNetBIOS名が別のIPアドレスとの組み合わせでWINSデータベースに登録されていても同じことが起こる。

長期的にはWINSサーバーの運用で対処
 今回のトラブルの直接の原因は,LMHOSTSの情報が間違っていたことだった。しかし,LMHOSTSはメンテナンスが面倒なので放置されがちだというのがより深い理由である。可能であれば,WINSサーバーを構築してLMHOSTSの利用を撤廃してしまうことが長期的に望まれる。

 WINSサーバーは,OSに標準装備されるWINSサーバー・サービスを追加して構築する。NT Server 4.0では[コントロールパネル]-[ネットワーク]で[サービス]タブを選び,[追加]ボタンをクリックし[Windowsインターネットネームサービス]を選択する。2000 Serverでは[コントロールパネル]-[アプリケーションの追加と削除]で[Windows コンポーネントの追加と削除]を選び,[ネットワークサービス]の詳細から[Windows インターネットサービス(WINS)]を選択する。Windows Server 2003では[サーバーの役割管理]ツールで[役割を追加および削除する]をクリックし,[サーバーの役割]で[WINSサーバー]を選択する。

 あとはクライアントのTCP/IPプロトコルの設定で,そのWINSサーバーを指定すれば,クライアントが起動時に自分のNetBIOS名を自動的に登録するとともに,WINSサーバーを参照するようになる(図5)。WINSサーバーには手動でNetBIOS名とIPアドレスの対応付けを登録する「静的マッピング」という機能もある(図6)。