Windows TIPS
[Network]
  Windows TIPS TOPへ
Windows TIPS全リストへ

hostsとlmhostsの違い

デジタルアドバンテージ
2004/06/26
 
対象OS
Windows NT
Windows 2000
Windows XP
Windows Server 2003
Windowsネットワークにおいて静的な名前解決を行う手段としては、hostsファイルとlmhostsファイルの2つがある。
hostsファイルは、もともとはTCP/IPプロトコルで使われてきた名前解決手段であるが、現在ではNBT系のサービスでも利用されている、一番基本的な名前解決手段である。
lmhostsファイルは、もともとはNBTプロトコルで利用されてきた名前解決手段であり、主にNetBIOS名とIPアドレスの対応付けを管理している。
 
解説

 Windowsネットワークで利用されるプロトコルには、大きく分けてNetBIOS系のプロトコルと、TCP/IP系のプロトコルがあり、その目的に応じて使い分けられている。もともとこれらのプロトコルはまったく別のものであり、Windows OSに附属するコマンドは主にNetBIOS系(SMBやMS-RPCなどを含む)で動作するように作られているものが多かったが(コマンドの操作対象として「\\サーバ名」という形式の指定をするものは、NetBIOS系のことが多い)、現在では両者は巧みに組み合わされ、ユーザーはその違いをほとんど意識することなく利用することができるようになっている。だが、細部ではいくらかの違いがあり、ネットワークの管理をする場合にはその違いを知っておく必要がある。本TIPSでは、静的な名前解決に使われる、hostsファイルlmhostsファイルの違いについて解説しておく。

 Windowsネットワーク環境では、コンピュータ名(ホスト名)と実際のコンピュータを対応付けるために、「名前解決」という機能が使われる。これは、例えばserver1.example.comというコンピュータ名を指定すると、これに対応するコンピュータのIPアドレスやNetBIOSのノード名を求め、通信相手のコンピュータを「特定」するための機能である。

 実際の名前解決では、さまざなプロトコルや手法が組み合わされて実現されている。具体的には、NetBIOS名のブロードキャスト、DNSサービス、WINSサービス、NetBIOS名前キャッシュ、DNS名前キャッシュ、hostsファイル、lmhostsファイルなどがあり、あらかじめ決められた優先順位に基づいて、順番に各機能が利用されている(実際の優先順位はOSやネットワークの設定によって変わるので、ここでは触れない)。このうち、DNSやWINSは動的な名前解決機能であり、hostsファイルやlmhostsファイルは静的な名前解決機能に分類できる。初期のネットワークでは、静的な名前解決手段が使われていたが、現在の大規模化・高度化したネットワークでは、ネットワークの構成が絶えず変化するため、動的な名前解決手段が使われるのが普通である。だが、例外的なコンピュータやネットワークを定義したり(例:DNSに正式に登録されていないようなローカルなコンピュータを定義したり、リモートのLANへアクセスするなど)、一時的にしか使用しないものを実験的に登録してみるには、静的ファイルを使うのが簡単でよい。このために利用できるのが、hostsファイルやlmhostsファイルによる、コンピュータ名の定義である。

hostsファイルとは

 hostsファイルは、もともとはTCP/IP系のネットワークで利用されていた、IPアドレスとコンピュータ名の対応付けのための定義ファイルである。具体的には以下のような形式のテキストファイルである。Windows NT/Windows 2000/Windows XP/Windows Server 2003系のOSでは、デフォルトでは「%windir%\system32\drivers\etc」フォルダ中に格納することになっている。

※hostsファイルの例

# This file contains the mappings of IP addresses to host names.
127.0.0.1      localhost loghost
#
192.168.1.21    server1 server1.example.com
192.168.1.22    server2
192.168.1.23    server3

 各行が1つのIPアドレスとその名前を定義している。左端にIPアドレスを書き、その右側は、ホスト名を記述するが、ホスト名を複数記述することもできる。また、#はコメントを表し、#より右側はすべて無視されることになっている。

lmhostsファイルとは

 lmhosts(LMHOSTS)ファイルの「lm」とは「LAN Manager(Windowsネットワークの前身となる製品)」の略であり、hostsファイルと同様の形式で、NetBIOS系のコンピュータ(正確にはNetBIOS over TCP/IPプロトコルを利用するコンピュータ。必ずIPアドレスが割り当てられている)を記述できるようにしたものである。やはりデフォルトでは「%windir%\system32\drivers\etc」フォルダ中に格納することになっている(サンプルとして、同フォルダにはlmhosts.samというファイルが用意されているので、参考にするとよい)。

※lmhostsファイルの例

192.168.1.31    fileserver1 #PRE #DOM:EXAMPLEDOM
192.168.1.32    fileserver2 #PRE #DOM:EXAMPLEDOM
192.168.1.33    fileserver3 #PRE

LMHOSTSファイルのキーワード
LMHOSTSファイルの更新を即座に反映させる
LMHOSTS ファイルの概要と定義済みキーワード

 hostsファイルと比べると、#PREとか#DOM:<ドメイン名>といった特別なキーワードが追加されている点が異なる。これらは、NetBIOSキャッシュへのプリロードと、ドメイン・コントローラの指定である。詳細についてはWindows TIPS「LMHOSTSファイルのキーワードはすべて大文字で記述する」や「LMHOSTSファイルの更新を即座に反映させる方法」などを参照していただきたい。

hostsファイルでしかできないこと

 hostsとlmhostsは似ているが、その目的や出自が異なるため、lmhostsと比べるといくらかの違いがある。ここでは、hostsファイルでのみ利用可能な機能について解説しておく。

