| [Network] | |||||||||||||||
ホスト名からIPアドレスを見つける方法
|
|||||||||||||||
|
|||||||||||||||
| 解説 |
Windowsネットワークでは、TCP/IPやNBT(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 -R」は、現在のNetBIOSネーム・キャッシュをクリアするコマンドであり、次のコマンドの結果を分かりやすくするために必要なものである。2つ目の「nbtstat -a NetBIOS名」は、指定されたコンピュータに対してNetBIOSプロトコルを使って接続するコマンドであるが、これ以外にも例えば「net view \\コンピュータ名」のようなコマンドでも構わない(ただしNetBIOSプロトコルがファイアウォールなどでブロックされていると、これらの手法は使えない)。
最後の「nbtstat -c」は、名前解決の結果が含まれるNetBIOSネーム・キャッシュを表示させるコマンドである。最初に「nbtstat -R」でキャッシュをクリアしているので、キャッシュには最新のNetBIOS名前解決の結果だけが含まれているはずである。
実際にこのコマンドを実行すると、次のようになる。
C:\>nbtstat -R …キャッシュのクリア |
ここでは、「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 |
この例では、「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の管理ツールを使ってデータベースの内容を表示させ、調査する。![]()
| 「Windows TIPS」 |
TechTargetジャパン
- クライアントでも利用可能になるHyper-V 3.0とは? (2012/2/9)
Windows 8では、従来のWindows Virtual PCに代わって新しくHyper-V 3.0がクライアント向けにも導入される。その概要を解説 - 第303話 ペアプロ2 (2012/2/7)
あっ、またまたいつぞやの幽霊が! …っと思ったら、何だ倉井さんかぁ…。はぁー、驚いた… - Excelで郵便番号変換ウィザードを活用する (2012/2/3)
Excelで管理している顧客名簿などで、不足している郵便番号や住所を入力するのは意外と面倒。郵便番号変換ウィザードを使えば、これらの入力が簡単になる - PCをシンクライアント化するWindows Thin PCとは? (2012/2/2)
VDI向けにシンクライアントがほしいけど専用機を買う余裕はない… Windows Thin PCなら既存PCを低コストでシンクライアント化できる。まずは概要を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -

