UJP - 技術情報

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

     

LMHOSTS


LMHOSTS


0.改定履歴

  • 1998.02.12 初版
  • 1998.08.14 リロードについて追記
  • 1998.11.26 プリロードとTTL,16文字目について追記

1.はじめに

 このドキュメントは,Windows95,WindowsNTにて,使うLMHOSTSに関する情報である.

2.LMHOSTSとは?

 LMHOSTSとは,Microsoftネットワークで用いる「コンピュータ名」をIPアドレスに変換するテーブルを示すものである. WindowsNT3.51のオンラインマニュアルには,次のように記述されている.

LMHOSTS ファイルは、通常 Microsoft ネットワークで、ネットワーク サービス、印刷サービス、およびリモート サービスなどのため、あるいはログオン、ブラウズ、複製などのようなドメイン サービスのために、リモート コンピュータを見つける際に使われます

LMHOSTS は、比較的小規模なネットワークや WINS データベースに所属しないリモート ネットワーク上で、ホストを見つけるために使われます (名前照会要求は、ローカル サブネットの外にはブロードキャストされないため)。LMHOSTS よりも WINS の方が名前照会にはより好ましい方法なので、WINS サーバーがインターネットワーク上で利用可能な場合は、ユーザーは、名前解決をブロードキャスト照会に依存する必要はありません。したがって、WINS サーバーが適切に配置されていれば、LMHOSTS の必要はなくなります。

Microsoft Windows NT Server Copyright 1996

 つまり,インターネットで言うところの"/etc/hosts"ファイルと同じ様なものであるが,定義が少々異なるのでここに説明する.

3.lmhostsの格納場所

 Windows95とWindowsNTではlmhostsファイルの格納場所が違う. それを次に示す.

3.1.Windows95の場合

Windows95の場合

 Windows95の場合は,システムディレクトリ直下にある. OSのプレインストールされたDOS/Vマシンであれば,普通次のようなディレクトリに入っている.

Windows95のlmhostsへのパス

C:\windows\lmhosts.sam

3.2.WindowsNTの場合

この場合,NTをC:\NT40というディレクトリにインストールしている

 WindowsNTの場合は,ちょっと階層が深くなっているので注意する. このディレクトリはNT3.51およびNT4.0では有効である.(たぶんNT3.1とかNT3.5でも同じ)

WindowsNTのlmhostsへのパス

C:%system%\system32\drivers\etc\lmhosts.sam

ここの%SYSTEM%はSYSTEM環境変数による

3.3.いま示したのはサンプルファイル

 前出で紹介したWindows95およびWindowsNTのlmhostsファイルは,サンプルファイルである. 本来ならば"lmhosts"という名前である必要がであるが,"lmhosts.sam"があるはずである.(たぶん,拡張子のsamは"sample"の意味)

 lmhostsを使うときは,このサンプルファイルを同じディレクトリに複写して使う.

サンプルファイル名 本当の名前(使うときの名前)
lmhosts.sam lmhosts

 ファイル名はWindowsなので,大文字小文字は関係ない.

4.編集について

 lmhostsも,基本的にはhostsファイルと同じように編集する. 中身をテキストエディタで開くと次のようになっている.

lmhostsの中身
# Copyright (c) 1993-1995 Microsoft Corp.
#
# This is a sample LMHOSTS file used by the Microsoft TCP/IP for Windows
# NT.
#
# This file contains the mappings of IP addresses to NT computernames
# (NetBIOS) names.  Each entry should be kept on an individual line.
# The IP address should be placed in the first column followed by the
# corresponding computername. The address and the comptername
# should be separated by at least one space or tab. The "#" character
# is generally used to denote the start of a comment (see the exceptions
# below).

〜略〜

 新しく情報を追加するには,この一番最後の行に付け加える.(行の先頭が#は,全てコメントなので消しても構わない)

 次に,実際の定義を参考に説明する.

lmhostsの記述例
111.111.111.112	quadra
111.111.111.111	duo	      #DOM:apple
111.111.111.113     centris      #PRE

  • 1行目
    •  コンピュータ名の"quadra"のIPアドレスを定義する.
  • 2行目
    • コンピュータ名"duo"は,"#DOM:"の後にあるドメイン名"Apple"のドメインコントローラである事を示す.
  • 3行目
    • "#PRE"を付ける事により,OSの起動時にメモリ内に事前にロード(Preload)される.

5.リロード

 前に述べたように,lmhostsにて,#PREを付けるとOSの起動時にその内容が読み込まれる. そして,#PREが付いた物は,キャッシュとは違いタイムアウトせずに常駐される.

 lmhostsを修正した場合に,再度読み込ませるためには,再起動かnbtstatコマンドを利用する.

Lmhostsのリロード例
C:\WINDOWS>nbtstat -c ←現在のキャッシュの表示

Node IpAddress: [127.10.10.95] Scope Id: []

              NetBIOS Remote Cache Name Table

    Name              Type       Host Address    Life [sec]
------------------------------------------------------------
STEVIE         <03>  UNIQUE      128.17.211.34       -1
IMACS          <20>  UNIQUE      128.17.54.30        60
QUADRA         <1C>  UNIQUE      128.17.54.30        60

C:\WINDOWS>nbtstat -R ←リロード

        ↓現在のキャッシュが削除(purge)
Successful purge and preload of the NBT Remote Cache Name Table.
C:\WINDOWS>nbtstat -c ←現在のキャッシュの表示

Node IpAddress: [127.10.10.95] Scope Id: []

              NetBIOS Remote Cache Name Table

    Name              Type       Host Address    Life [sec]
------------------------------------------------------------
STEVIE         <03>  UNIQUE      128.17.211.34       -1

C:\WINDOWS>

 これはWindows95でもWindowsNTでも同じである.

6.プリロードとTTL

 TTLとは,Time To Live,つまり生存期間である.

 Lmhosts(WINSも同じ)を使ってNetBIOS名の名前解決を行なうと,その結果がキャッシュとして一定時間主記憶メモリに記憶される.

キャッシュの表示例
    Name              Type       Host Address    Life [sec
----------------------------------------------------------
IMAC            <20>  UNIQUE      128.17.54.30        420
IMAC            <00>  UNIQUE      128.17.54.30        60
CENTRIS         <03>  UNIQUE      128.17.211.34       -1
QUADRA          <1B>  UNIQUE      128.17.54.30        360

 たとえば,このキャッシュの表示例だと「Life」の項目にそのエントリが後どれくらい残る予定か表示されている.この時間をTTLという.

 lmhostsの定義で,#PREを定義すると,キャッシュからクリアされなくなる. クリアされないエントリは,Lifeが-1で表示されている.

7.NetBIOS の識別子

 NetBIOS名は,16文字で構成されるが,Microsoftでは,その16文字目は特別な意味を持たせている.

 たとえば,ドメインマスタブラウザを明示的に定義するためには,次のように記述する.

127.10.10.10  COMPUTER1
127.10.10.10  "DOMAINS         \0x1B"
#              12345678901234567

 この場合,\0x1Bは,17文字目に記述する.

 NetBIOS名は“15文字+1識別子=16文字”で構成されているので,16文字目から\0x1Bを記述したが,これでは上手く行かなかった.(Windows95の場合) しかし,17文字目以降にすると正しく認識された.

 NetBIOSの接続子については,ドキュメント「NetBIOS」を参照する.


参考文献


広告スペース
Google