DNS今昔ものがたり

05.04.10 / DNSって何? / Author: aico / Comments: (5)


DNSとは、ドメインネームシステムの略です。
DNSの仕事は「ホスト名をもとに、ホストのIPアドレスを教える」ことです。

なぜDNSというしくみができたのかをものがたりにしてみました!

むかしむかしあるところにウサギ村という村がありました。

ウサギ村はたった10人しかいない小さな村だったので村ウサギたちはお互いの名前を知っていました。


HOSTS.TXTはDNSができる前に使われていたテキストファイルです。

しかしちいさなウサギ村も10ウサ、100ウサ、1000ウサとウサギ数が増え、巨大な国となっていきました。

そのため村ウサギたちはお互いを把握できなくなってしまいました。
どんなうさぎかを思い出そうにも時間がかかったり、引っ越してきた新ウサギさんを知らなかったなど…
また、ウサギ村では同じ名前を名乗ることを禁止していたはずが、人数が増えすぎて名前がかぶる事態となってしまい、郵便局やぎさんがちがうウサギさんに間違ってメールを送りそうになる事件など問題が発生し始めてしまったのです。

HOSTS.TXTではすべてのホスト情報が管理されているのでネットワークを使う人が増えたことでHOST.TXTファイルの容量が大きくなってしまい、ネットワークが正常に機能しなくなってしまったのです。
また既存のホスト名を簡単に取得できてしまったため、送りたい人ではない人にメールが届いてしまう危険性などの問題が発生してしまいました。

ここまで村が大きくなると思っていなかったうさ王は国うさぎを把握するためのシステムを考えました。
それこそがDNSです!

うさ王は国ウサギの名前を把握するためにDNSサーバーという国ウサギ情報管理所をつくり、国ウサギたちが知りたいウサギさんのことを問い合わせられるようにしました。

うさぎ国は巨大な国家だったのでひとつの管理所にすべての情報をあつめるのは大変なので、うさ王はDNSサーバーをたくさんつくって情報を分散管理させることにしました。
また、うさぎ国を村ごとにわけることによってうさぎさんたちの名前がかぶることを防ぎました。

国ウサギ情報管理所の中央管理所をルートネームサーバーといい、世界に13個存在しています。
国うさぎの情報はこのルートネームサーバーを先頭にツリー上に情報局を枝分かれさせています。

(例)ウサギ国のうさぎ県うさぎ村のうさおさんが、ウサギ国のウサウサ県ウサウサ村のうさこちゃんに会いたいんだ!と言った場合

うさおさんはうさぎ村のDNSサーバーにうさこちゃんの住所(IPアドレス)を聞きにいきます。
ところがうさぎ村のDNSサーバーではうさこちゃんのことはわからなかったので、
うさぎ県のDNSサーバーに問い合わせをしてもらいました。
しかしここでもうさこちゃんのことはわかりませんでした。
なのでうさぎ国の中央情報局、ルートネームサーバーに問い合わせをしてみると!
ウサウサ村のDNSサーバーのことを教えてくれました。
ウサウサ村に問い合わせをするとうさこちゃんの住所であるIPアドレスを教えてくれたので、
うさおくんはうさこちゃんに会いにいくことができたのでした♪

DNSもくじ

14.04.10 / DNSって何? / Author: aico / Comments: (0)

DNSって…むずかしい!

←現在の状況
DNSの基本情報を理解する流れとしてもくじを作ってみました!

1.DNSはなぜつくられたのだろう?

2.ドメインとは?ホスト名とは?サブドメインとは?FQDNとは?

3.DNSって何?

4.レコードとは?

5,digコマンドとは?

6,逆引きのしくみ

7,BINDとは?

8,DJBDNSとは?


IPアドレスってなんだろう?

30.04.10 / DNSって何? / Author: aico / Comments: (3)

今日はDNSを理解するために必要な用語をまとめました!

とにかく盛りだくさんです。

IPアドレスからスタートです!

IPアドレスは「.」で4つに区切られた数字の並びで表現されたインターネット上の住所です。

インターネットでホームページを見るとき、コンピューターはこのIPアドレスをつかってわたしたちが見たいホームページを見れるようにしてくれます。

でもインターネットを使っていてIPアドレスなんて見たことないですよね。

たとえばこのブログのIPアドレス(現在の)は 125.6.176.32です。
でも、わたしたちが目にするのは小悪魔女子大生のサーバーエンジニア日記という名前や、

http://co-akuma.directorz.jp/blog/というURLで、125.6.176.32なんてどこにもないですよね。

じゃぁなんでIPアドレスは必要なのでしょうか?

