検索
連載

【Windows 11対応】Windowsでホスト名からIPアドレスを見つける方法Tech TIPS

コンピュータ名からIPアドレスを求めることを名前解決という。Windowsネットワークでは、大別するとNetBIOS系とTCP/IP系の2種類の名前解決がある。NetBIOSによる名前解決の結果を調べるには、NetBIOSの名前キャッシュを使う。TCP/IPの場合はpingコマンドが便利だ。

Share
Tweet
LINE
Hatena
「Tech TIPS」のインデックス

連載目次

Windowsでホスト名からIPアドレスを見つける

対象OS:対象OS: Windows 8.1/Windows 10/Windows 11、Windows Server 2012/Windows Server 2012 R2/Windows Server 2016/Windows Server 2019/Windows Server 2022


 名前を指定してあるサーバに接続させてみたが、どうも間違ったコンピュータに接続しているようだ、といった場合がある。ネットワークの構成を変更したり、接続するネットワークを変更したりした場合に、こうしたトラブルが発生しやすい。このような場合は、あるコンピュータ名が実際にどのIPアドレスに名前解決されているかを調べ、それが正しいかどうかを検証するとよい。

 そこで、本Tech TIPSでは、あるコンピュータ名やホスト名からそのIPアドレスを見つける方法を紹介する

 逆に、与えられたIPアドレスから、そのコンピュータ名を見つける方法は、TIPS「WindowsでIPアドレスからホスト名(コンピュータ名)を見つける方法」を参照してほしい。

コンピュータ名と名前解決

 Windowsネットワークでは、TCP/IPNBT(NetBIOS over TCP/IP)といったプロトコルが使われている。これらのプロトコルでは、名前(ホスト名やコンピュータ名、マシン名、FQDNなど)とIPアドレスが重要な意味を持っている。

 TCP/IPは基本的にはIPアドレスさえあれば動作するプロトコルである。しかし、IPアドレスは人間にとっては覚えにくく扱いにくいものであるため、通常はホスト名やホスト名にドメイン名を加えたFQDN(例:atmarkit.itmedia.co.jp)が利用される。

 一方NetBIOSは、基本的にはNetBIOS名という文字列をベースにして動作するサービスである。

 だが現在のネットワークは、(基本的には)TCP/IPベースで構築されているので、最終的にはIPアドレスを使って相手のコンピュータと通信していることになる。そのため、コンピュータ名やFQDN名、NetBIOS名などをIPアドレスに対応付けなければならない。

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

 キャッシュはパフォーマンスの改善には役立つ一方で、場合によっては古いキャッシュデータを返してしまうという可能性もある。例えばコンピュータの名前(コンピュータ名やドメイン名)を変えたり、IPアドレスを変えたりした場合、変更前の情報がいずれかのキャッシュに残っていると、間違った相手に対して通信しようとする可能性がある。

 ネットワークの構成を変更したり、接続するネットワークを変更したりした場合に、相手に接続できない、もしくは間違った相手に接続している、といったトラブルが生じたら、あるコンピュータ名が実際にどのIPアドレスに名前解決されているかを調べ、それが正しいかどうかを検証する必要がある。

Windowsネットワークにおける名前解決の方法は?

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

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

 もう1つのTCP/IPにおける名前解決とは、UNIXやLinuxを中心とする、TCP/IPネットワークの世界で培われてきた名前解決の手段である。具体的には、「ping」「ssh」「sftp」「Webブラウザ」「SNSアプリ」などで利用されている。プロトコルとしては、従来のhostsファイルDNSなどに加えて、近年ではLLMNR(Link-Local Multicast Name Resolution)やmDNS(multicast DNS)が、実際の名前解決の手段として利用されている。

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

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

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

 NetBIOSにおける名前解決の結果を確認するためには、TIPS「WindowsでIPアドレスからホスト名(コンピュータ名)を見つける方法」と同様に「nbtstat -a」コマンドを使う方法が簡単だ。これはNetBIOS(NBT)プロトコルを使って指定されたコンピュータに接続する機能を持ったコマンドである。

 これを実行すると、指定された名前に対してNetBIOS APIを使って名前解決が行われるとともに、その名前解決の結果が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名前解決の結果だけが含まれているはずである。

 実際にこのコマンドを実行すると、次のようになる(キャッシュのクリアには、管理者権限のあるコマンドプロンプト上での実行が必要)。

NetBIOS名前キャッシュの確認
NetBIOS名前キャッシュの確認
NetBIOS(NBT)で利用される名前は、NetBIOS名前キャッシュに一定期間保存される。このキャッシュの内容を見ると、指定したNetBIOS名がどのIPアドレスに解決されたかが分かる。これが目的のIPアドレスと異なる場合は、NBT系の設定を確認する必要がある。

 ここでは、「WINPC001」というコンピュータ名を指定してNetBIOS名前解決をさせている。最後のキャッシュの表示結果を見ると、この名前に対するIPアドレスは「ホストアドレス」のフィールドより、「172.23.144.101」であることが分かる。これが求めるNetBIOS名前解決の結果である。

 また「継続時間[秒]」(キャッシュの寿命)の値が「599(秒)」(=約10分)となっている。これは、一度解決された結果はデフォルトでは約10分間有効であるためだ。しばらく時間をおいて再度「nbtstat -c」を実行すると、1秒ずつカウントダウンしていることが分かるだろう。この値が「0」になるとキャッシュから削除され、以後は必要に応じてまたNetBIOS名前解決が実行される。

 表示された結果のうち、「EXAMPLE」と「EXAMPLE-DC」については継続時間の値が「-1」となっている。これらはlmhostsという静的なファイル中で事前定義されたエントリであり(lmhostsファイル中で「#PRE」「#DOM」を使って指定している)、無限の寿命を持っていることを表している。lmhostsファイルを使用していない場合、このようなエントリは表示されないので、結果を調査する場合は注意すること(逆に言うと、これらのファイルに設定しておくと、強制的に接続先を変更できるということでもある)。

 NetBIOSにおける名前解決の手段には、NetBIOSブロードキャストを使った直接問い合わせの他、WINSサーバへの問い合わせや、lmhostsファイルの参照など、さまざまな方法が存在する(次の図参照)。だが、上記のようにNetBIOSの名前キャッシュの内容を調査すれば、その結果を簡単に知ることができる。詳しくはWindowsネットワーク連載の第19回「NetBIOS over TCP/IPプロトコル(その2)」を参照していただきたい。

NBT(NetBIOS over TCP/IP)における名前解決の仕組みと優先度
NBT(NetBIOS over TCP/IP)における名前解決の仕組みと優先度
現在のNetBIOSはTCP/IPと密接に結び付いているので、いろいろな名前解決手段が複合的に利用されている。これはNBTにおける名前解決の手段とその優先度を表す図であり、目的のIPアドレスが見つかるまで上から順に実行する。一般的なWindows PCは「h(ハイブリッド)ノード」タイプなので、まずWINSサーバに問い合わせ、その後NetBIOSのブロードキャストを使って名前解決を試みる。

TCP/IPにおける名前解決

Copyright© Digital Advantage Corp. All Rights Reserved.

ページトップに戻る