DNS(ドメイン・ネーム・システム)の浸透について

DNS(ドメイン・ネーム・システム)の浸透について

インターネットの根幹技術とも言えるDNS(ドメイン・ネーム・システム)について説明します。

// 概要
1, ホームページをみるためのアドレス(messiahworks.comなど)は、ドメイン(領地・領土)名と呼ばれています。
2, しかし、実際にコンピュータ同時が通信を行う時にはIPアドレス(123.123.123.123)という電話番号のようなものを使います。
3, そのためドメイン名⇔IPアドレスを変換できる機能(名前解決)が必要です。それがDNSの機能(電話帳みたいなもの)

// DNSの台数
4, DNSサーバは世界に一つだけしかない訳ではなく、大量にあります(一台だと世界中からアクセスが集中するし、ダウンしたら全く変換が出来なくなる)
5, またDNSサーバ同士にも親子関係があり、自分で変換できない場合は、上位のDNSサーバに教えてもらう(「ドメイン・ツリー」と「分散環境」)
6, 一番上位がルートサーバと呼ばれる13ヶ所(ほとんどアメリカ、日本にも一箇所ある。実サーバ自体は色々な場所にある)
https://ja.wikipedia.org/wiki/%E3%83%AB%E3%83%BC%E3%83%88%E3%82%B5%E3%83%BC%E3%83%90

7, トップレベルドメイン(.comとか.jp)は、ルートサーバで管理されています。
なので、勝手に独自トップレベルドメインは使えません。

例)http://abc.oreore →oreoreをドメイン・ツリーを遡って、ルートサーバでも未登録なら世の中には存在しない。
閉じたLAN内だけでDNS設定すれば、その中だけでは使える。

また、去年2014年にルートサーバにトップレベルドメインが大幅追加(.tokyo .moeなど)されて話題になりました。

// 本題
8, 新しいドメインやIPアドレスが、新規追加・更新された場合は、どうなるのか?

新規追加は基本的にすぐ反映されるが、更新の場合は時間がかる(これが悪名高き「DNSの浸透」)
これは名前解決の度に、DNSサーバに問合せに行っている訳ではなく各DNSサーバがキャッシュを使っているから(通常のDNSサーバはキャッシュサーバという)
どの位で更新するかは、大元となるDNS(ドメイン情報を管理しているDNS、権威サーバという)のTTL(Time To Live)設定による。

※自分でDNSのAレコードを設定出来れば300秒など短く出来る。レンタルサーバなどでは、普通は自分で設定できない。
だいたい86400秒(24時間)が多い。その場合は平均12時間後、遅くても24時間後には更新される。ただしDNSの孫引き・ひ孫引きがあるので、もっとかかる場合もある。

// 結論
DSNの浸透を短くするには、事前にドメイン情報を持っている権威サーバのTTLを短くする。
こうすれば、すぐにドメイン⇔IPアドレスの情報が世界中に更新される。
※とはいえ、1秒とかにすると権威DNSサーバ負荷がスゴいことになるので、300秒ぐらいに手加減する

これらの仕組みを悪用したのが、DNSポイズニング!
https://www.nic.ad.jp/ja/newsletter/No40/0800.html
DNSの問合せは、速度や帯域を考えてUDPで行われているのですが、問合せIDが65536通り(2byte)しかないため、当てずっぽうでも当たる確率がある。
本来の権威サーバより速く、正しい問合せIDの返答があった場合は、不正なIPとドメインを結びつけるDNSサーバの出来上がり…。