文字やイラストや写真を表示してくれるコンピューター、実はonとoffしかわからないのです。
コンピューターの情報はonを1、offを0として、その0と1を組み合わせて表現しています。

0と1だけで数を表す方法を2進数と呼び、わたしたちがふだん使っている0〜9をつかう方法を10進数と呼びます。

IPアドレスはコンピューターの理解できる0と1の2進数を0〜9の10進数で表記したものです。

IPアドレスが示しているのはhttp://co-akuma.directorz.jp/blog/というURLでの、co-akuma.directorz.jpにあたる部分と対応しています。
この部分をFQDN(完全修飾ドメイン名)と呼びます。
数字の並びであるIPアドレスは人間にとって覚えづらいので、人間にとっておぼえやすいドメイン名というものができました。

なのでhttp://co-akuma.directorz.jp/blog/をhttp://125.6.176.32/blog/としてもこのブログが見れます!

このIPアドレスとFQDNを対応づけしてくれるのが前回登場したDNSなのです!

ドメイン名とホスト名ってなんだろう?

30.04.10 / DNSって何? / Author: aico / Comments: (0)

IPアドレスを簡単にまとめたところで、つぎはドメイン名について!です。

ドメイン名とはインターネット上の住所であるIPアドレスを人間がわかりやすいように表示したものということでしたが、その仕組みはどうなっているのでしょうか?

ドメインはもともと領土や範囲という意味の単語です。

このブログのドメイン名はdirectorz.jpです。

jpやdirectorzなど、組織や団体などの単位一つ一つドメインといい、そのドメインの名前をドメイン名といいます。

ドメイン名はIPアドレスを人間がわかりはやすいようにした形式で . で区切られた文字列ですが、それぞれの文字列には意味があります。

co-akuma.directorz.jpは、co-akumaというホスト.directorzというドメイン.日本(jp)のドメインという意味です。

つまり、うさおくんでいうとうさうさ村、うさぎ県というようにうさおくんの住む場所を表すように、
co-akuma.directorz.jpではjpで日本、directorzでディレクターズという会社といったようにco-akuma.directorz.jpが所属しているものをあらわしています。

つまり、ドメイン名とは、ホストがどこに所属しているのか、どこの領土・範囲にいる人なのかをあらわしているのです。

なので、おなじうさこちゃん(このブログでいえばco-akuma)というホスト名でも、所属(ドメイン)が違えばまったく別人ということになります。

ドメインには右側から順番にレベルがあります。

ドメイン名の一番右の文字列をトップレベルドメイン(TLD)といいます。
FQDNのco-akuma.directorz.jpでいうとjpの部分です。
トップレベルドメインには、jpが日本内のドメインというように国名を表すccTLD(country code TLD)と
、com(商用)やnet(ネットワークサービス提供組織)といった組織の種別を表すgTLD(generic TLD)があります。

FQDNのco-akuma.directorz.jpのdirectorzの部分をセカンドレベルドメイン(SLD)といいます。
セカンドレベルドメインには、ne(ネットワーク)やco(商用)といった組織別にわけるものが広く使われていましたが、
tokyo.jpのように地域型のドメインや、directorz.jpのように組織別のドメインをつかわないものも使えるようになりました。

そのあともサードレベルドメイン…のようにつづきます。

FQDNの一番左、co-akuma.directorz.jpではco-akumaの部分をホスト名といいます。

そして、ホスト名、トップレベルドメイン名、セカンドレベルドメイン名…すべてを記したものをFQDN(完全修飾ドメイン名)と呼びます。

ホスト名というのはネットワーク上のコンピューターの名前で、ドメイン名はホストが所属する所の名前です。
ドメイン名(ホスト名)なんてかいてあってどう違うの!?という質問をよく見ますが、ホスト名はホストに割り当てられるドメイン名なのです。


うさぎ国のうさうさ村のうさおくん(usao.usausa.usagi)におきかえて考えてみましょう。

うさぎ国うさうさ村というのはこのブログでいうとdirectorz.jpの部分ですが、これは、うさおくんが住んでいる(所属している)場所なのでドメイン名です。
usausa.usagiだけではうさうさ村の誰なのかわかりませんよね。だからこれはホスト名ではないことがわかります。

うさおくんというのは、うさおくんといううさぎ(ホスト)とわかるのでホスト名です。
また、うさおくんというホストにわりあてられたドメイン名でもあります。
これは、たとえば、うさぎ国うさうさ村のうさぎたちなら、このむらにはうさおくんはひとりしか存在しないので、うさおくんがどこにいるかわかりますよね。
だから、うさおくんのいる場所、ドメイン名といえるのです。

