4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

技術検証:Windows PCにおけるhostsファイルを利用した名前解決と、DNSとの関係性について

Last updated at Posted at 2024-12-21

はじめに

これまで、自宅のDNSサーバーやRoute53を活用した名前解決の技術検証を行ってきましたが、hostsファイルを使用した名前解決については深く検証していませんでした。

そこで今回は、hostsファイルを利用した名前解決がどのように機能するのかを検証します。

検証対象はYahooのサイトとし、hostsファイルにエントリを追記することで名前解決が可能かどうかを確認します。

hostsファイルとは?

hostsファイルは、OSがネットワーク上のホスト名をIPアドレスに変換する際、最初に参照するローカルの設定ファイルです。

詳細については、以下の記事を読んでみてください!

Windowsでは通常、以下のパスに配置されています。

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

このファイルにホスト名とIPアドレスのペアを記述することで、DNSサーバーを経由せずに名前解決を行うことが可能です。

名前解決とは?

名前解決とは、インターネットやネットワーク上でホスト名(例: www.yahoo.co.jp)を対応するIPアドレスに変換するプロセスです。

hostsファイルを使用した名前解決は、DNSサーバーの代わりにhostsファイルを利用して変換を行う仕組みです。

image.png
引用画像:https://www.engilaboo.com/hosts-file/

このプロセスが正常に動作することで、Webサイトの閲覧やネットワークサービスの利用が可能となります。

DNSを利用した名前解決については、以下の記事を参考にしてみてください!

つまり、hostsファイルはローカル環境で静的な名前解決を提供します。一方、DNSサーバーはネットワーク全体で動的かつ分散型の名前解決を担います。

優先順位はどちらが高いのか?

一般的なOSでは、名前解決の際、hostsファイルがDNSよりも優先されます。

そのため、hostsファイルにエントリを追加することで、意図的に名前解決の結果を制御することが可能です。

事前確認:YahooサイトのIPアドレス確認

以下のnslookupコマンドを実行して、YahooサイトのIPアドレスを確認します。

nslookup yahoo.co.jp

YahooのWebサーバーは非常に多くのIPアドレスを持っています。今回は、最初に表示された「182.22.31.124」を採用し、後述のhostsファイルに登録します。

コマンド実行結果.txt
C:\Users\user>nslookup yahoo.co.jp
サーバー:  UnKnown
Address:  192.168.1.1

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

実際にhostsファイルを編集してみた

以下の手順でhostsファイルを編集し、Yahooサイトのホスト名を指定したIPアドレスに解決させます。

Windowsでは、hostsファイルは以下のパスに配置されています。

C:\Windows\System32\drivers\etc

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

直接編集が難しい場合は、一度デスクトップにファイルを移動して編集し、完了後に元の場所へ戻す方法を使うことができます。

image.png

ファイルの編集に慣れていない場合は、事前にバックアップを取得してください。

image.png

以下の内容をhostsファイルに追記し、Yahooサイトを特定のIPアドレス(例:182.22.31.124)にマッピングします

182.22.31.124 www.yahoo.co.jp

ブラウザからアクセスして確認してみた

編集後、ブラウザでの動作確認を行います。確認の前に、以下の手順でDNSの設定を一時的に無効化します。

ファイル名を指定して実行ダイアログで「ncpa.cpl」と入力すると、ネットワーク接続の設定画面が開きます。

image.png

適当な存在しないDNSサーバーのIPアドレスを入力し、意図的に名前解決を失敗させます。

image.png

DNS設定を誤るとインターネット接続ができなくなる場合があります。設定を変更する際は十分に理解し、ご自身の責任で作業してください。

設定変更後、適当なサイトにアクセスした際に名前解決ができず、インターネット接続が失敗することを確認します。

image.png

ブラウザで「www.yahoo.co.jp」にアクセスし、編集したhostsファイルの内容(IPアドレス)を基に名前解決が成功していることが確認できました!

image.png

これで検証は大成功です!!

まとめ

今回の検証で、hostsファイルを利用することで意図的に名前解決の結果を変更できることを確認しました。

hostsファイルは静的であるため、特定の目的(例:ローカル開発環境の構築や特定IPへのアクセス制御)に非常に便利です。

一方で、ロードバランサーや動的に変化するIPアドレスには対応できないため、そのような場合はDNSサーバーの利用が推奨されます。

おまけ

少し趣味の話になりますが、私はVaundyが大好きです!特に「踊り子」や「napori」といった曲は、作業中のBGMとして最高です。

ただし、Vaundyのライブの抽選倍率がとても高く、なかなか当選できないのが悩みです。

ふと思いついたのですが、指定時間の先行予約サイトに少しでも早くアクセスするために、事前にhostsファイルで名前解決を設定すると、他の人よりも若干早く予約できるのではないかと考えました。

もちろん、ロードバランサーのIPが可変の場合には効果が薄れるかもしれませんが、次回のライブでは試してみたいと思っています(笑)。

関連記事

4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?