Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

【初心者向け】WindowsにおけるDNSとhostsファイルを使った名前解決

Posted at

はじめに

この記事では、IT初心者の筆者がコンピュータネットワークを理解するために調べた名前解決の基本をまとめています。名前解決を理解する際に役立つ、Windows環境での基本操作も紹介しています。実際に操作してみることで、DNSやhostsファイルについての理解を深めていただければ嬉しいです。

1.名前解決

名前解決とは、ドメイン名をIPアドレスに変換するプロセスのことです。コンピュータネットワークでは、IPアドレスを使用して通信する相手を識別します。しかし、IPアドレスは数字の羅列のため、人間にとっては覚えにくく、直接使用することは困難です。そのため、人間が識別しやすい文字列のドメイン名を使用し、それをIPアドレスに変換するプロセスが必要になります。この変換するプロセスが名前解決であり、通信をするうえで重要な役割を担っています。

名前解決が行われている身近な例としてインターネットサイトへのアクセスがあります。インターネットサイト(例:google)にアクセスする際、ドメイン名(例:google.com)を入力すると、IPアドレス(例:172.217.161.46)に変換され、インターネットサイトへアクセスできるようになります。

名前解決

このようにドメイン名をIPアドレスに変換するプロセスのことを名前解決と呼びます。名前解決を実現する仕組みとしては、DNSやhostsファイルがあります。

2.DNS

DNS(Domain Name System)は名前解決を行うシステムです。WebブラウザでURLを入力するとDNSサーバーがドメイン名をIPアドレスに変換します。その後、そのIPアドレスをもとに、ウェブサーバーへアクセスするための処理が行われます。

ドメイン名はインターネット上で任意のネットワークを特定するための文字列です。ドメイン名は階層構造になっており、ドットで区切られたそれぞれの部分をラベルと呼びます。右からトップレベルドメイン(例:jpやcomなど)、セカンドレベルドメイン(例:coやorなど)といいます。

ドメイン名

DNSも階層構造になっており、複数のDNSサーバーをたどることで名前解決が行われます。最上位にはルートDNSサーバーがあり、トップレベルドメインの情報を持つトップレベルドメインサーバーへ接続します。トップレベルドメインサーバーは、セカンドレベルドメインの情報を持つさらに下位のサーバーへ接続します。このようにDNSでは複数のサーバーで、名前解決を行う仕組みになっています。

DNS

3.nslookupコマンド

nslookupコマンドはDNSサーバーに問い合わせ、名前解決した結果を表示するコマンドです。

コマンドプロンプトを開きます。今回はgoogle.comのIPアドレスを表示させます。

実行例
C:\Users>nslookup google.com

サーバー: \*******\
Address: \*******\

権限のない回答
名前: google.com
Addresses:  2404:6800:4004:80a::200e
          172.217.161.46

google.comのIPアドレスが返ってきました。

nslookupコマンドでは、ドメイン名をIPアドレスに変換する正引きに対して、IPアドレスをドメイン名に変換する逆引きも行えます。先ほどのgoogle.comのIPアドレスで試してみます。

実行例
C:\Users>nslookup 172.217.161.46
サーバー:  \*******\
Address:  \*******\

名前:    nrt12s23-in-f14.1e100.net
Address:  172.217.161.46

google.comが返ってくることを想定していましたが、nrt12s23-in-f14.1e100.netが返ってきました。調べてみると、逆引きをしても同じドメイン名が返ってくるとは限らないことが分かりました。これは、正引きの際にはAレコードを使用しドメイン名をIPアドレスに変換しているのに対し、逆引きではPTRレコードという別のレコードでIPアドレスをドメイン名に変換しているためでした。今回の例では、PTRレコードでより詳細なホスト名が設定されていることが分かりました。

また、名前解決をするDNSサーバーを指定することもできます。今回はgoogleのパブリックDNSサーバー(8.8.8.8)を指定してみます。

実行例
C:\Users>nslookup google.com 8.8.8.8

サーバー:  dns.google
Address:  8.8.8.8

権限のない回答:
名前:    google.com
Addresses:  2404:6800:4004:80a::200e
          172.217.161.46

4.hostsファイル

hostsファイルはDNSより前から使用されていた名前解決の方法です。hostsファイルにはIPアドレスとドメイン名が記載されており、このファイルを参照することにより名前解決が行われます。

hostsファイルはネットワークに接続するコンピューターの台数が少ない時に利用されていましたが、コンピューターの台数が増えるにつれ、hostsファイルだけでの管理は困難になり、分散的に管理するDNSが登場しました。しかし、現在でもhostsファイルは特定のパソコンで動作確認をする時などに使用されており、用途によって使い分けることができます。

