ドメイン名と DNS

15.3. ドメイン名と DNS

URLやメールアドレスなどで人が使うドメイン名と、ネットワーク上の通信相手の特定に必要なIPアドレスを結びつける仕組みが、DNS (Domain Name System) です。

たとえば、この「はいぱーワークブック」のドメイン名 hwb.ecc.u-tokyo.ac.jp に対応する IP アドレスは 219.94.162.18 です。

この対応をとるために、2種類のDNSサーバ、リゾルバと権威サーバが働いています。

名前解決 #

ホスト名に対応するIPアドレスを調べることを、 **名前解決** (name resolution) と言います。 名前解決をしてくれるサーバを、 **リゾルバ** と言います。 通常の計算機は、自身のIPアドレスを設定すると同時に、`DNSサーバ` を設定します。 このサーバは、リゾルバです。DNSの重要性から、サーバが一台故障しても他を使えるように、複数指定することが多いです。
![](/eccs/imac-system-network-dns.png)
sequenceDiagram
	actor クライアント
    クライアント->>リゾルバ: hwb.ecc.u-tokyo.ac.jp?
    リゾルバ->>クライアント: 219.94.162.18
public DNS
public に使えるリゾルバとして `8.8.8.8` や `1.1.1.1` などが提供されています。 家庭等で、リゾルバの不調が疑われるときは、DNSサーバの他の設定として試すと良いかもしれません。 それぞれ Google と Cloudflare (+APNIC) の提供です 8.8.8.8 1.1.1.1 APNIC

分散管理 #

リゾルバは、どのようにIPアドレスを調べるのでしょうか?

名前とIPアドレスの対応について、全世界のデータを一括で管理することは難しいです。 量も多いですし、サーバのIPアドレスはしばしば変わります。 そこでドメイン毎に 権威DNSサーバ (authoritative name server) を設けて、分散管理しています。 u-tokyo.ac.jp ドメインの権威DNSサーバは、東京大学が管理しています。 つまり、u-tokyo.ac.jp ドメインに含まれるドメイン名のデータの更新は、東京大学によりこの権威DNSサーバに登録されます。したがって、世界の誰であってもu-tokyo.ac.jp ドメインの情報は、東京大学の権威DNSサーバに尋ねる必要があります。
ところで、東京大学の権威サーバのIPアドレスはどのように知ることができるでしょう?

各ドメインの権威 DNS サーバを知るために、ルートから順番に問い合わせます。

問い合わせの種類
同じDNSサーバへの問い合わせでも、クライアントからリゾルバへの問い合わせを recursive lookup、権威サーバを知るためのリゾルバから他のDNSサーバへの問い合わせを iterative lookup といいます。日本語では再帰と反復ですが紛らわしいので英語で紹介します。

例1 #

数理科学研究科の www.ms.u-tokyo.ac.jpの場合は

  1. ルート DNS サーバに対して質問すると、jp ドメインの権威 DNS サーバとIPアドレス を教えてもらえます。 ルート DNS サーバ は、ドメイン名管理の頂点で、.jp.com などのトップレベルドメインを取りまとめています。
  2. jp ドメインの権威 DNS サーバに質問すると、u-tokyo.ac.jp ドメインの権威 DNS サーバの IP アドレスを教えてもらえました。ドメインを一つずつたどると ac.jp ドメインの権威 DNS サーバ がありそうですが、この場合はありません。
  3. u-tokyo.ac.jp ドメインの権威 DNS サーバに質問すると、答えをもらえました

得た答えは、しばらくの間 キャッシュ され、同じ問い合わせがあった際に再利用されます。

sequenceDiagram
	actor クライアント
    クライアント->>リゾルバ: www.ms.u-tokyo.ac.jp?
	リゾルバ->>m.root-servers.net: www.ms.u-tokyo.ac.jp?
	m.root-servers.net->>リゾルバ: a.dns.jp, 203.119.1.1
    note right of リゾルバ: jpのことはここに聞いて
	リゾルバ->>a.dns.jp: www.ms.u-tokyo.ac.jp?
	a.dns.jp->>リゾルバ: dns1.nc.u-tokyo.ac.jp, 133.11.0.1
    note right of リゾルバ: u-tokyo.ac.jpのことはここに聞いて
	リゾルバ->>dns1.nc.u-tokyo.ac.jp: www.ms.u-tokyo.ac.jp?
	dns1.nc.u-tokyo.ac.jp->>リゾルバ: 157.82.16.27
    リゾルバ->>クライアント: 157.82.16.27

