Transcript Document

Dynamic DNS
情報工学専攻 谷口研究室
山本 淳
発表手順
1.DNSの概要
2.Dynamic DNSの概要
3.実装(BIND)
4.動的更新ツール(nsupdate)
No.2
DNS(Domain Name System)
(1)TCP/IPネットワークにおける名前解決サービスを提供
(A)正引き: ドメイン名 ー> IPアドレス
(B)逆引き: IPアドレス ー> ドメイン名
(C)クライアント/サーバ方式で動作
(2)階層構造の分散データベース方式で名前空間を管理
(A)ゾーン単位で情報を管理
(B)ゾーン単位で管理を委任
(C)ドメインとゾーンは不一致可
(3)RFC1034とRFC1035で定義
No.3
名前空間(ドメインとゾーン)
. (root)
jp
ac
kyushu-u
csce
swlab
uk
co
<ドメイン!=ゾーンの例>
・csce.kyushu-u.ac.jpドメイン
・csce.kyushu-u.ac.jpゾーン
st
<ドメイン==ゾーンの例>
・st.csce.kyushu-u.ac.jpドメイン
・st.csce.kyushu-u.ac.jpゾーン
※各ゾーンごとに1台以上のDNSサーバが存在
No.4
DNSサーバの種類
(1)プライマリとセカンダリ
(A)プライマリ: ゾーンファイルの原本から情報を取得
(B)セカンダリ: ゾーンファイルの複製から情報を取得
(2)マスターとスレーブ
(A)マスター: ゾーン転送における転送元
(B)スレーブ: ゾーン転送における転送先
プライマリ
セカンダリ
マスター
ゾーン転送
スレーブ
No.5
DNSの動作
recursive query
iterative query
(2)
ローカルのDNSサーバ
(1)www.kyushu-u.ac.jp
(3)
.(root)
DNSサーバ
jp
DNSサーバ
(4)
(6)133.5.1.2
DNSクライアント
(5)
ac.jp
DNSサーバ
kyushu-u.ac.jp
DNSサーバ
No.6
DNSの拡張
(1)差分ゾーン転送
RFC1995, “Incremental Zone Transfer in DNS”
(2)ゾーンの更新通知
RFC1996, “A Mechanism for Prompt Notification of
Zone Changes (DNS NOTIFY)”
(3)DNSの動的更新
RFC2136, “Dynamic Updates in the Domain Name System
(DNS UPDATE)”
No.7
差分ゾーン転送(RFC1995)
(1)ゾーン転送
・マスターがスレーブにゾーンファイルの内容を
転送すること
(2)転送方式
(A)完全転送(AXFR)
ゾーンファイル内容の全体を転送
(B)差分転送(IXFR)
ゾーンファイル内容の差分を転送
ゾーン転送に伴う無駄なトラフィックの抑制
※ゾーンファイルのバージョンは、SOA RRの
serialフィールド値で管理
No.8
ゾーンの更新通知(RFC1996)
(1)ゾーン転送の契機
スレーブからマスターへの転送要求の発行
(2)要求の発行契機
(A)定期間隔
SOA RRのrefreshフィールド値の間隔で要求を発行
(B)更新通知
マスターからの更新通知により要求を発行
マスターとスレーブ間での情報一致の促進
No.9
DNSの動的更新(RFC2136)
(1)DNSのオリジナル設計
(A)静的に構成されたデータベースの管理
(B)更新はゾーンファイルの手動編集により実施
(2)動的更新の必要性
(A)ゾーンファイルの管理コストの削減
(B)DHCPクライアントへの固定ドメイン名の割り当て
UPDATE命令で指定ゾーンのRRの追加・削除を可能に
No.10
利用例(DHCPとDynamic DNS)
Hw Address
|
Host Name
table
DHCP Server
1
allocate IP
address
DHCP Client
2
send IP-Host
infomation
DNS
3
DNS update
[松澤ら, 2000]
No.11
DNS UPDATEパケットの構造
Header
Zone
Prerequisite
Update
Additional Data
specifies the zone to be updated
RRs or RRsets which must (not) preexist
RRs or RRsets to be added or deleted
additional data
RRset:
・RRのエントリ(name, type, class, ttl, rdlength, rdata)のうち
(name, type, class)が同じRRの集合
No.12
Headerセクション(1)
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
ID
QR
Opcode
Z
RCODE
ZOCOUNT
PRCOUNT
UPCOUNT
ADCOUNT
ID: 要求を行うプログラムによって割り当てられる識別子
QR: 要求(0)、応答(1)
Opcode: 要求の種類、UPDATE(5)
Z: 予約、すべて0にセット
No.13
Headerセクション(2)
RCODE: 応答コード
0
NOERROR
1
FORMERR
2
SERVFAIL
3
NXDOMAIN
4
NOTIMP
5
REFUSED
YXDOMAIN
YXRRSET
NXRRSET
NOTAUTH
NOTZONE
6
7
8
9
10
ZOCOUNT: Zoneセクションに含まれるRRの数
PRCOUNT: Prerequisiteセクションに含まれるRRの数
UPCOUNT: Updateセクションに含まれるRRの数
ADCOUNT: Additional Dataセクションに含まれるRRの数
No.14
Zoneセクション
・更新するゾーンを指定
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
ZNAME
ZTYPE
ZCLASS
ZNAME : ゾーンの名前
ZTYPE : SOAでなければならない
ZCLASS : ゾーンのクラス
※すべての更新は、同一ゾーンに対してでなければならない
No.15
Prerequisiteセクション
・更新するための必要条件を指定
(1)RRset exists (value independent)
(2)RRset exists (value dependent)
(3)RRset dose not exist
(4)Name is in use
(5)Name is not in use
<構文>
class
type
ANY
ANY
ANY
rrset
NONE
ANY
NONE
rrset
zone
rrset
rdata
empty
empty
empty
empty
rr
meaning
(4)
(1)
(5)
(3)
(2)
※ttlはすべて0
にセット
No.16
Updateセクション
・更新(追加・削除)するRRまたはRRsetを指定
(1)Add RRs to an RRset
(2)Delete an RRset
(3)Delete all RRsets from a name
(4)Delete an RR from an RRset
<構文>
class
ANY
ANY
NONE
zone
type
ANY
rrset
rrset
rrset
rdata
empty
empty
rr
rr
meaning
(3)
(2)
(4)
(1)
※(1)以外、ttlは
すべて0にセット
No.17
Server Behavior(1)
DNS UPDATEパケットの処理
(1)プライマリ
DNS UPDATEパケットの各セクションを処理
(2)セカンダリ
・DNS UPDATEパケットをプライマリに向かって
フォワード
プライマリ
セカンダリ
マスター
フォワード
スレーブ
No.18
Server Behavior(2)
<処理手順>
(1)Zoneセクション
(2)Prerequisiteセクション
(3)Updateセクション
(4)Requestorへの応答
DNS UPDATE
(1)原子性(atomicity)
(A)全必要条件を満足 ー> 全更新を反映
(B)全必要条件を不満 ー> 全更新を取消
(2)ゾーンのバージョン管理
・更新を反映した場合、SOA RRのserialフィールド値
をインクリメント
No.19
Requestor Behavior
前提:
・更新するゾーンの名前と当該ゾーンのDNSサーバ
(プライマリまたはセカンダリ)は既知
DNS UPDATEパケット
ID:
Opcode:
Zone zcount:
Zone zname:
Zone zclass:
Zone type:
Prerequisite Section:
Update Section:
Additional Data Section:
(new)
UPDATE
1
(zone name)
(zone class)
T_SOA
(see previous page)
(see previous page)
(empty)
No.20
実装(BIND)
BIND(Berkeley Internet Name Domain)
(1)DNSのリファレンス実装
(2)ISC(Internet Software Consortium)により開発・配布
(3)BIND4系、BIND8系、BIND9系が存在
(4)Dynamic DNSはBIND8系とBIND9系でサポート
(A)BIND8系の最新版は8.2.5
(B)BIND9系の最新版は9.2.0
No.21
ソースコード(1)
$DISTDIR/bind_src/src/bin/named/ns_update.c
/* Process zone section. */
...
if (zocount != 1 || type != T_SOA) {
...
hp->rcode = FORMERR;
return (Finish);
}
...
/* we should be authoritative */
if (!(zp->z_flags & Z_AUTH)) {
...
hp->rcode = NOTAUTH;
return (Finish);
}
No.22
ソースコード(2)
$DISTDIR/bind_src/src/bin/named/ns_update.c
if (zp->z_type == Z_SECONDARY) {
/*
* XXX The code below is broken.
* Until fixed, we just return NOTIMPL.
*/
#if 1
hp->rcode = ns_r_notimpl;
return (Finish);
#else
/* We are a slave for this zone, forward it to the master. */
...
#endif
}
/*
* We are the primary master server for this zone,
* proceed further and process update packet
*/
...
No.23
動作テスト環境
BSD/OS 3.1上でBIND8.2.5(named)を走行
<設定ファイル>
(1)/etc/named.conf
(2)/etc/namedb/localhost.rev
(3)/etc/namedb/named.hosts
(4)/etc/namedb/named.rev
(5)/etc/namedb/named.root
(6)/etc/resolv.conf
<http://www.swlab.csce.kyushu-u.ac.jp/~yamamoto/ds/settings/>
・BIND8.2.5付属の動的更新ツール(nsupdate)を使用して、
A RR(正引き)の更新(削除・追加)
No.24
動作テスト結果(1)
(fubuki)</etc/namedb>$ nslookup
Default Server: fubuki.yamamoto.csce.kyushu-u.ac.jp
Address: 133.5.22.115
> tender.yamamoto.csce.kyushu-u.ac.jp
Server: fubuki.yamamoto.csce.kyushu-u.ac.jp
Address: 133.5.22.115
Name: tender.yamamoto.csce.kyushu-u.ac.jp
Address: 133.5.22.108
> (Ctrl-D)
(fubuki)</etc/namedb>$ nsupdate
> update delete tender.yamamoto.csce.kyushu-u.ac.jp IN A
>
> (Ctrl-D)
No.25
動作テスト結果(2)
(fubuki)</etc/namedb>$ nslookup
Default Server: fubuki.yamamoto.csce.kyushu-u.ac.jp
Address: 133.5.22.115
> tender.yamamoto.csce.kyushu-u.ac.jp
Server: fubuki.yamamoto.csce.kyushu-u.ac.jp
Address: 133.5.22.115
*** fubuki.yamamoto.csce.kyushu-u.ac.jp can't find
tender.yamamoto.csce.kyushu-u.ac.jp: Non-existent host/domain
> (Ctrl-D)
(fubuki)</etc/namedb>$ nsupdate
> update add tender.yamamoto.csce.kyushu-u.ac.jp 1200 IN A 133.5.22.105
>
> (Ctrl-D)
No.26
動作テスト結果(3)
(fubuki)</etc/namedb>$ nslookup
Default Server: fubuki.yamamoto.csce.kyushu-u.ac.jp
Address: 133.5.22.115
> tender.yamamoto.csce.kyushu-u.ac.jp
Server: fubuki.yamamoto.csce.kyushu-u.ac.jp
Address: 133.5.22.115
Name: tender.yamamoto.csce.kyushu-u.ac.jp
Address: 133.5.22.105
> (Ctrl-D)
※PTR RR(逆引き)は、別途更新(削除・追加)する必要あり
No.27
動作テスト結果(4)
(fubuki)</etc/namedb>$ cat named.hosts.log
;BIND LOG V8
[DYNAMIC_UPDATE] id 31008 from [133.5.22.115].1038 at 1008069068
(named pid 75):
zone: origin yamamoto.csce.kyushu-u.ac.jp class IN serial 2001121101
update: {delete} tender.yamamoto.csce.kyushu-u.ac.jp. IN A
[INCR_SERIAL] from 2001121101 to 2001121102 Tue Dec 11 20:12:00 2001
[DYNAMIC_UPDATE] id 38668 from [133.5.22.115].1053 at 1008069281
(named pid 75):
zone: origin yamamoto.csce.kyushu-u.ac.jp class IN serial 2001121102
update: {add} tender.yamamoto.csce.kyushu-u.ac.jp. 1200 IN A 133.5.22.105
[INCR_SERIAL] from 2001121102 to 2001121103 Tue Dec 11 20:19:41 2001
No.28