情報学類 分散システム 2008年01月29日 筑波大学システム情報工学研究科 コンピュータサイエンス専攻, 電子・情報工学系 新城 靖 <yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/dsys-2007/2008-01-29
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
インターネットで使われている名前サービスは、 DNS(Domain Name System) と呼ばれている。
DNS では、膨大な数のホスト名を含む名前空間を木構造で管理する。
==階層的にドメイン(領域)に分割して管理する。
図? 大学組織に見られる木構造(ドメイン的な見方)
図? 大学組織に見られる木構造(普通の木構造的な表記)
利点: 名前が短い
問題点: 多数のホストに対して名前を付けられない。
名前空間を分割し、一部の権限を委任する。 分割されたものをさらに分割する。
→木構造。
自然な考え方。
スケーラビリティを実現するには、木構造にするしかない、とも言える。 しかし
ドメイン名 | 数 |
---|---|
.com | 2137万 |
.de | 546万 |
.net | 363万 |
.org | 233万 |
.info | 82万 |
.biz | 67万 |
.jp | 98万 |
http://www.domainworldwide.com/ The Daily Domain Counts of Domains Worldwide by Domain Worldwide.
第二レベルのドメインの数。ホストの数はもっと多い。
http://jpinfo.jp/stats/ JPドメイン名に関する統計 by JPRS by Zooknic.
図? 名前空間の木構造としての見方
「azalea1.coins.tsukuba.ac.jp
」を
図?で考えると、次のようになる。
jp
という節を選ぶ。
ac
という節を選ぶ。
tsukuba
という節を選ぶ。
coins
という節を選ぶ。
azalea1
という節(葉)を選ぶ。
/jp/ac/tsukuba/coins/azalea1
」となる。
[RFC1034 DOMAIN NAMES - CONCEPTS AND FACILITIES,1987]
<domain> ::= <subdomain> | " " <subdomain> ::= <label> | <subdomain> "." <label> <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ] <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str> <let-dig-hyp> ::= <let-dig> | "-" <let-dig> ::= <letter> | <digit> <letter> ::= any one of the 52 alphabetic characters A through Z in upper case and a through z in lower case <digit> ::= any one of the ten digits 0 through 9
インターネットのドメイン名の根は、1つしかない。 13個のサーバにコピーが世界各地にある。
もし、別の根の情報を持つサーバがあれば、どうなるのか。
オルタネート・ルート(alternate roots)。
jp
。
.com,.edu,.gov,.int,.mil,.net,.org
。
新しい: .aero,.biz,.coop,.info,.museum,.name,.pro (2000年)、
.jobs,.travel,.cat カタロニア語,.mobi,(.post),(.xxx),(.eu),(.asia) (2005年)、
(.tel) (2006年)
http://www.icann.org/tlds/
。
jp
の下には、次のような枝(領域、ドメイン)がある。
resolver の設定ファイルの例:
% cat /etc/resolv.conf
search coins.tsukuba.ac.jp
nameserver 130.158.86.204
nameserver 130.158.86.205
%
各名前サーバは、ゾーンと呼ばれる、木構造の節のデータ(Unixのディレクト リに相当)を保持する。
図? 名前サーバの動き
例:このクライアントが、「www.tsukuba.ac.jp
」というドメイ
ン名のホストの IP アドレスを調べる。
jp
ドメインの名前サーバのIPアドレスを返す。
jp
ドメインの名前サー
バに、ドメイン名を送る。
jp
ドメインの名前サーバは、自分ではIPアドレスを答えずに代わりに
ac.jp
ドメインの名前サーバのIPアドレスを返す。
ac.jp
ドメインの名前サーバに、ドメイン名を
送る。
ac.jp
ドメインの名前サーバは、自分ではIPアドレスを答えずに代わりに
tsukuba.ac.jp
ドメインの名前サーバのIPアドレスを返す。
tsukuba.ac.jp
ドメインの名前サーバに、ドメ
イン名を送る。
tsukuba.ac.jp
ドメインの名前サーバは、そのドメイン名のIPアドレスを
返す。
各ドメインの名前サーバは、 単に次の名前サーバを返すだけで、自分で最終的な答えが見つかるまで 繰り返さない。 (ローカルの名前サーバが 非再帰的(non-recursive)、または 反復的(iterative)な要求を出している。)
1つのドメイン名をIPアドレスに変換するたびに、該当する名前サーバに要求 を送っていると遅い。 ルート・ドメインの名前サーバの負荷が重たい。
実際の名前サーバでは、 キャッシング(caching) を行なっていてる。
一度知った情報は、メモリ中に保存しておき、次に必要になった時には、それ を使う。(他の名前サーバには問い合わせを行なわない)。
しかし、名前とIPアドレスの束縛は、必ず変化する。 キャッシュを持っていると、元の情報が更新され時に問題が起きる。
キャッシュの内容を正しく保つためには、次のような技術が使われている。
逆に考えると、この期限内では、たとえデータを更新したとしても、古いデー タが参照される。
トレードオフ。
DNS では、主にドメイン名を IP アドレスへ変換するが、これは ドメイン名ごとに IP アドレスのデータが定義されていることによる。 このような DNS で扱う1つひとつのデータを、 資源レコード(RR: resource recourd) という。
資源レコード | 意味 |
---|---|
A | アドレス |
CNAME | 正式名 |
HINFO | ホスト情報 |
MX | 電子メールの送り先 |
NS | 名前サーバ |
PTR | ポインタ |
SOA | 権限開始 |
% dig +noall +answer azalea10.coins.tsukuba.ac.jp a
azalea10.coins.tsukuba.ac.jp. 86400 IN A 130.158.86.30
% dig +noall +answer www.coins.tsukuba.ac.jp a
www.coins.tsukuba.ac.jp. 86400 IN CNAME orchid-nwd.coins.tsukuba.ac.jp.
orchid-nwd.coins.tsukuba.ac.jp. 86400 IN A 130.158.86.207
%
名前サーバを複数用意しておくと、それらの名前サーバのうちどれか1つでも アクセスできれば、名前解決をすることができる。
名前サーバの種類:
マスタの名前サーバは、ファイルからそのゾーンのデータを読み込む。
スレーブの名前サーバは、マスタの名前サーバや他の スレーブの名前サーバからデータをコピーする。
このコピーのことを ゾーン転送(zone transfer) という。
% dig +noall +answer coins.tsukuba.ac.jp soa
coins.tsukuba.ac.jp. 86400 IN SOA orchid-nwa.coins.tsukuba.ac.jp.
postmaster.coins.tsukuba.ac.jp. 2006081404 3600 3600 604800 3600
%
数字は、左から、serial, refresh, retry, expire, minimum ttl
ホスト名からIPアドレスを引く普通の引き方を強調する時には 正引き という。
正引きは、A レコードを検索することで行なわれる。
引きには、PTR が検索される。
例 IP アドレス(数字は、全て 10 進数):
12.34.56.78
のホストのドメイン名を調べるには、次のようなドメイン名の PTR レコード
を検索する。
78.56.34.12.in-addr.arpa
% dig +noall +answer azalea10.coins.tsukuba.ac.jp a
azalea10.coins.tsukuba.ac.jp. 86400 IN A 130.158.86.30
% dig +noall +answer 30.86.158.130.in-addr.arpa ptr
30.86.158.130.in-addr.arpa. 86400 IN PTR azalea10.coins.tsukuba.ac.jp.
%
逆に言えば、ルートさえ手動で設定すれば、他のドメインは設定しなくてもよ い。
名前サーバの設定ファイルから読み込ませる。
% cat /var/named/named.ca
...
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201
...
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33
%
最後の M は、日本にある。
6.2.1. QNAME=SRI-NIC.ARPA, QTYPE=A The query would look like: +---------------------------------------------------+ Header | OPCODE=SQUERY | +---------------------------------------------------+ Question | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=A | +---------------------------------------------------+ Answer || +---------------------------------------------------+ Authority | | +---------------------------------------------------+ Additional | | +---------------------------------------------------+ The response from C.ISI.EDU would be: +---------------------------------------------------+ Header | OPCODE=SQUERY, RESPONSE, AA | +---------------------------------------------------+ Question | QNAME=SRI-NIC.ARPA., QCLASS=IN, QTYPE=A | +---------------------------------------------------+ Answer | SRI-NIC.ARPA. 86400 IN A 26.0.0.73 | | 86400 IN A 10.0.0.51 | +---------------------------------------------------+ Authority | | +---------------------------------------------------+ Additional | | +---------------------------------------------------+ The header of the response looks like the header of the query, except that the RESPONSE bit is set, indicating that this message is a response, not a query, and the Authoritative Answer (AA) bit is set indicating that the address RRs in the answer section are from authoritative data. The question section of the response matches the question section of the query.
... options { directory "/var/named"; ... } zone "." IN { type hint; file "named.ca"; }; zone "coins.tsukuba.ac.jp." in { file "coins.tsukuba.ac.jp.zone"; type master; }; zone "86.158.130.in-addr.arpa" IN { file "db.130.158.86"; type master; }; .../var/named/coins.tsukuba.ac.jp.zone:
$TTL 86400 coins.tsukuba.ac.jp. IN SOA orchid-nwa.coins.tsukuba.ac.jp. postmaster.coins.tsukuba.ac.jp. ( 2006081404 ; serial 1h ; refresh 1h ; retry 1w ; expiry 1h ) ; minimum ; coins.tsukuba.ac.jp. IN NS orchid-nwa.coins.tsukuba.ac.jp. coins.tsukuba.ac.jp. IN NS kasumi.cc.tsukuba.ac.jp. coins.tsukuba.ac.jp. IN NS utogwgw.gssm.otsuka.tsukuba.ac.jp. IN MX 10 smtpgwin.cc.tsukuba.ac.jp. ... orchid-nwa IN A 130.158.86.204 orchid-nwb IN A 130.158.86.205 orchid-nwd IN A 130.158.86.207 ... mail IN CNAME orchid-nwc oldmail IN CNAME orchid-calc6 www IN CNAME orchid-nwd vpn IN A 130.158.87.160 ... azalea1 IN A 130.158.86.21 azalea2 IN A 130.158.86.22 azalea3 IN A 130.158.86.23 ...