IPネットワークであるインターネットでは、通信相手は基本的にはIPアドレスで指定する。コンピュータ同士の通信であれば、お互いのIPアドレスさえわかれば通信が可能だ。ところが、人間にとってはIPアドレスはただの数字の羅列でしかなく、わかりにくい。

 そこで1983年、IPアドレスを「ドメイン名」という名前で扱えるようにするDNSというシステムが誕生した。

IPアドレスを人間がわかりやすく扱えるようにする
[画像のクリックで拡大表示]

 DNSは、問い合わせたドメイン名に対してIPアドレスを返す電話帳のような役割を持つ。ただ、インターネットにあるドメイン名は膨大な量なので、一つのDNSサーバーで管理するのは困難だ。そこで、実際には階層構造になった多くのDNSサーバーで分散管理している。

 DNSサーバーは実際には大きく2種類に分けられる。ユーザーから直接問い合わせを受け、ユーザーの代わりにIPアドレスなどを調べる「キャッシュDNSサーバー」と、ドメイン名に対応するIPアドレスなどを返答する「権威DNSサーバー」だ。

ドメインをインターネット上で分散管理
[画像のクリックで拡大表示]

 キャッシュDNSサーバーがユーザーから問い合わせを受けた場合、過去にそのIPアドレスを権威DNSサーバーに問い合わせたことがあるかどうかで動作が変わる。問い合わせたことがある場合は、キャッシュに残っている情報をそのままユーザーに返す。

 一方、キャッシュに情報がない場合は、権威DNSサーバーに問い合わせる。キャッシュDNSサーバーが権威DNSサーバーに問い合わせるときには、ルートサーバーから順に反復して問い合わせる。階層構造になった権威DNSサーバーが下位のサーバーに管理を委任することで処理を分散し、DNS全体の負荷を抑える仕組みになっている。

課題が残るセキュリティ

 現在のDNSが抱える最大の課題はセキュリティだ。DNSはキャッシュポイズニングをはじめとした様々な攻撃にさらされている。そこでDNSの安全性を高めるために開発された技術がDNSSECだ。電子署名を利用してデータの信頼性を検証することで、送信元の偽装を見抜く。

普及が進まないDNSSEC
[画像のクリックで拡大表示]

 DNSSECでは、権威DNSサーバーの秘密鍵と公開鍵を用意し、権威DNSサーバー側に秘密鍵、キャッシュDNSサーバー側に公開鍵を配置する。権威DNSサーバーはデータに電子署名を付与して応答し、応答を受け取ったキャッシュDNSサーバーは電子署名を検証して正当なDNSサーバーかどうかを確認する。これにより、偽のDNSサーバーによるなりすましが困難になる。

 ルートサーバーには2010年にDNSSECが導入されている。主要なトップレベルドメインにも導入済みだ。例えばjpの権威DNSサーバーには2011年に導入された。

 一方、一般のドメインへの普及は思うように進んでいない。グリーンランドのように9割以上のDNSアクセスにDNSSECが使われている国がある一方、アジアでの普及率は低い。現時点では、日本では7%程度のDNSアクセスにしかDNSSECが使われていない。