仕事で、ユーザーにWindowsパソコンを導入したり、トラブルでお伺いした時に、時々、サーバーに「つながらない」「アクセス出来ない」などの、トラブルに遭遇する場合があります。
その時原因としては、以下のようなものがあります。

【物理的な原因】
- 電源が入っていない
- ケーブルが抜けている
- ハードウェアの障害
- ソフトウェアの障害
【人為的な原因】
- 設定が間違っている
- 操作が間違っている
サーバーに繋がらない不具合を解決する為には、上記の考えられる原因を、潰していくことで、おおよその解決につながる事ができるのですが、そうもいかないケースがあります。
それは、どんなケースかというと・・
「名前解決」が原因の場合
たまに「IPアドレスだとアクセスできるのだけど・・」という、事象にあたる場合があります。
これは、「名前解決」に問題である可能性が高いケース!

Active Directory環境の場合は、ドメインコントローラーがDNSサーバーになり、名前解決は概ね、DNSサーバーで解決する事になるのですが、WorkGroup環境の場合や、混在環境の場合は、名前解決のプロセスが結構ややこしいです。
そんな、ややこしいWindowsの名前解決!!
原因究明に役立てるように、今回は、Windows PC(Windows 10)が名前解決する順番を調べてみました。
Windows 10 名前解決の順番


以下、Windowsの名前解決の順番に詳細を記載していきたいと思います。
【Windowsの名前解決順】
【1番目】DNSのリゾルバキャッシュ
日頃、PCでインターネットを見たり、サーバーにアクセスしたりする際、DNSサーバーに名前解決要求を行います。
その応答情報(名前とIPの紐づけ情報)をDNSサーバーよりもらいますが、その情報はPCにしばらく保存(キャッシュ※)されます。※デフォルトで最大1日
この「DNSリゾルバキャッシュ」が影響している場合は、キャッシュをクリアする必要があります。



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





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


【2番目】 HOSTSファイル
これは、強制的に名前(ホスト名)とIPの紐づけをPCに登録するために使用します。
例えば、社内のサーバーの名前をHostsファイルに登録し、DNSやその他の仕組みで、名前解決出来なくても問題なく名前解決が出来ます。



ファイルの場所は、以下です
"%SystemRoot%\system32\drivers\etc\hosts"
メモ帳で開き、サンプルを参考に、以下、赤線行のように記載します。


【3番目】 DNSサーバー
次に、PCのネットワークアダプターに設定してある、DNSサーバーに問い合わせを行います。



問い合わせをコマンドで確認する場合は、以下コマンドを実行します
nslookup


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



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





キャッシュをクリアするには、以下コマンドを実施します
>nbtstat -R
次に、「ブロードキャスト」や「WINS」、「LMHOSTSファイル」を確認します。
「LMHOSTS」ファイルの場所は以下です。
メモ帳で開き、サンプルを参考に、以下、赤線行のように記載します。


以上のような流れで、Windowsは名前解決を行います。
この順番を変えるには、レジストで変更が可能です。



レジストリの場所は、以下になります
\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\ServiceProvider


若い番号から、名前解決が行われますので、レジストリ値を変える事で、名前解決の順番を変更する事ができます。
Windowsの名前解決の順番は、以上になります。
Windowsで通信不具合に遭遇したら、まずは、冒頭でご説明した、「物理的な原因」「人為的な原因」を確認いただき、”どうも、名前解決がうまくいっていないな”と思ったら、是非上記、名前解決順番をご確認ください。
ご参考になれば!
コメント