Windows TIPS
[Network]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

ホスト名からIPアドレスを見つける方法

解説をスキップして操作方法を読む

デジタルアドバンテージ
2004/01/17
 
対象OS
Windows 2000 Professional
Windows XP Professional
Windows XP Home Edition
Windows 2000 Server
Windows 2000 Advanced Server
Windows Server 2003
コンピュータ名からIPアドレスを求めることを名前解決という。Windowsネットワークでは、NetBIOS系とTCP/IP系の2種類の名前解決がある。
NetBIOSにおける名前解決の結果を調べるにはNetBIOSのネーム・キャッシュの内容を調べるとよい。
TCP/IPにおける名前解決の結果を調べるにはpingコマンドが便利である。
 
解説

 Windowsネットワークでは、TCP/IPNBT(NetBIOS over TCP/IP)といったプロトコルが標準的に使われているが、これらのプロトコルでは、名前(ホスト名やFQDN名など)やIPアドレスが重要な意味を持っている。TCP/IPは基本的にはIPアドレスさえあれば動作するプロトコルであるが、IPアドレスは人間にとっては覚えにくく扱いにくいものであるため、通常はホスト名やホスト名にドメイン名を加えたFQDN名が利用される。一方NetBIOSは、基本的にはNetBIOS名という文字列をベースにして動作するサービスである。しかし現在広く利用されているNBTでは、TCP/IP上でNetBIOSのサービスを実現しているため、一般ユーザーの立場からすると、この2種類のプロトコルの境界は非常にあいまいであるといえる。

 ネットワークが基本的にはTCP/IPベースで構築されている以上、最終的にはIPアドレスを使って相手のコンピュータと通信するわけであるが、そのためにはコンピュータ名やFQDN名、NetBIOS名などをIPアドレスに対応付けなければならない。このような名前とIPアドレスの対応付け(名前からIPアドレスを求めること、もしくはその逆操作)は名前解決と呼ばれる。名前解決は比較的コストの大きい処理であり、例えばIPパケットを1つ送信するたびに行うことは現実的ではない。そこで、一度変換(取得)した名前解決の結果はキャッシュに格納しておき、名前解決が必要な場合はまずキャッシュの中を検索している。このようなキャッシュ動作はネットワークのさまざまな場所で行われる。

 キャッシュはパフォーマンスの改善には役立つが、場合によっては古いキャッシュデータを返してしまうという可能性もある。例えばコンピュータの名前(コンピュータ名やドメイン名)を変えたり、IPアドレスを変えたりした場合、変更前の情報がいずれかのキャッシュに残っていると、間違った相手に対して通信しようとする可能性がある。ネットワークの構成を変更した場合に、相手に接続できないといったトラブルが生じた場合は、あるコンピュータ名が実際にどのIPアドレスに名前解決されているかを調べ、それが正しいかどうかを検証する必要に迫られることも少なくない。本TIPSでは、Windowsネットワークにおける名前解決の方法についてまとめておく。


操作方法

 Windowsネットワークにおける名前解決の手段には、大きく分けて2つの種類がある。1つはNetBIOSを利用したサービスにおける名前解決であり、もう1つはTCP/IPにおける名前解決である。

 NetBIOS名前解決は、NetBIOSを利用したサービスで使われる名前解決の手段である。具体的には、例えばnet useやnet viewといったNetコマンド、ファイル共有サービスやプリンタ共有サービスなどで使われている。一般にWindowsネットワークというと、これらのサービスを指すことが多い。LMHOSTSファイル(デフォルトでは「%windir%\system32\drivers\etc\lmhosts」)やNetBIOSブロードキャスト、WINSなどで実際の名前解決の手段として利用されている。

 もう1つのTCP/IPにおける名前解決とは、UNIXを中心とする、TCP/IPネットワークの世界で培われてきた名前解決の手段である。具体的には、例えばpingやtelnet、ftp、Webブラウザ、Outlook Expressのようなメール・アプリケーションなどで利用されている(NetBIOSサービスではなく、WinSockサービスを使っているものが多い)。HOSTSファイルDNS、NIS(Network Information System)、IEN116(DNSが普及する以前によく使われていた)などが実際の名前解決の手段として利用されている。

 この2つの名前解決は、現在のWindowsネットワークでは相互に補完しながら動作するように設計されているため、その違い(境界)が分かりづらいが、トラブルシューティングなどの場合にはそれらの違いを意識する必要がある。

