今回より DNS について解説していきます.
DNS はインターネットにおいて一番重要なシステム/サービスで,これがない状態は考えられないほど重要なインフラとなっています.
DNS の動き,仕組みを理解することでインターネットに留まらず Active Directory ドメインサービスなどのイントラネットにも役に立ちますので是非理解しましょう.
本記事では,基本となる DNS の概要について解説します.
- DNS に関するお話
- DNS (Domain Name System) 概要 (1)
- DNS (Domain Name System) 概要 (2)
- DNS (Domain Name System) 概要 (3)
- DNS (Domain Name System) – nslookup を使いこなそう
- DNS (Domain Name System) – Windows DNS サーバーの設定・オプション
- DNS (Domain Name System) – DNS ゾーンの作成
- DNS (Domain Name System) – DNS ゾーンの設定とレコードの登録
- DNS (Domain Name System) – サブドメインと委任
- DNS (Domain Name System) – フォワーダーの構成
- DNS (Domain Name System) – DNS の動的更新
DNS (Domain Name System) の概要
まずはじめに,DNS を用いたアドレス解決について解説します.
正引きのアドレス解決
「正引きのアドレス解決」とは,名前から IP アドレスを導き出す DNS 問合せのことを指します.
www.seichan.org という Web サーバーにアクセスしたいと考えていますが,IP アドレスは不明です.従って DNS サーバーに IP アドレスを確認し,答えを貰って www.seichan.org の Web サーバーにアクセスすることが可能となります.
例えば,「www.seichan.org」というウェブサーバーにアクセスしたいと考えていますが,そのウェブサーバーのIPアドレスは不明です.IP アドレスを得るために DNS サーバーに問い合わせてIPアドレスを確認しmその答えを得ることで「www.seichan.org」のウェブサーバーにアクセスすることが可能となります.
その際の動作は下図のとおりとなります.

逆引きのアドレス解決
利用者の視点ではあまり使われることはありませんが,サーバーやシステム管理者の視点では重要な概念です.
正引きの逆で,IP アドレスから名前を導き出す DNS 問合せを「逆引き問合せ」といいます.
例えば,Web サーバーなどがアクセスしてきたクライアントの IP アドレスではなく FQDN(Fully Qualified Domain Name)でアクセスログに保存するために逆引きを行います.
ただし,実際には逆引きは動作を遅くする可能性があるため,ログ保存時には IP アドレスで記録し,アクセス解析時にまとめて逆引き解決することが多いです.

DNS 問合せの動き
DNS ドメインはツリー構造をしており,分散管理されています.DNS サーバーはドメインの数だけ存在すると言っても過言ではありません.
下図の頂点(ルート)を起点として「.com」を管理する DNS サーバー,さらに「.jp」を管理する DNS サーバー,そして「.co.jp」を管理する DNS サーバーなどが存在します.
最終的には実際のドメイン名を管理する DNS サーバーが存在します.
このようなツリー構造によって,インターネット上のドメイン名が正確に解決され,私たちがウェブサイトにアクセスできるようになります.

ここで一例を説明します.
「www.seichan.org」というホストの IP アドレスを調べたいと思ったとき,参照するDNSサーバーは「seichan.org」どころか「.org」の情報さえ持っていません.
しかし,DNS ルートサーバーの情報は持っているため,まずはルートサーバーに問い合わせを行います.ルートサーバーは「seichan.org」は知らないけれど「.org」は知っているため「.org」の DNS サーバーの IP アドレス情報を返します.
続いて .org を管理するサーバーに問合せを行います.seichan.org を管理している DNS は 「153.127.49.215」が管理しているという応答が返ってきます.
次に「.orgを」管理するサーバーに問い合わせを行います.「seichan.org」を管理している DNS は「153.127.49.215」が管理しているという応答が返ってきます.
さらに「153.127.49.215」に「www.seichan.org」の IP アドレスを問い合わせると,このサーバーが「seichan.org」を管理しているため,本来欲しかったIPアドレス情報である「160.16.234.242」が返ってきます.

このように,分散管理が行われており,どこに存在するか不明な DNS サーバー情報はルートを起点に順次解決していき,最終的に目的地にたどり着けるという仕組みになっています.
DNS の役割・名前とキャッシュサーバーの動き
先ほどの絵で,都度あちこちに問合せを行っている DNS サーバー (参照サーバー) がいました.
これらを正しい名前で説明したいと思います.
名前解決の問い合わせを出す側を「スタブリゾルバー」と呼びます.下図でいう所のパソコンが該当します.
DNS クライアントからの名前解決要求を受けて,他の権威サーバーに対して再帰問い合わせを行うサーバーを「フルサービスリゾルバー」と呼びます。.下図では「参照 DNS サーバー」として表されているサーバーが該当します.
名前解決したレコード情報はフルサービスリゾルバーでキャッシュされますので,一般的には「キャッシュ DNS サーバー」と呼ばれることが多いです.
DNS ドメインを管理しているサーバーを「権威 DNS サーバー」と呼びます.下図では一番右側のサーバーが該当します.
ここでは,例えば「seichan.org」のゾーンを管理しているサーバーが存在しています.別の場所では,例えば Yahoo Japan 社が「yahoo.co.jp」を管理している権威サーバーが存在するなど,権威 DNS サーバーは無数に存在しています.
フルサービスリゾルバー (キャッシュサーバー) は最初はルート DNS サーバーの情報しか持っていません.名前解決要求を経て得た情報をキャッシュし,2回目以降の問い合わせに関してはキャッシュ情報を応答する形でトラフィックの削減とレスポンスの向上を見込むことができます.

やってはいけない「オレオレ gTLD」
gTLD (Generic Top Level Domain:分野別トップレベルドメイン) は数多く存在しますが,未存在の gTLD も当然存在します.
ですので,現状は使われていないからと言って自サイト内でオレオレ gTLD を使う方が存在します.
ですが,やがて本当に利用される gTLD になるケースがあります.
以下はとある書籍で .corp で表現されていたがために発生した事例です..corp は現在正式な gTLD として運用されています.このようなことが無いように,内部のみで利用したい場合は 「.example」や「.test」など IANA が明示的に予約している gTLD を利用すべきです.

「IANA-managed Reserved Domains」に予約ドメインについての RFC である RFC 2606 および RFC 6761 のリンクも存在しています.
「example.com」や「example.net」,「example.org」も RFC で予約されています.
また,RFC にはありませんが JPRS も例示用のドメイン名として「例示に使用可能なドメイン名はありませんか?」にて「example.jp」や「example[0-9].jp」および「example.co.jp」や「example[0-9].co.jp」,「example.ne.jp」や「example[0-9].ne.jp」は予約ドメインとしている旨を明記しています.
よく利用されている .local は実は予約されていないドメインで,マルチキャスト DNS の対象になるなどトラブルに発展する場合があります.従って,「.local」を使うのではなく上述の利用可能な gTLD やドメイン名を用いた構成が安全です.
もしくはドメインを正しく取得して運用しましょう.
今回の説明は以上となります.続いて問合せにあたっての通信の動き UDP や TCP,EDNS0 について解説していきます.
コメント