Q

日常の運用に使っているネットワークとは別に,管理用のネットワークを設置してWindowsサーバーを管理しています(図5)。エンドユーザーが運用ネットワーク上でサーバーを利用するための名前解決の手段にはWINSを使っています。しかし,Windows 9xなどの古いOSを使っているユーザーがWindowsサーバーを利用しようとすると接続できないことがあります。調べてみるとWINSサーバーが,本来返答してほしい運用ネットワークに接続しているネットワーク・カードではなく,管理用ネットワークに接続しているネットワーク・カード側に割り当てたIPアドレスを答えているようです。クライアントがそのIPアドレスでサーバーにアクセスしようとしても,自分のいる運用ネットワークには存在しないので当然Windowsサーバーへアクセスできません。どうすればよいのでしょうか?


図5●サーバーに挿入した2枚以上のネットワーク・カードそれぞれに別々のIPアドレスを割り振っている場合,WINSはどちらのIPアドレスで名前解決するかを事前に指定できない

A

マイクロソフト・ネットワーク独自の名前解決手法であるWINSは,複数のIPアドレスをもつコンピュータについて問い合わせがあった場合に,WINSサーバーが返答する結果を事前に一意に指定できません。サポート技術情報で解説しているように,これはWINSの仕様です。この影響で,今回のように本来名前解決してほしいIPアドレスとは別のIPアドレスを取得してしまうという事態が発生します。

 この問題が発生しないようにするには,複数のネットワーク・アドレスを持つ2つのセグメント間を相互に通信できるようにルーターで接続してしまうことが考えられます。しかし,この方法は今回のように運用と管理でネットワークと分けたい場合は使えません。そこで,別の方法を検討することにします。

WINS以外の名前解決を使用
 今回の問題は,コンピュータ名からの名前解決の結果を運用ネットワーク側のものだけに一意にする必要があります。しかし,前述したようにWINSではこれは不可能ですので,別の名前解決手段を使う必要があります。

 Windows 9xやWindows NTのような古いWindowsクライアントで使える別の名前解決手段としては,LMHOSTSファイルが考えられます。


図6●コンピュータ名(NetBIOS名)を指定した際に特定にIPアドレスで名前解決するようにしたければLMHOSTSファイルを使う
#PREオプションを付けるとNetBIOSネーム・キャッシュに読み込まれWINSよりも確実に優先される。

 これは,「LMHOSTS」という名前のファイルに名前解決をしたいネットワーク・カードのIPアドレスとNet-BIOSコンピュータ名の対応付けを記述し,それを対象とするクライアントの%SYTEMROOT%\SYSTEM32\DRIVERS\ETCのフォルダに格納するだけで実現できます(図6)。LMHOSTSファイルの使い方や記述方法については,サポート技術情報を参照するとよいでしょう(102725,150800,180094など)。

 LMHOSTSは,マイクロソフト・ネットワークではごく一般的な名前解決の方法です。しかし,利用に当たってはいくつか注意すべき点もあります。よく問題となる点を以下に列挙しておきます。

 まず,マイクロソフトは現在はLMHOSTSファイルによる名前解決を推奨していません。これはマイクロソフトでLMHOSTSファイルによる名前解決を十分にテストしていないからです。

 また,LMHOSTSファイルでの名前解決をWINSより確実に優先させるために,LMHOSTSの記述はNet-BIOSネーム・キャッシュに読み込んでおく必要があります。これはLMHOSTSのファイル内で「#PRE」オプションを記述しておくことで実現できます。

 また,クライアント端末のノードを変更している場合は名前解決に利用する方法の順序が変わっていることがあるのでもう一度確認してください。例えば,Pノードの属性設定になっているとLMHOSTSがあっても,WINSで名前解決しようとしてしまいます(サポート技術情報の142309と160177を参照)。

 最後に,LMHOSTSファイルを記述する際には,大文字と小文字の使い分けにも注意してください(サポート技術情報の110976と262655を参照)。

山岸 真人