Windows TIPS
[Network]
IPアドレスからホスト名を見つける方法
――nbtstatコマンドを使ってNetBIOS名を特定する――
→ 解説をスキップして操作方法を読む
デジタルアドバンテージ 島田 広道
2000/10/07
2002/04/17 更新
2011/04/08 更新
対象OS
Windows 2000
Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008
Windows 7
Windows Server 2008 R2
■
IPアドレスの衝突などのトラブルが発生した場合は、そのIPアドレスを使用しているホストを特定しなければならない。
■
Windows OSでIPアドレスからホスト名を求めるためには、nbtstatコマンドを活用するとよい。
TCP/IP プロトコルを使ったネットワークでは、IPアドレスやホスト名の付け方などが原因でトラブルが発生することがある。例えば、ネットワーク上ですでに使用されているIPアドレスと同じIPアドレスを持つマシンを起動したりすると、IPアドレスが衝突してしまい、それらのマシン(ノード)への通信が正常に行えなくなってしまう。このとき、衝突したIPアドレスがルータや重要なサーバ・マシンのものだったりすると、その被害はネットワーク上のすべてのノードにまで及ぶことになる。具体的には、ファイル・サーバなどがアクセスできなくなったり、インターネットへの接続がすべてダウンしてしまったりする。
このようなIPアドレスの重複のトラブルは、IPアドレスを固定的に割り当てようとして失敗した場合などに起こる可能性がある。管理者としてはこのような場合、衝突したIPアドレスを持つマシンを見つけ出して(後から起動した方だけでなく、必要ならば先に起動した方のマシンも調査して)、設定をチェックしなければならない。
しかし実際にどのマシンが、どのIPアドレスを使っているかを調べるのは容易ではない。(正常に稼働しているマシン上で)ping コマンドを使えば、ある特定のIPアドレスが現在使われているかどうか(アクティブであるかどうか)などは分かるが、それが実際にどのマシンであるかは分からないからだ。また、arpコマンドでARP テーブルを表示させれば、そのIPアドレスとMACアドレスの対応は分かる。だが、それが実際にどのマシンであるかを特定するには、各マシンのネットワーク・インターフェイスの種類やMACアドレスを常に厳格に管理・記録している必要があり、現実的には難しいだろう。
ホスト名からマシンを類推する
現在ではDHCPサービスが普及したおかげで、IPアドレスの衝突というようなトラブルは少なくなっている。しかしDHCPでは、IPアドレス・プールから適宜各クライアントに割り当てられるため、どのマシンにどのIPアドレスが付けられているかが分かりにくい。逆にいえば、DHCPサービスが普及したおかげで、IPアドレスからマシンを特定するのがより困難になっている。
このような環境では、ネットワークのトラブル・シューティング作業は難しくなるだろう。しかしどのマシンであるかが完全に特定できなくても、そのホスト名が分かれば、トラブル・シューティングが容易になるというケースも少なくない。ホスト名にはたいていの場合、どのような種類のマシンであるかが分かるような名前や、その持ち主が分かるような名前が付けられていることが多いからだ。
例えばいま、インターネットへのアクセス回線が非常に重くなるという事態が発生したとする。どうも誰かが(故意かそうでないかは不明だが)大量のトラフィックを発生させているようだが、配線が見えにくい場所にあったり、無線LANなどが導入されたりしていて、誰なのかがはっきり分からない。このような場合、管理者はまずルータやproxyサーバ、ファイアウォール・システムなどにログインしてnetstatコマンドなどを使ったり、ネットワーク・アナライザなどを駆使したりして、問題となっているIPアドレスを特定することになるだろう。そして次に、IPアドレスからホスト名などの情報を求めることになる。本稿では、Windows OSでIPアドレスからホスト名を検索する方法を説明する。カギとなるのは、Windows OSが標準で備えるコマンド「nbtstat」である。
Windows OSの場合、IPアドレスからホスト名を確認するには、コマンド・プロンプト上で次のようにnbtstatコマンドを実行するだけでよい。nbtstatコマンドはWindows OSに標準で装備されているので、あらためてインストールする必要はない。
「IPアドレス 」には、調べたいマシンのIPアドレスを指定する。このコマンドは、指定されたマシンのコマンド・プロンプト上で、
を実行するのと同じであり、そのマシンの持っている「NetBIOS 名前テーブル」を出力させるためのものである。
これ以外にも、
というコマンドで該当するマシンの共有リソースを表示させ、そこから情報を得るという方法もある。ただし、ファイルとプリンタの共有サービスを意図的に停止しているマシンに対しては利用できない。
さて、nbtstatコマンドで表示される情報には、「名前(Name)」「種類(Type)」「状態(Status)」の3つがある。
フィールド名
意味
名前(Name)
名前。NetBIOS名と呼ばれる。16bytes長。1〜15byte目が名前で、16byte目はNetBIOS名の種類を表す
種類(Type)
単一名かグループ名かなどの区別。各ホストごとに固有の名前は「単一(UNIQUE)」だが、ワークグループ名やドメイン名の場合は「グループ(GROUP)」と表示される。「グループ」は複数のマシン上に同時に存在する
状態(Status)
登録済みかどうかの状況。通常は「登録済(Registered)」となっている
nbtstatコマンドで表示されるNetBIOS名情報
Windows Vista/Windows Server 2008/Windows 7/Windows Server 2008 R2では、フィールド名やその内容は日本語で表示される。一方、Windows 2000/Windows XP/Windows Server 2003では英語で表示される。
このうち、重要なのが最初の「名前(Name)」情報である。これは長さ16bytesの文字列データであり、最後の1byteによってそのNetBIOS名の種類を表している。この種類の詳細についてはマイクロソフトのサポート技術情報「NetBIOS サフィックス (NetBIOS 名の 16 番目の文字) 」などを参照していただきたい。最後の1byteは特別に「<1E>」などというふうに16進数で表記する。
nbtstatコマンドの実行結果のうち、NetBIOS名の種類(最後の1byte)が「<00>」で、かつ「種類(Type)」フィールドが「一意(UNIQUE)」のエントリはそのマシンの名前(NetBIOSホスト名すなわちコンピュータ名)を表している。
C:\>nbtstat -A 192.168.2.109 ……
ローカル エリア接続: ……
ノード IP アドレス: [192.168.2.191] スコープ ID: [] ……
NetBIOS リモート コンピューター ネーム テーブル ……
名前 種類 状態
---------------------------------------------
DAPC32-ATHLON <00> 一意 登録済 ……
DIGITAL-ADV <00> グループ 登録済 ……
DAPC32-ATHLON <20> 一意 登録済
DIGITAL-ADV <1E> グループ 登録済
MAC アドレス = 00-13-D4-8B-AB-BA
nbtstatコマンドでホスト名を確認する
これはIPアドレス「192.168.2.109」のマシンのホスト名を調べるために、Windows 7マシンでnbtstatコマンドを実行したときの表示の例。Windows XP/Windows Server 2003では「種類」や「状態」などが英語で表示されるものの、その意味や挙動は変わらない。
IPアドレス「192.168.2.109」のマシンが持つNetBIOS名の一覧を表示させるためのコマンドライン。
nbtstatコマンドを実行しているマシンのネットワーク・インターフェイス名。
nbtstatコマンドを実行しているマシンのIPアドレス。
この下に、IPアドレス「192.168.2.109」のNetBIOS名一覧が表示される。
ホスト名(正確にはコンピュータ名)。
所属しているドメイン名またはワークグループ名。
この場合、IPアドレスが「192.168.2.109」であるマシンは、先頭にある「<00>」のエントリより、ホスト名(正確にはコンピュータ名)が「DAPC32-ATHLON」であることが分かる。
NetBIOS over TCP/IP(NBT)が無効だとnbtstatは使えない
nbtstatはNetBIOS over TCP/IP(NBT)を利用してNetBIOS名の一覧を取得する。そのため、対象マシンにおいてTIPS「ポート445(ダイレクト・ホスティングSMBサービス)に注意 」の「■パケット・フィルタ/ファイアウォールによるポートのブロック」にある手順でNBTを無効化していると、nbtstatコマンドを実行しても「ホストが見つかりませんでした。(Host not found.)」と表示され、NetBIOS名の一覧は得られない。対象マシンのWindowsファイアウォールで「ファイルとプリンターの共有」を拒否している場合も同様である。このような場合は、対象マシンでNBTを有効にし、ファイアウォールの設定で「ファイルとプリンターの共有」を許可する必要がある。
UNIX系OSにおけるホスト名の求め方
以上のnbtstatコマンドを使う方法は、対象となるマシンがWindows OSの場合には有効であるが、UNIXなどの場合には、SMBサービス(Sambaなど)が実装されていないと利用できない。しかし代わりに、例えばtelnetやftpなどのアプリケーションで接続してみて、接続時のオープニング・メッセージなどで表示されるホスト名を調べるという方法が利用できるだろう。
C:\>telnet 192.168.3.12 ……telnetで接続する
Red Hat Linux release 7.2 (Enigma)……Linuxのプロンプト
Kernel 2.4.9-31 on an i686
login:
ここではLinuxのログイン・プロンプトが表示されたので、Linuxホストであることが分かる。ただしホスト名はこれでは不明である。必要ならばログインして調べるか、SMTPやPOPサービスなどに接続して表示されているホスト名などを見るとよいだろう。その手順については、TIPS「Telnetクライアントの使い方 」を参照していただきたい。
この記事と関連性の高い別のWindows TIPS
generated by
更新履歴
【2011/04/08】 Windows Server 2003/Windows Vista/Windows Server 2008/Windows 7/Windows Server 2008 R2に関する情報を追加しました。また、pingとarpによるネットワーク・カード・ベンダの調査方法については、TIPS記事「ARPコマンドで通信先を特定する 」へ移しました。
【2002/04/17】 Windows XPに関する情報を追加しました。
TechTargetジャパン
Windows Server Insider フォーラム 新着記事
キャリアアップ