この手順の先頭で使う、ルート DNS サーバの IP アドレスは、あらかじめ配布・設定されています。

root servers
### root servers ルートサーバは、`a.root-servers.net`, `b.root-servers.net`,.., `m.root-servers.net` と a から m までの13のホスト名で運用され、それぞれのIPアドレスも公開されています。さらに、実際のサーバは13台ではなく、数百台の分身が存在します。通常 1つのIPアドレスには1つの機器が対応しますが、ルートサーバは `anycast` という技術を用いて様々なネットワークや地域に分散配置され、応答速度や、頑健性を向上させています。 `m.root-servers.net` は1997年から日本で運用されています。 root-servers.org M.ROOT-SERVERS.NET

例2 #

hwb.ecc.u-tokyo.ac.jp の場合はもう少し複雑です。

  1. ルート DNS サーバから、jp ドメインの権威 DNS サーバとIPアドレス を教わるところは同様です。
  2. jp ドメインの権威 DNS サーバあら、u-tokyo.ac.jp ドメインの権威 DNS サーバの IP アドレスを教わることも同様です。
  3. u-tokyo.ac.jp ドメインの権威 DNS サーバに質問すると、ns1.dns.ne.jp に聞いてねと言われてしまいました。
    1. ns1.dns.ne.jpのIPアドレスを同様に調べます — 経過は省略しますが 61.211.236.1 でした
    2. その後、そのIPアドレスに対して hwb.ecc.u-tokyo.ac.jp を聞き、答えを得ます
sequenceDiagram
	actor クライアント
    クライアント->>リゾルバ: hwb.ecc.u-tokyo.ac.jp?
    note right of リゾルバ: (中略)
	リゾルバ->>dns1.nc.u-tokyo.ac.jp: hwb.ecc.u-tokyo.ac.jp?
	dns1.nc.u-tokyo.ac.jp->>リゾルバ: dns1.ne.jp
    note right of リゾルバ: こっちに聞いて
	リゾルバ->>a.dns.jp: dns1.ne.jp
	a.dns.jp->>リゾルバ: dns1.ne.jp, 61.211.236.1
	リゾルバ->>dns1.ne.jp: hwb.ecc.u-tokyo.ac.jp?
	dns1.ne.jp->>リゾルバ: 219.94.162.18
    リゾルバ->>クライアント: 219.94.162.18

このように一手間増えた理由は、HWBがホスティングサービスを利用して配信されていて、hwb.ecc.u-tokyo.ac.jp のドメイン名は東京大学が管理していますが、サーバ自体は (IPアドレスは) 東京大学のネットワークではなく別に配置されているためです。

これらの手順は、Colab 上でさまざまなサーバについて試すことができます。

HWB-network.ipynb

Top Level Domain #

.com.jp など一番大本のドメインを、Top Level Domain (TLD) と言います。 ここではTLDの種類を、いくつか紹介します。

ドメイン毎に、意味や使える組織の制限を伴う場合があります。 go.jp なら日本政府、ac.jp なら大学等教育機関、のようなウェブサイトの身元の検証方法として役に立つ場合があります。

伝統的ドメイン #

以下のTLDは、比較的古くから使われてきたものです。左側 .edu.gov は特定の組織のみが持つドメイン名で、右側の .com等は誰でも使えるという区別が重要です。

- `.edu` 大学等 - `.gov` USA政府 - `.mil` USA軍
- `.com` 商用 (自由) - `.net` ネットワーク関係 (自由) - `.org` その他組織 (自由)
`u-tokyo.ac.jp` は東京大学のドメイン名ですが、`u-tokyo.com` は東京大学のドメイン名ではありません。

国コード #

ccTLD (country code TLD) は国や地域によって割り当てられたトップレベルドメインです。たとえば日本には .jp ドメインが、イギリスには .uk ドメインが割り当てられています。ただし、ccTLD の下に属するドメイン名が必ずしも ccTLD の表す国と関係があるわけではありません。たとえば jp ドメインの登録は日本国内に住所を持つ個人や法人に限定されますが、tv ドメイン (元来はTuvalu) は国と関係なく取得することができます。

Wikipedia
`u-tokyo.ac.jp` は東京大学のドメイン名ですが、`u-tokyo.ac` は東京大学とは無関係です。(`.ac` は Ascension Island (United Kingdom))

JP ドメイン名の分類 #

