はじめに
これまで、自宅の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
ファイルを利用して変換を行う仕組みです。
引用画像: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
ファイルに登録します。
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
ファイルを編集するには、管理者権限が必要です。
直接編集が難しい場合は、一度デスクトップにファイルを移動して編集し、完了後に元の場所へ戻す方法を使うことができます。
ファイルの編集に慣れていない場合は、事前にバックアップを取得してください。
以下の内容をhosts
ファイルに追記し、Yahooサイトを特定のIPアドレス(例:182.22.31.124
)にマッピングします
182.22.31.124 www.yahoo.co.jp
ブラウザからアクセスして確認してみた
編集後、ブラウザでの動作確認を行います。確認の前に、以下の手順でDNSの設定を一時的に無効化します。
ファイル名を指定して実行
ダイアログで「ncpa.cpl
」と入力すると、ネットワーク接続の設定画面が開きます。
適当な存在しないDNSサーバーのIPアドレスを入力し、意図的に名前解決を失敗させます。
DNS設定を誤るとインターネット接続ができなくなる場合があります。設定を変更する際は十分に理解し、ご自身の責任で作業してください。
設定変更後、適当なサイトにアクセスした際に名前解決ができず、インターネット接続が失敗することを確認します。
ブラウザで「www.yahoo.co.jp
」にアクセスし、編集したhostsファイルの内容(IPアドレス)を基に名前解決が成功していることが確認できました!
これで検証は大成功です!!
まとめ
今回の検証で、hostsファイルを利用することで意図的に名前解決の結果を変更できることを確認しました。
hostsファイルは静的であるため、特定の目的(例:ローカル開発環境の構築や特定IPへのアクセス制御)に非常に便利です。
一方で、ロードバランサーや動的に変化するIPアドレスには対応できないため、そのような場合はDNSサーバーの利用が推奨されます。
おまけ
少し趣味の話になりますが、私はVaundyが大好きです!特に「踊り子」や「napori」といった曲は、作業中のBGMとして最高です。
ただし、Vaundyのライブの抽選倍率がとても高く、なかなか当選できないのが悩みです。
ふと思いついたのですが、指定時間の先行予約サイトに少しでも早くアクセスするために、事前にhostsファイルで名前解決を設定すると、他の人よりも若干早く予約できるのではないかと考えました。
もちろん、ロードバランサーのIPが可変の場合には効果が薄れるかもしれませんが、次回のライブでは試してみたいと思っています(笑)。
関連記事