NetBIOS(NBT)における名前解決の調査

 NetBIOS(NBT)プロトコル環境において、あるコンピュータ名(名前)がどのIPアドレスに名前解決されているかを知ることは、Windowsネットワークにおけるトラブルシューティングの第一歩である。

 NetBIOSにおける名前解決の結果を確認するためには、「TIPS―IPアドレスからホスト名を見つける方法」と同様に「nbtstat -a」コマンドを使う方法が簡単でよい。これはNetBIOS(NBT)プロトコルを使って指定されたコンピュータに接続する機能を持ったコマンドである。これを実行すると、指定された名前に対してNetBIOSレベルで名前解決が行われるが、その名前解決の結果がNetBIOSネーム・キャッシュに保存される。これを表示させると、コンピュータ名がどのようなIPアドレスに変換されたのか分かる。具体的には、次のような3つのコマンドを連続して実行する。

nbtstat -R
nbtstat -a NetBIOS名
nbtstat -c

 最初の「nbtstat -R」は、現在のNetBIOSネーム・キャッシュをクリアするコマンドであり、次のコマンドの結果を分かりやすくするために必要なものである。2つ目の「nbtstat -a NetBIOS名」は、指定されたコンピュータに対してNetBIOSプロトコルを使って接続するコマンドであるが、これ以外にも例えば「net view \\コンピュータ名」のようなコマンドでも構わない(ただしNetBIOSプロトコルがファイアウォールなどでブロックされていると、これらの手法は使えない)。

 最後の「nbtstat -c」は、名前解決の結果が含まれるNetBIOSネーム・キャッシュを表示させるコマンドである。最初に「nbtstat -R」でキャッシュをクリアしているので、キャッシュには最新のNetBIOS名前解決の結果だけが含まれているはずである。

 実際にこのコマンドを実行すると、次のようになる。

C:\>nbtstat -R …キャッシュのクリア
    Successful purge and preload of the NBT Remote Cache Name Table.

C:\>nbtstat -a winpc001 …NetBIOS名前解決の実行

ローカル エリア接続:
Node IpAddress: [192.168.0.155] Scope Id: []

           NetBIOS Remote Machine Name Table

       Name               Type         Status
    ---------------------------------------------
    WINPC001       <00>  UNIQUE      Registered
    WINPC001       <03>  UNIQUE      Registered
    D-ADVANTAGE0   <00>  GROUP       Registered
    D-ADVANTAGE0   <1E>  GROUP       Registered
    WINPC001       <20>  UNIQUE      Registered
    USER03         <03>  UNIQUE      Registered

    MAC Address = 00-E0-4C-AB-26-6E


C:\>nbtstat -c …キャッシュ内容の表示