うさぎ国うさうさ村うさおくんというのはこのブログでいうco-akuma.directorz.jpの部分です。
これは、うさおくんのいる場所をあらわしているのでドメイン名であり、住所(ドメイン名)と名前(ホスト名)すべてを書いているのでFQDN(完全修飾ドメイン名)です。
また、誰あてであるか、つまり、ホストが誰であるのかもわかるので、ホスト名といえます。
また、よく、IPアドレスに対応するのはドメイン名とかかれていますが、この場合のドメイン名はFQDNのことをさしています。

サブドメインとルートドメインってなんだろう?

30.04.10 / DNSって何? / Author: aico / Comments: (2)

サブドメインとは、ドメインの中のドメインのことをいいます。

co-akuma.directorz.jpでいうと、directorzがjpのサブドメインです。

ドメイン名は下へと下がっていく階層構造になっていて、国を表すドメイン(例:jp)、組織を表すドメイン(例:directorz)というように下に下に小さい組織になるようにつくられています。

上の組織にとっての自分の一個下の組織をサブドメインと呼びます。

各サブドメインはそれぞれDNSサーバーをもち、自分と自分の一個下の情報を管理しています。
インターネットでは各ドメインの管理を分散させて負荷を一カ所に集中しないようにしているのです。

コンピューターの識別に使われるサブドメインをホスト名と呼ぶことがある。

ツリー構造のなかで、トップレベルドメインよりさらに上のドメインがあります。それをルートドメインと呼びます。

ルートとは根っこという意味でドメインの階層構造の頂点であり、「.(ドット)」で表されます。
ルートドメインを管理するルートサーバー(世界に13こ)がトップレベルドメインの情報を管理しています。
ルートドメインはふつう入力されることは少ないですが、ルートという根っこはDNSのしくみを支える重要な役割をしています。

DNSのお仕事 その1

30.04.10 / DNSって何? / Author: aico / Comments: (0)

今日はこあくまブログ、怒濤の更新です^ω^

DNSとはDomain Name Systemの略です。

Domain Name(ドメイン名)はネットワーク上のコンピューターの住所でしたよね。
また、これはコンピュータがわかりやすいように数字でかかれたネットワーク上のコンピュータの住所、IPアドレスを、人間にわかりやすいようにしたものでしたよね。

わたしたちがホームページを見るとき、ドメイン名とその他もろもろ(前回参照)をかいたURLを使いますよね。
しかしこのドメイン名、0と1しかわからないコンピュータにはわかりにくい。

じゃぁドメイン名をIPアドレスになおしてコンピュータにわかりやすくしてあげましょう!

その仕事をするのがDNSです!!!


そして、そのシステムを行うコンピュータやサーバーソフトウェアをDNSサーバーと呼びます。

そしてドメイン名とIPアドレスを対応付けするこの仕事のことを名前解決と呼びます。

DNSサーバーはひとつではなく世界中にたくさんあります。
ドメイン名はホストがどの組織に所属しているのかをあらわしていましたよね。
DNSサーバーはその組織のひとつひとつに設置されているのです。

ではそのつくりはどうなっているのでしょうか?

ドメイン名は「.(ピリオド)」でいくつかの階層に区切られ、そのひとつひとつの階層に置かれたDNSサーバーがそのドメイン内の情報を管理しています。

うさおくんの場合はこんなかんじです。

各DNSサーバーには自分の管理する範囲を持っています。その範囲をゾーンと呼びます。

DNSサーバーが管理しているのは、自分と自分のすぐ下のサブドメインのみです。

自分の上のDNSサーバーや、下の下も知りません。

このように自分のサブドメイン以下の情報(自分の下の下)をサブドメインに完全に任せてしまうことを権限委譲といいます。
権限委譲することで、各サーバーの情報がいっぱいにならず、管理効率が上がるようになっているのです。

なので、名前解決は下に下に情報を聞いていきます。

DNSのお仕事 その2

30.04.10 / DNSって何? / Author: aico / Comments: (1)

DNSのお仕事、つづきです。

DNSサーバーには3つの働きがあります。

コンテンツサーバー、スタブリゾルバ(一般にリゾルバとはこれのこと)、フルサービスリゾルバの3つです。

それぞれどのように働いているのでしょうか?