Windowsではhostsファイルは以下のパスにあります。

C:\Windows\System32\drivers\etc\hosts

なお、hostsファイルを編集する際には管理者権限が必要です。

5.DNSとhostsファイルの優先順位

名前解決では、一般的にはhostsファイルが優先されます。実際にhostsファイルに情報を加えて優先順位を確認してみます。

hostsファイルに変更を加える前後での動作の違いを確認するため、pingコマンドで、yahoo.co.jpの疎通を確認します。

実行例
C:\Users>ping yahoo.co.jp

yahoo.co.jp [182.22.24.124]に ping を送信しています 32 バイトのデータ:
182.22.24.124 からの応答: バイト数 =32 時間 =10ms TTL=49
182.22.24.124 からの応答: バイト数 =32 時間 =11ms TTL=49
182.22.24.124 からの応答: バイト数 =32 時間 =11ms TTL=49
182.22.24.124 からの応答: バイト数 =32 時間 =10ms TTL=49

182.22.24.124 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 10ms、最大 = 11ms、平均 = 10ms

現在は182.22.24.124のIPアドレスにアクセスしていることが分かります。

続いてhostsファイルを編集します。コマンドプロンプトを管理者権限で実行し、以下のコマンドを入力します。

実行例
C:\Windows\System32>notepad C:\Windows\System32\drivers\etc\hosts

hostsファイルをメモ帳で開くことができました。

スクリーンショット 2025-10-14 112137.png

はじめに取得したgoogle.comのIPアドレスとyahoo.co.jpのドメイン名と紐づけます。IPアドレスとドメイン名の間には半角スペースを入れます。

スクリーンショット 2025-10-14 112750.png

新たに加えた変更を保存し、コマンドプロンプトに移動します。再度pingコマンドを実行し、疎通を確認します。

実行例
C:\Users>ping yahoo.co.jp

yahoo.co.jp [172.217.161.46]に ping を送信しています 32 バイトのデータ:
172.217.161.46 からの応答: バイト数 =32 時間 =13ms TTL=110
172.217.161.46 からの応答: バイト数 =32 時間 =10ms TTL=110
172.217.161.46 からの応答: バイト数 =32 時間 =10ms TTL=110
172.217.161.46 からの応答: バイト数 =32 時間 =15ms TTL=110

172.217.161.46 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 10ms、最大 = 15ms、平均 = 12ms

結果を見てみるとyahoo.co.jpは以前のIPアドレス(182.22.24.124)ではなくgoogle.comのIPアドレス(172.217.161.46)にアクセスしていることが分かります。

以上の例により、DNSよりhostsファイルが優先されていることが分かります。

6.Resolve-DnsNameコマンド

hostsに情報を加えたうえで、改めてnslookupコマンドを実行したところ、pingコマンドの挙動とは異なり、以前と同じIPアドレスが返ってきました。

実行例
C:\Users>nslookup yahoo.co.jp
サーバー:  \*******\
Address:  \*******\

権限のない回答:
名前:    yahoo.co.jp
Addresses:  183.79.249.124
          183.79.249.252
          183.79.250.251
          124.83.184.124
          124.83.184.252
          124.83.185.124
          124.83.185.252
          182.22.16.123
          182.22.16.251
          182.22.24.124
          182.22.24.252
          182.22.25.124
          182.22.25.252
          182.22.28.252
          182.22.31.124
          182.22.31.252
          183.79.219.124
          183.79.219.252

これはnslookupコマンドがDNSの情報のみを参照し、hostsファイルに加えた情報は反映されないためでした。

hostsファイルの情報も反映させ、実際の挙動に近い結果を表示させるコマンドを調べると、powershellで使えるResolve-DnsNameというコマンドがありました。Powershellを開き、コマンドを実行してみると、以下のような結果になりました。

実行例
PS C:\Users> Resolve-DnsName yahoo.co.jp

Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
yahoo.co.jp                                    A      53330 Answer     172.217.161.46
                                                      4

このようにResolve-DnsNameコマンドはhostsファイルも参照するため、実際の名前解決とほぼ同じ挙動をしていることが分かります。

この操作を終えた後はhostsファイルの中身を元の状態に戻してください。

まとめ

名前解決とはDNSやhostsファイルを使用し、ドメイン名をIPアドレスに変換するプロセスだと理解していただけたかと思います。今回はインターネットサイトへのアクセスを例に挙げましたが、名前解決はメールの送受信やクラウドサービスへのアクセスなどで幅広く使用されています。今後、ネットワークのトラブルシューティングやドメイン情報の確認の際には、この記事で紹介した基本的な知識や操作をぜひ活用してみてください。

参考

0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?