こんにちは
家でパソコンを使っている分には、問題ないのですが、

仕事で、ユーザーにWindowsパソコンを導入したり、トラブルでお伺いした時に、時々、サーバーに「つながらない」「アクセス出来ない」などの、トラブルに出くわす時があります

その時、だいたいの原因は、「ケーブルが抜けている」「無線がつながってない」「設定が間違っている」というものですが、たまに「IPアドレスだとアクセスできるのだけど・・」という、現象があります

これは、「名前解決」の問題である可能性が高い

Windowsドメイン環境の場合は、ドメインコントローラーがDNSサーバーになり、名前解決は概ね、DNSで解決する事になるのですが、WorkGroup環境の場合や、混在の場合は、名前解決のプロセスが結構ややこしいです

今回は、パソコン(Windows 10)が名前解決する順番を調べてみました

Windows 10の名前解決の順番

調べた限り、以下の順番になります

【1番目】 DNSのリゾルバキャッシュ
 ー>これは、普段インターネットを見たり、サーバーにアクセスしたり、する際、DNSに名前解決要求を行い、その応答(名前とIPの紐づけ情報)もらいますが、その情報はPCにしばらく保存(キャッシュ※)されます。※デフォルトで最大1日

キャッシュされている情報は、以下コマンドで確認可能
>ipconfig /displaydns
namae1

キャッシュされている情報をクリアするには、以下コマンドを実行
>ipconfig /flushdns
name2


【2番目】 Hostsファイル
 ー>これは、故意的に、名前とIPの紐づけをPCに登録するために使用します
例えば、社内のサーバーの名前をHostsファイルに登録し、DNSやその他の仕組みで、名前解決出来なくても問題なく出来ます。ファイルの場所は、以下です

"%SystemRoot%\system32\drivers\etc" 


【3番目】 DNSサーバー
 ー>NICに設定してある、DNSサーバーに問い合わせを行います
問い合わせをコマンドで確認する場合は、以下コマンドを実行します
>nslookup
name3


【4番目】NETBIOS
 ー>これが結構厄介です。Windows特有の仕組みで、Windowsコンピューター名は、DNSで使用される「ホスト名」とは別に、「NETBIOS名」があります。この「NETBIOS名」は、同じセグメントであれば、ブロードキャストで、勝手に名前解決をしてくれます。便利ですが、名前解決がややこしくなる原因でもあります

まず、キャッシュを確認します。以下コマンドで確認可能
>nbtstat -c
name4


キャッシュをクリアするには、以下コマンドを実施します
>nbtstat -R

次に、「ブロードキャスト」や「WINS」、「LMHOSTSファイル」を確認します
「LMHOSTS」ファイルの場所は以下です

"SystemRoot%\system32\drivers\etc"


こんな感じの順番で名前解決を行います

この順番を変えるには、レジストで変更が可能です
レジストリの場所は、以下になります
\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\ServiceProvider
namae5


ご参考になれば・・