リゾルバ(スタブリゾルバ)がドメイン名に対応するIPアドレスがあるかを、
自分のDNSサーバー内のフルサービスリゾルバがキャッシュしてないか、コンテンツサーバーが情報を持っているかを尋ねます。
これを再帰問い合わせといいます。
対応付けができなければ、こんどはフルサービスリゾルバが他のDNSサーバーのコンテンツサーバーに尋ねていきます。
これは、対応付けができるまでつづけられるので、反復問い合わせといいます。
IPアドレスとの対応付けができるコンテンツサーバーに遭遇したら、
その情報をフルサービスリゾルバがキャッシュします。
そのはたらきにより、フルサービスリゾルバはキャッシュサーバーとも呼ばれます。
このようにして、DNSサーバーはIPアドレスとDNSの対応付けをしているのです。

まとめです!

BINDの設定をしよう!

19.05.10 / DNSって何? / Author: aico / Comments: (1)

今日は、レコードの勉強のため、BINDというフリーのDNSサーバソフトウェアを設定しました!
BINDを設定することで、IPアドレスとドメイン名の名前解決ができるようになります。


BINDとは、ソースコードが無料で公開されているフリーのソフトウェアで、世界でもっとも普及しているDNSサーバーです。

今回は、新しく作ったcoakuma.netというドメイン名を、小悪魔ブログのIPアドレスに対応付けして、http://coakuma.net/blog/でもこのブログが見れるようにしました。

今回はcoakuma.netというドメインを「お名前.com」さんで取得してもらい、BINDを設定する上で必要なインストールはできている状態なので、設定からスタートです*


まず、$ ssh [サーバー名] 、パスワード入力でサーバーに入り、
$ sudo bashでroot権限を得ます。

設定ファイル/etc/name.confを設定して、coakuma.netのサーバーのゾーンを設定します。

$ vi /etc/named.confで編集画面にします。
named.confにzoneステートメントをかきます。

include”/etc/rndc.key”;のまえに、

zone “coakuma.net” IN {
type master ;
file “coakuma.net.zone” ;
};
とかきます!

ここまで、まちがいがないかチェックしましょう!
$ /usr/sbin/named-checkconf /etc/named.conf    と入力して、なにもでてこなければOKです!


$ ssh [サーバー名] でサーバーに
パスワード入力
$ sudo bashでroot権限に
$ vi /etc/named.confで設定ファイル編集
iで編集モードに
zone “[ゾーン名]” IN {
type master ;
file “[ゾーンファイル名]” ;
};
escで編集終了
$ /usr/sbin/named-checkconf /etc/named.conf で間違いがないか確認

つぎにゾーンファイルをつくりましょう!
ゾーンファイルは/var/named/chroot/var/named内につくります!

ところで、chrootとはなんでしょう?

chrootはファイルシステム内の特定のサブディレクトリを、仮想的なルートディレクトリとして見せかける機能です。/etcディレクトリと/var/namedディレクトリ以下にあるBINDの設定ファイルを、/var/named/chroot以下の/etcディレクトリと/var/namedディレクトリ以下に置くことによって、権限をとられた場合でも、その被害をchrootしたファイルシステム内にとどめることができる、セキュリティ維持の仕組みです。

まず、
$ cd /var/named/ でvar/namedに移動して、
$ ls -laで/var/named/の中身を確認します。

chrootディレクトリがないので、
$ mkdir -p chroot/var/namedで、/var/named/chroot/var/namedを作成します。

$ cd chroot/var/named/で /var/named/chroot/var/namedに移動して、ゾーンファイルcoakuma.net.zoneを作成します。
$ vi coakuma.net.zoneとして編集画面に入ります。

$TTL 10800
coakuma.net. 1D IN SOA co-akuma.directorz.jp. usako.usausa.usagi.jp (
2010051301 ; serial
43200 ; refresh
5400 ; retry
3600000 ; expiry
10800 ) ; minimum
coakuma.net. 1D IN NS co-akuma.directorz.jp.
coakuma.net. 1D IN A 125.6.176.32

…と記入します。
:wqで保存し、編集を終えます。

$ cd /var/named/ でvar/namedに移動
$ mkdir -p chroot/var/namedで、/var/named/chroot/var/namedを作成
$ cd chroot/var/named/で /var/named/chroot/var/namedに移動
$ vi coakuma.net.zoneとして編集画面に
$TTL 10800
[ドメイン名]. 1D IN SOA [サーバー名]. [メールアドレス] (
[年月日]01 ; serial
43200 ; refresh
5400 ; retry
3600000 ; expiry
10800 ) ; minimum
[ドメイン名]. 1D IN NS [サーバー名]
[ドメイン名].  1D IN A [IPアドレス]
$ usr/sbin/named-checkzone coakuma.net  /var/named/coakuma.net.zoneでまちがいがないかチェックします。

ファイルを作成したらシンボリックリンクをはります。
$ ln -s /var/named/chroot/var/named/coakuma.net.zone /var/named/