■コンピュータ名に対して別名を定義する
 TCP/IPでは、通信は最終的にはIPアドレスでのみ行われるため、極端にいうと、どのようなコンピュータ名が付けられていてもよい。そのためサンプルのhostsファイルを見ると分かるように、localhostとかloghostといった、本来のコンピュータ名とは異なる名前を定義付けてもよい(NetBIOSでは、自身のコンピュータ名と異なる名前でアクセスしようとするとエラーとなる場合がある)。ちなみにlocalhostとは、TCP/IPネットワークにおいて自分自身を指す場合に一般的に使われる名前である。

■1つのIPアドレスに対して複数の名前を定義する
 上の例から分かるように、1つのIPアドレスに対して、複数のコンピュータ名を定義することができる。ただし手元のWindows XPマシンでは最大9つまで定義することが可能であったが(各名前の間は空白かタブ記号で区切る)、古いTCP/IPの実装では3つまでしか認識しないものもあるので、注意していただきたい。

■FQDN名を定義する
 例にあるserver1.example.comのように、hostsファイル中では、FQDN名を定義することもできる。一般的には、ドメイン名を含まないシンプルなコンピュータ名と、FQDN名の両方を記述しておくとよいだろう(部分一致ではなく、完全一致でのみ検索されるため)。

■16文字以上の長いコンピュータ名を定義する
 NetBIOS名は最大15文字しか定義できないが、このhostsで定義する場合は、(DNSでの定義と同様に)16文字以上の長いコンピュータ名(もしくはFQDN名)を定義することができる。

lmhostsファイルでしかできないこと

 lmhostsは、もともとはNBT(NetBIOS over TCP/IP)名を定義するために(hostsファイルをベースに)作られたものであり、NetBIOS名のブロードキャストによる名前解決を補佐するための機能を持っている。lmhostsでしか利用できない機能としては、次のようなものがある。

■NBT名を定義する
 このファイルに記述された名前は、NetBIOS名前解決において利用される。NetBIOSを使ったネットワーク・サービスでのみ利用されるので、例えばリモートのネットワーク上にある(Windows OS+NBTベースの)ファイル・サーバへアクセスするためには、このlmhostsファイルを使って定義しておくとよい(動的な名前解決サービスを利用したければ、lmhostsの代わりにWINSサーバを利用する)。

■NetBIOSの名前タイプを指定する
 NetBIOS名には、ドメイン名やユーザー名、コンピュータ名などといった、いくつかの属性が含まれている。この属性は、NetBIOS名の16byte目を使っているが、lmhostsではこの特別な属性も記述することができる。また、#DOMや#INCLUDEなどのキーワードを使って、特別な処理を行わせることもできる。

■NetBIOSキャッシュへのプリロードを行う
 定義行の最後に「#PRE」を付けておくと、NetBIOSキャッシュに最初にロードされるため、NetBIOSの名前解決ブロードキャストなどが抑えられ、ネットワーク全体のトラフィックを抑えることができる。

■WINSサーバに静的エントリとして取り込むことができる
 WINSサービスは、NetBIOS名前解決を動的/集中的に行うための機能であるが、WINSサーバではlmhostsファイルを取り込んで、静的な定義を素早く行うことができる。End of Article

関連記事
Windows TIPS:LMHOSTSファイルのキーワードはすべて大文字で記述する(Windows Server Insider)
Windows TIPS:LMHOSTSファイルの更新を即座に反映させる方法(Windows Server Insider)
Windows TIPS:LMHOSTSのエントリ・キャッシュ・サイズを拡張する(Windows Server Insider)
Windows TIPS:ホスト名からIPアドレスを見つける方法(Windows Server Insider)
Windows TIPS:pingでネットワーク・トラブルの原因を調査する(Windows Server Insider)
Windows TIPS:ポート445(ダイレクト・ホスティングSMBサービス)に注意(Windows Server Insider)
連載:基礎から学ぶWindowsネットワーク(Windows Server Insider)
 
  関連リンク
LMHOSTS ファイルの概要と定義済みキーワード(マイクロソフト サポート技術情報)
Windows 2000 Serverドキュメント「Lmhosts ファイル」(マイクロソフト)
W95: DNS サービスを使わない場合の名前解決を行なう方法(マイクロソフト サポート技術情報)
 
この記事と関連性の高い別のWindows TIPS
ホスト名からIPアドレスを見つける方法
LMHOSTSファイルの更新を即座に反映させる方法
LMHOSTSのエントリ・キャッシュ・サイズを拡張する
LMHOSTSファイルのキーワードはすべて大文字で記述する
リモート・ネットワークの名前解決をhosts/lmhostsで行う
システム移行などのために複数のコンピュータ名を付ける
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「Windows TIPS」

TechTargetジャパン

Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

キャリアアップ

- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る
- PR -

ホワイトペーパーTechTargetジャパン

ソリューションFLASH

「ITmedia マーケティング」新着記事

「プログラマティック」とは何なのか――日本と米国の論点の違い
プログラマティックの分野で欧米と比べて出遅れている日本。なぜ日本ではなかなか進まな...

第2回 データドリブンマーケティングの視点から見たマーケティングリサーチ
今回はマーケティングリサーチの役割と商品開発段階におけるアプローチ方法からデータド...

第1回 CRMプロジェクトからの学びとCCO(Chief Customer Officer)の登場
CRMが日本に登場して約20年、企業は常に“成功事例”を模索しています。本連載では企業の...