ローカル エリア接続:
Node IpAddress: [192.168.0.155] Scope Id: []

                  NetBIOS Remote Cache Name Table

        Name              Type       Host Address    Life [sec]
    ------------------------------------------------------------
    SERVER01       <03>  UNIQUE          192.168.0.51        -1
    SERVER01       <00>  UNIQUE          192.168.0.51        -1
    SERVER01       <20>  UNIQUE          192.168.0.51        -1
    WINPC001       <20>  UNIQUE          192.168.0.231       602 …結果
    WINPC001       <00>  UNIQUE          192.168.0.231       602
    D-ADVANTAGE    <1C>  GROUP           192.168.0.51        -1

 ここでは、「WINPC001」というコンピュータ名を指定してNetBIOS名前解決をさせている。最後のキャッシュの表示結果を見ると、この名前に対するIPアドレスは「192.168.0.231」であることが分かる。これが求めるNetBIOS名前解決の結果である。「Life(キャッシュの寿命)」の値が「602(秒)」となっているが(=約10分)、一度解決された結果はデフォルトでは約10分間有効であるため、このような表示になっている。しばらく時間をおいて再度「nbtstat -c」を実行すると、1秒ずつカウント・ダウンしていることが分かるだろう。

 なお表示された結果のうち、Lifeの値が「-1」となっているエントリがいくつかあるが(ここでは「SERVER01」と「D-ADVANTAGE」)、これらはLMHOSTSという静的なファイル中でプリロードされたエントリであり(LMHOSTSファイル中で、#PREや#DOMを使って指定している)、無限の寿命を持っていることを表している。LMHOSTSファイルを使用していない場合はこのようなエントリは表示されないので、結果を調査する場合は注意していただきたい。

 NetBIOSにおける名前解決の手段には、NetBIOSブロードキャストを使った直接問い合わせのほか、WINSサーバへの問い合わせや、LMHOSTSファイルの参照など、さまざまな方法が存在するが、このようにNetBIOSネーム・キャッシュの内容を調査すれば、その結果を簡単に知ることができる。

TCP/IPにおける名前からIPアドレスへの変換を調べる

 TCP/IPにおける名前解決を調査する一番簡単な方法は、pingコマンドを使うことだろう。pingの引数でコンピュータ名やFQDN名を指定すると、最初にホスト名とそれに対応するIPアドレスが表示される。これを見ることで、指定された名前がどのIPアドレスとして名前解決されているかを確認することができる。

C:\>ping winpc001

Pinging winpc001 [192.168.0.231] with 32 bytes of data:
                  ↑↑↑↑↑↑…IPアドレス
Reply from 192.168.0.231: bytes=32 time<1ms TTL=128
Reply from 192.168.0.231: bytes=32 time<1ms TTL=128
Reply from 192.168.0.231: bytes=32 time<1ms TTL=128
Reply from 192.168.0.231: bytes=32 time<1ms TTL=128

Ping statistics for 192.168.0.231:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

 この例では、「winpc001」というコンピュータ名のIPアドレスは「192.168.0.231」であることが分かる。

 TCP/IPにおける名前解決では、実際にはDNSやhostsファイル(デフォルトでは「%windir%\system32\drivers\etc\hosts」)、WINSなどを組み合わせて名前解決を行っている。さらに、それらの結果は適宜キャッシュされるので、場合によってはそれらのデータベース間で不整合が生じることもある(ホスト名やIPアドレスの設定などを変更した場合に不整合状態になる可能性が高い)。そのため、トラブルシューティング時には各サービスごとの名前解決やキャッシュの内容を詳しく調査しなければならないことがある。

 具体的な調査方法を簡単に述べると次のようになる。

■静的な名前解決の調査
 hostsファイルの内容をエディタなどで確認する。

■DNSのクライアント側キャッシュの調査
 コマンド・プロンプト上で「ipconfig /displaydns」を実行すると、DNSのクライアント側リゾルバ・キャッシュの内容が表示される(リゾルバとは、名前解決を担当するモジュールのこと)。DNSサーバ側でDNSレコードを変更しても、クライアント側のDNSのキャッシュに古いレコード(過去にキャッシュに記録されたレコード)が存在すればそちらが優先されることがある。このような場合は、「ipconfig /flushdns」を使ってDNSのクライアント側のキャッシュを破棄させることにより、DNSサーバへのアクセスを行わせることができる。

■DNSのサーバ側のキャッシュの調査
 DNSサーバは、クライアントからの要求にこたえるため、ほかのDNSサーバに対する問い合わせ結果を自分自身でもキャッシュしている(このようなDNSサーバをキャッシュDNSサーバという)。この内容を確認するには、nslookupコマンドを使うか、DNSの管理ツールを使ってDNSサーバの持つキャッシュの内容を直接表示させる。

■WINSサーバのデータベースの調査
 WINSの管理ツールを使ってデータベースの内容を表示させ、調査する。End of Article

関連記事(Windows Server Insider)
  TIPS―IPアドレスからホスト名を見つける方法
  TIPS―pingでネットワーク・トラブルの原因を調査する
  TIPS―nslookupの基本的な使い方(イントラネット編)
  TIPS―ポートのリッスン状態を調査する
  TIPS―netstatコマンドを使いこなす
  TIPS―netstatでリッスンしているプロセスを特定する
  TIPS―名前解決のトラブルシューティング(DNSリゾルバ・キャッシュ編)
  TIPS―ネットワークの修復機能とは
  TIPS―LMHOSTSファイルの更新を即座に反映させる方法
  TIPS―NetBIOS名でほかのコンピュータに接続できない
  連載―基礎から学ぶWindowsネットワーク
     
この記事と関連性の高い別のWindows TIPS
hostsとlmhostsの違い
LMHOSTSファイルの更新を即座に反映させる方法
リモート・ネットワークの名前解決をhosts/lmhostsで行う
LMHOSTSのエントリ・キャッシュ・サイズを拡張する
名前解決のトラブルシューティング(DNSリゾルバ・キャッシュ編)
IPアドレスからホスト名を見つける方法
LMHOSTSファイルのキーワードはすべて大文字で記述する
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「Windows TIPS」

TechTargetジャパン

Windows Server Insider フォーラム 新着記事

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

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

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

@IT Sepcial
ソリューションFLASH