これで、/var/named/chroot/var/named/coakuma.net.zoneを/var/named/にリンクされます。
/var/named/内にcoakuma.net.zoneがあるような状態になったので、これで、起動スクリプト/etc/init.d/named/ でも呼び出すことができるのです。

設定が終わったのでBINDを起動させましょう!
$/etc/init.d/named/ start

これで、coakuma.netで小悪魔ブログがみれるようになりました!


$ ssh [サーバー名] でサーバーに
パスワード入力
$ sudo bashでroot権限に
$ vi /etc/named.confで設定ファイル編集
iで編集モードに
zone “[ゾーン名]” IN {
type master ;
file “[ゾーンファイル名]” ;
};
escで編集終了
$ /usr/sbin/named-checkconf /etc/named.conf で間違いがないか確認

$ cd /var/named/ でvar/namedに移動
$ mkdir -p chroot/var/namedで、/var/named/chroot/var/namedを作成
$ cd chroot/var/named/で /var/named/chroot/var/namedに移動
$ vi coakuma.net.zoneとして編集画面に
$TTL 10800
[ドメイン名]. 1D IN SOA [サーバー名]. [メールアドレス] (
[年月日]01 ; serial
43200 ; refresh
5400 ; retry
3600000 ; expiry
10800 ) ; minimum
[ドメイン名]. 1D IN NS [サーバー名]
[ドメイン名].  1D IN A [IPアドレス]
$ usr/sbin/named-checkzone coakuma.net  /var/named/coakuma.net.zoneでまちがいがないかチェックします。

$ ln -s /var/named/chroot/var/named/coakuma.net.zone /var/named/
$/etc/init.d/named/ start

ルートサーバーってなんだろう?

27.05.10 / DNSって何? / Author: aico / Comments: (2)

今日は、DNSの途中ですが、DNSやインターネットにとってとっても重要な役割をはたしているルートサーバについて勉強しました!

ルートサーバはDNSのドメイン名前空間の頂点のサーバです。

下の絵は「サブドメインとルートドメインってなんだろう?」のときにでてきたイラストです。

このルートドメインの空間を管理しているのがルートサーバで、世界に13個存在しています。

ルートサーバ13台のうちそのほとんどがアメリカで管理されています。日本で管理しているのは、13台目でWIDEプロジェクトによって管理されています。

ルートサーバーは基本的に全てが同じデータを持っています。
ルートサーバーはドメインのトップレベルドメインを管理するDNSサーバーの一覧です。日本にあるサーバだから
日本を管理しているわけではなく、ルートサーバーはcomもnetもjpもtoもcnも全てのトップレベルドメインのDNSサーバーのIPアドレスを持っています。

すべてのルートサーバはa.root-servers.netからm.root-servers.netの正式名称を持っています。

日本のルートサーバは、WIDEプロジェクトが管理しているルートサーバのM.ROOT-SERVERS.NETで、

WIDEプロジェクトが管理しています。

WIDEプロジェクトは、慶応義塾大学の村井純教授らが中心になって1988年に設立された、インターネットに関する研究プロジェクトです。日本におけるインターネットの先駆け的存在の一つとなったことで知られています。

つづきます!

ルートサーバってなんだろうその2

27.05.10 / DNSって何? / Author: aico / Comments: (13)

前回、ルートサーバは世界に13個あり、日本では、その1つをWIDEプロジェクトが管理しているということがわかりました。

ルートサーバは名前空間の最も上に位置するサーバです。
なので、もし13台すべてのルートサーバがアクセスできない状態になると、インターネットは使えなくなってしまいます。

2002年、DDoS攻撃というルートサーバへの攻撃によって13台のうち9台のルートサーバが影響をうけ、内7台は一時的にサービスが不能になった事件が起きました。

DNSではプロトコル上の制限によりルートサーバーとして指定可能なサーバーが最大13台までに制限されているため、通常の方法ではそれを超える数のサーバーを配置することはできません。

そこで、IP Anycastという、IPアドレスを複数のサーバで共有する技術によって、同じIPアドレスをもつDNSサーバーが世界各地に設置されました。IP Anycastでは、ユーザーはそのうち最も効率よくすばやく情報をおくってくれるサーバーに接続するようになっています。

なので、日本にもM.ROOT-SERVERS.NETの他に4つの海外の企業が管理するルートサーバと同じIPアドレスを持ったサーバが設置されています。

つまり、13台というのは、ルートサーバの数ではなく、サーバを仕切るホストコンピュータの数なのです。

ルートサーバの管理するルートドメインはふだんドメイン名(FQDN)にかかれることはありません。しかし、このように管理されながら、インターネットの世界で重要な役割をはたしているのです!