treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

DNS以外の名前解決でホスト名からIPを探す

名前解決について改めて確認することがあったので、確認した内容をご報告です。
ほぼ自分用備忘録になります。

ホスト名が分かるならping

基本的に、名前解決はホスト名(コンピュータ名)が分かっていれば、

ping %COMPUTERNAME%

でIPが分かるようになっています。

ちょっとしたTIPSですが、IPv6混在の環境では、IPv6アドレスが優先して表示されるので、IPv4アドレスを調べたいときはオプションを付けて

ping -4 %COMPUTERNAME%

という具合に「-4」というオプションを付けてIPv4を指定してpingを実行することになります。

コマンドpingでの確認は何かしらの形で名前解決ができていれば、自動的にpingコマンド実行時に名前解決を実施してIPを引いてくるので指定したホスト名のIPアドレスにpingが実行される、という動きを見せます。

この他、DNSがあるならnslookupを使うこともできます。DNSにレコード登録がされている環境であれば、nslookupコマンドを使うことでもホスト名対IPアドレスの確認も可能です。ちなみにLinux環境のbindクライアントがインストールされていればdigコマンドも便利です。

PowerShellで確認してみる

PowerShellを使う場合、専用のコマンドレットが用意されています。
そのコマンドレットは「Resolve-DnsName」を利用すると、ホスト名からIPアドレスを確認することが可能です。

まずは、相手側から。


このWindows PCをResolve-DnsNameで探し出してみるようにします。

Resolve-DnsNameの実行結果が以下になります。


Type AAAAに"IPv6アドレス"の値と"リンクローカルIPv6アドレス"の値が表示されています。
加えてType AにはIPv4アドレスが表示されています。

存在しないホスト名(コンピュータ名)を指定した場合には、


このようなエラーになります。
「ERROR_INVALID_NAME=エラー_無効な名前」と記載があるように、そんな名前のホストはありませんよ、という意味です。

名前解決を実現する方法

このようにホスト名からIPアドレスを調べる名前解決は、以下に代表される技術で実現されています。

Hosts/LMHostsファイル(静的)

PC単体で名前解決を実現する方法が、ファイルに記述するという方法です。
<C:\Windows\System32\drivers\etc>に保管されたファイル「hosts」か「lmhosts」を使って名前解決をします。
旧NetBIOSの名前解決が「lmhosts」で、現代のDNSの名前解決が「hosts」ファイルです。

ちょっとした小話ですが、hostsはホスト名=DNSのようにアクセスしたい名前を適宜決める(alias)ことが出来る、のに対して、LMHOSTSではコンピュータ名=Windowsに設定されている実名である必要がある、という点が相違します。LMHOSTSの方がより厳格でaliasは使えない(だったはず)です。

mDNS(動的)

DNSサーバ設置なしで簡易DNSのように使える技術。ファイルで静的にレコード情報を保持するのではなく動的にバックグラウンドで動作してDNSのクエリから応答する機器を収集してくれています。

以前ちょっとやっていました。

mDNS(マルチキャストDNS)に興味 - treedown’s Report

mDNSに対応しない古い時代の機器があるなら別ですが、現在ではこちらが主流だと思います。<ホスト名.local>のFQDNとしても使えます。

ブロードキャスト(動的)

mDNSと似ていますが、mDNS非対応の機器の場合、ブロードキャストで名前解決されている環境もあります。起動時にサブネット(ネットワークアドレス全体)に対してブロードキャストパケットを送信して、応答があったIPアドレスとコンピュータ名をバックグラウンドで収集しています。

意外とどれが使われているか分からない?

ざっくりとした解説になりますが、自身の環境でどの名前解決が使われているかは意外と把握していないケースも多くあります。

この名前解決はどの技術が使われているか、ちょっと立ち止まって調べてみると新しい発見があるかもしれません。

※参考:役に立ちそうなリンク

■Windows 名前解決の順序
https://social.technet.microsoft.com/Forums/ja-JP/6ed4f56d-1700-4bc4-bf43-2b27a664e07f/windows-21517210693529927770123983891824207

■Microsoft TCP/IP のホスト名解決の順序
https://support.microsoft.com/ja-jp/topic/microsoft-tcp-ip-%E3%81%AE%E3%83%9B%E3%82%B9%E3%83%88%E5%90%8D%E8%A7%A3%E6%B1%BA%E3%81%AE%E9%A0%86%E5%BA%8F-dae00cc9-7e9c-c0cc-8360-477b99cb978a