DNS 名前解決とは?

どうも、Miyaです。

私は高校、大学ともに情報学部で教育を受けてきましたが、DNSを理解できたのは社会人になってからです( ̄∇ ̄)笑
テキストから勉強することも大切だと思うのですが、実際のものに触れて動作を目で確認することが何よりも大切だと思います。

本記事では、DNSによる名前解決の動きを解説するとともに、実際に動作を確認しながら進めていきたいと思います。
簡単な操作ですので、よければ手を動かしながら読んでいただけばと思いますm(_ _)m

スポンサーリンク:

インターネットへの名前解決

まずは、身近なところから説明したいと思います。
今の時代、スマホの普及率がぐんと上がり、常日頃からインターネットを利用している思います。
インターネットを利用するときに、ブラウザのアドレスバーにはサイトのURLを入力しますよね。
DNS名前解決

上の例で言えば、microsoft.comというホスト名を持つサーバの/ja-jpというディレクトリを参照しています。
イメージはこんな感じです。
DNS名前解決

まずは、ブラウザからURLを入力してページが表示されるまでの間、コンピュータは何をしているのか?というところ理解しておいて下さい。

ページにアクセスする時はIPアドレスを使う

ブラウザにURLを入力して、ページにアクセスするために、microsoft.comに対するIPアドレスをDNSから受け取り、そのIPアドレスからページにアクセスしています。
ここでは、IPアドレスについて深く言及しないですが、コンピュータの世界は2進数です。
つまり、コンピュータの住所を表すのはmicrosoft.comといった文字列ではなく、192.168.10.10などといったIPアドレスです。

試しに、コマンドプロンプトから下記コマンドを実行してみると、microsoft.comに対するIPアドレスが返ってきます。

DNS名前解決

いくつか、IPアドレスがありますが、そのうちのどれでも良いのでブラウザのアドレスバーに打ち込んでみましょう。
DNS名前解決

証明書エラーが表示されますが、そのまま進めると、www.mirosoft.comへとリダイレクトし、ページが表示されると思います。

インターネットへの名前解決フロー

名前解決のフローをもう少し詳しくみていきましょう。
これまでを例に挙げると、名前解決は以下のような手順で行われます。
DNS名前解決

  1. 自宅のルータ兼DNSであるBuffaloに問い合わせ
  2. Baffaloはmicrosoft.comを知らないので、ルートDNSサーバで.comDNSサーバの場所を照会
  3. Baffaloは.comDNSサーバでmicrosoft.comDNSサーバの場所を照会
  4. Baffaloはmicrosoft.comDNSサーバでwww.microsoft.comのIPアドレスを照会
  5. Baffaloにwww.microsoft.comのIPアドレスを返却

ただ、ページにアクセスするだけなのに、面倒臭くね!?( ̄▽ ̄;)
そこで、クライアント側では、いちいち場所を聞いていては効率が悪いので、ローカルに情報をキャッシュします。これをリゾルバキャッシュと呼んでいます。
下記コマンドで、その内容が見れるので是非お試しください。

ipconfig /displaydns

例えば、同じサイトにアクセスする際に、最初の1回目は少し時間がかかるけど、2回目以降は早かったりしますよね?
逆に、サイトに繋がらない!って時は、このキャッシュを/flushdnsオプションでクリアすると解決したりします。

クライアントが名前解決する順番

次に、クライアント側の名前解決する順番についてご紹介したいと思います。
また、本セクションではWindows端末の名前解決の順番であるため、OSによって多少異なる点があるのでご注意を。

クライアントの名前解決には、以下の順序によって行われます。

  1. リゾルバキャッシュ
  2. hostsファイル
  3. DNSサーバ
  4. WINSサーバ(NetBIOS)
  5. Lmhosts

リゾルバキャッシュとDNSサーバに関しては、ご理解頂けると思うのですが、New単語が出てきましたね…。

hostsファイルとは?

hostsファイルとは、OSのファイルシステムの一つで、ホスト名とIPアドレスの対応関係を記述したテキストファイルのことを指します。
Windowsであれば、[C:¥Windows¥System32¥Drivers¥etc¥hosts]にモノがあるので開いてみましょう。
hosts

では、試しにwww.yahoo.co.jpのIPアドレスを実在しないIPアドレスにしちゃいましょう。
書き方ですが、IPアドレス[Tab]ホスト名になります。
hosts

書き換えたら、www.yahoo.co.jp宛にpingしてみましょう。
※念のため、リゾルバキャッシュをクリアしておきましょう。
DNS名前解決

www.yahoo.co.jpへの通信が1.1.1.1へ行われているのが確認できますね。
もちろん、1.1.1.1のコンピュータがいないので、タイムアウトエラーが返っていますね。
ちなみに、hostsを書かなかった場合は、しっかりpingは通ります。
ping

NetBIOS、Lmhostsとは?

WINS(Windows Internet Name Service)サーバとは、今ではあまり使われていない名前解決サーバの一種です。
WINSサーバでは、DNSとは異なり、NetBIOSと呼ばれる名前に対するIPアドレスの対応関係を管理します。
NetBIOSとは、単一のコンピュータ名のことを指します。
例えば、contoso.comというドメインにホスト名がADDCというコンピュータが存在したとします。
この場合、DNSではADDC.contoso.comというFQDNという完全修飾ドメイン名に対応したIPアドレスを管理しますが、WINSサーバでは、NetBIOS名であるADDCに対応したIPアドレスを管理するということです。
Lmhostsは、hostsのNetBIOS名を使ったver程度の認識で大丈夫です( ̄∇ ̄)笑

いかがでしたか?
普段、何気なくネットサーフィンしている裏側で結構壮大な処理がなされているんですねぇ
今回は、名前解決のフローをご紹介しましたが、次回はDNSサーバについて詳しくご紹介します。
それでは、良いWindows Serverライフをっ♪

スポンサーリンク