JP ドメイン名の場合、その下位のドメインで以下の分類があります。

  • 属性型 JP ドメイン名
  • 都道府県型 JP ドメイン名
  • 汎用 JP ドメイン名

このうち属性型ドメインは、以下のように登録できる組織に制限がある場合があります。 JPドメイン名の種類 種類と対象 (JPRS)

ac.jp : 大学等 go.jp : 政府機関 lg.jp : 地方公共団体 ed.jp : 教育機関 (18才未満対象) ad.jp : JPNIC会員
co.jp : 会社 or.jp : 法人 ne.jp : ネットワークサービス gr.jp : 個人や法人
たとえば、レポートの資料を調べる際は、`.ac.jp` ドメインや `go.jp` ドメインに限定して調査することもあるでしょう。

.jp のドメインは、株式会社日本レジストリサービス (JPRS) が、ICANN (IANA) より委託されて管理運営しています。 JRPSのwhois サービスで、jp で終わるドメインの登録情報を調べることができます。

whois (JPRS) Delegation Record for .JP (IANA)

国際化ドメイン名 #

伝統的なドメイン名で使える文字は、英数字とハイフン - のみです。また英字の大文字小文字は、区別されません。

現在、一部のドメインでは、日本語を含めた他の文字を使う仕組みが広まっています。.jp ドメインでも利用可能です。 方法は、以下のように、日本語等の文字を英数字とハイフンのみを使って符号化します。 これにより過去の仕組みと整合性を保ちつつ、ユーザには日本語を見せることができます。

国際化ドメイン名符号化後
東京大学.jpxn--1lq68wkwbj6u.jp
host xn--1lq68wkwbj6u.jp
xn--1lq68wkwbj6u.jp has address 133.11.123.50
`東京大学.jp` は (現在のところ) 東京大学が登録したドメイン名ですが、`東大.jp` は東京大学による登録ではありません。

その他のデータ #

DNSには、名前解決以外にも複数種類のデータ配布に利用されます。 主なキーワードと種類を紹介します。1件の登録データを レコード、種類 A のレコードを Aレコード などと呼びます。

A : IPv4アドレス (これまで紹介したもの) PTR : IPアドレスから名前への対応 MX : ドメインに対する電子メールサーバの指定 CNAME : ドメインに対する別名の指定
AAAA : IPv6アドレス TXT : 自由記述。spam対策のSPFなどで利用。 NS, SOA : DNSの管理に利用

次の2つの例は、m.root-servers.netのIPアドレスが 202.12.27.33 であることと、その逆に202.12.27.33m.root-servers.netを持つことを確認しています。それぞれ Aレコードと PTRレコードです。PTRレコードの書式は、IPアドレスを逆順に、つまり右からつなげて、.in-addr.arpaを末尾につけたものを使います。またドメイン名の大文字小文字の違いは無視されます。

host m.root-servers.net
m.root-servers.net has address 202.12.27.33
host 202.12.27.33
33.27.12.202.in-addr.arpa domain name pointer M.ROOT-SERVERS.NET.

次の例は、@g.ecc.u-tokyo.ac.jp 宛ての電子メールの受け取り先を示すMX レコードが登録されていて、aspmx.l.google.com や他の4台で受け取るということを示しています。handled by につづく数が優先度で、1が最優先です。

host g.ecc.u-tokyo.ac.jp
g.ecc.u-tokyo.ac.jp mail is handled by 10 alt3.aspmx.l.google.com.
g.ecc.u-tokyo.ac.jp mail is handled by 5 alt2.aspmx.l.google.com.
g.ecc.u-tokyo.ac.jp mail is handled by 5 alt1.aspmx.l.google.com.
g.ecc.u-tokyo.ac.jp mail is handled by 1 aspmx.l.google.com.
g.ecc.u-tokyo.ac.jp mail is handled by 10 alt4.aspmx.l.google.com.

次の例は、www.ecc.u-tokyo.ac.jp は CNAME レコードによる別名で、本体は utokyo-mediaweb.japaneast.cloudapp.azure.com であることを示しています。

host www.ecc.u-tokyo.ac.jp
www.ecc.u-tokyo.ac.jp is an alias for utokyo-mediaweb.japaneast.cloudapp.azure.com.
utokyo-mediaweb.japaneast.cloudapp.azure.com has address 13.78.45.77
アドレス ドメイン名と DNS TCP/IPとルーティング
このサイトは開発版の はいぱーワークブック です.