仕事で、ユーザーにWindowsパソコンを導入したり、トラブルでお伺いした時に、時々、サーバーに「つながらない」「アクセス出来ない」などの、トラブルに遭遇する場合があります。
その時原因としては、以下のようなものがあります。
【物理的な原因】
- 電源が入っていない
- ケーブルが抜けている
- ハードウェア障害
- ソフトウェア障害
【人為的な原因】
- 設定が間違っている
- 操作が間違っている
上記以外に、たまに「IPアドレスだとアクセスできるのだけど・・」という、事象にあたる場合があります。
これは、「名前解決」に問題である可能性が高い!
Active Directory環境の場合は、ドメインコントローラーがDNSサーバーになり、名前解決は概ね、DNSサーバーで解決する事になるのですが、WorkGroup環境の場合や、混在環境の場合は、名前解決のプロセスが結構ややこしいです。
今回は、Windows PC(Windows 10)が名前解決する順番を調べてみました。
Windows 10 名前解決の順番
以下、名前解決の順番で詳細記載します。
【1番目】DNSのリゾルバキャッシュ
日頃、PCでインターネットを見たり、サーバーにアクセスしたりする際、DNSに名前解決要求を行います。
その応答情報(名前とIPの紐づけ情報)もらいますが、その情報はPCにしばらく保存(キャッシュ※)されます。
※デフォルトで最大1日
キャッシュされている情報は、以下コマンドで確認可能
ipconfig /displaydns
キャッシュされている情報をクリアするには、以下コマンドを実行
ipconfig /flushdns
【2番目】 Hostsファイル
これは、強制的に名前(ホスト名)とIPの紐づけをPCに登録するために使用します。
例えば、社内のサーバーの名前をHostsファイルに登録し、DNSやその他の仕組みで、名前解決出来なくても問題なく名前解決が出来ます。
ファイルの場所は、以下です
"%SystemRoot%\system32\drivers\etc\hosts"
メモ帳で開き、サンプルを参考に、以下、赤線行のように記載します。
【3番目】 DNSサーバー
次に、PCのネットワークアダプターに設定してある、DNSサーバーに問い合わせを行います。
問い合わせをコマンドで確認する場合は、以下コマンドを実行します
nslookup
【4番目】NETBIOS
最後、これが結構厄介です。
「NETBIOS」とは、Windows特有の名前の仕組みです。
Windowsコンピューター名は、DNSで使用される「ホスト名」とは別に、「NETBIOS名」があります。
この「NETBIOS名」は、同じセグメントであれば、ブロードキャストで、勝手に名前解決をしてくれます。
便利ですが、名前解決がややこしくしている原因でもあります。
まず、キャッシュを確認します。以下コマンドで確認可能
>nbtstat -c
キャッシュをクリアするには、以下コマンドを実施します
>nbtstat -R
次に、「ブロードキャスト」や「WINS」、「LMHOSTSファイル」を確認します。
「LMHOSTS」ファイルの場所は以下です。
メモ帳で開き、サンプルを参考に、以下、赤線行のように記載します。
以上のような流れで、Windowsは名前解決を行います。
この順番を変えるには、レジストで変更が可能です。
レジストリの場所は、以下になります
\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\ServiceProvider
若い番号から、名前解決が行われますので、レジストリ値を変える事で、名前解決の順番を変更する事ができます。
以上になります
コメント