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 の必要はなくなります。 |
つまり,インターネットで言うところの"/etc/hosts"ファイルと同じ様なものであるが,定義が少々異なるのでここに説明する.
3.lmhostsの格納場所
Windows95とWindowsNTではlmhostsファイルの格納場所が違う. それを次に示す.
3.1.Windows95の場合

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

WindowsNTの場合は,ちょっと階層が深くなっているので注意する. このディレクトリはNT3.51およびNT4.0では有効である.(たぶんNT3.1とかNT3.5でも同じ)
|
3.3.いま示したのはサンプルファイル
前出で紹介したWindows95およびWindowsNTのlmhostsファイルは,サンプルファイルである. 本来ならば"lmhosts"という名前である必要がであるが,"lmhosts.sam"があるはずである.(たぶん,拡張子のsamは"sample"の意味)
lmhostsを使うときは,このサンプルファイルを同じディレクトリに複写して使う.
サンプルファイル名 | 本当の名前(使うときの名前) |
---|---|
lmhosts.sam | lmhosts |
ファイル名はWindowsなので,大文字小文字は関係ない.
4.編集について
lmhostsも,基本的にはhostsファイルと同じように編集する. 中身をテキストエディタで開くと次のようになっている.
# 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). |
新しく情報を追加するには,この一番最後の行に付け加える.(行の先頭が#は,全てコメントなので消しても構わない)
次に,実際の定義を参考に説明する.
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コマンドを利用する.
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」を参照する.