Dynamic DNS
description
Transcript of Dynamic DNS
Dynamic DNS
情報工学専攻 谷口研究室山本 淳
No.2
発表手順
1 . DNS の概要2 . Dynamic DNS の概要3 .実装( BIND )4 .動的更新ツール( nsupdate )
No.3
DNS ( Domain Name System )
( 1 ) TCP/IP ネットワークにおける名前解決サービスを提供 ( A )正引き: ドメイン名 ー> IP アドレス ( B )逆引き: IP アドレス ー> ドメイン名 ( C )クライアント / サーバ方式で動作
( 2 )階層構造の分散データベース方式で名前空間を管理 ( A )ゾーン単位で情報を管理 ( B )ゾーン単位で管理を委任 ( C )ドメインとゾーンは不一致可
( 3 ) RFC1034 と RFC1035 で定義
No.4
名前空間(ドメインとゾーン)
. (root)
jp
ac
kyushu-u
csce
swlab
uk
co
<ドメイン!=ゾーンの例>・ csce.kyushu-u.ac.jp ドメイン・ csce.kyushu-u.ac.jp ゾーン
<ドメイン==ゾーンの例>・ st.csce.kyushu-u.ac.jp ドメイン・ st.csce.kyushu-u.ac.jp ゾーン
st
※ 各ゾーンごとに 1 台以上の DNS サーバが存在
No.5
DNS サーバの種類
( 1 )プライマリとセカンダリ ( A )プライマリ: ゾーンファイルの原本から情報を取得 ( B )セカンダリ: ゾーンファイルの複製から情報を取得
( 2 )マスターとスレーブ ( A )マスター: ゾーン転送における転送元 ( B )スレーブ: ゾーン転送における転送先
プライマリ
セカンダリ
マスター
スレーブゾーン転送
No.6
DNS の動作
DNS クライアント
ローカルの DNS サーバ
( 1 ) www.kyushu-u.ac.jp
.(root)DNS サーバ
jpDNS サーバ
ac.jpDNS サーバ
kyushu-u.ac.jpDNS サーバ
( 6 ) 133.5.1.2
( 2 )
( 3 )
( 4 )
( 5 )
recursive queryiterative query
No.7
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.8
差分ゾーン転送( RFC1995 )
( 1 )ゾーン転送 ・マスターがスレーブにゾーンファイルの内容を 転送すること
( 2 )転送方式 ( A )完全転送( AXFR ) ゾーンファイル内容の全体を転送 ( B )差分転送( IXFR ) ゾーンファイル内容の差分を転送
ゾーン転送に伴う無駄なトラフィックの抑制
※ ゾーンファイルのバージョンは、 SOA RR の serial フィールド値で管理
No.9
ゾーンの更新通知( RFC1996 )
( 1 )ゾーン転送の契機 スレーブからマスターへの転送要求の発行
( 2 )要求の発行契機 ( A )定期間隔 SOA RR の refresh フィールド値の間隔で要求を発行 ( B )更新通知 マスターからの更新通知により要求を発行
マスターとスレーブ間での情報一致の促進
No.10
DNS の動的更新( RFC2136 )
( 1 ) DNS のオリジナル設計 ( A )静的に構成されたデータベースの管理 ( B )更新はゾーンファイルの手動編集により実施
( 2 )動的更新の必要性 ( A )ゾーンファイルの管理コストの削減 ( B ) DHCP クライアントへの固定ドメイン名の割り当て
UPDATE 命令で指定ゾーンの RR の追加・削除を可能に
No.11
利用例( DHCP と Dynamic DNS )
DHCP Server
DHCP Client
DNS
1allocate IP
address
2send IP-Hostinfomation
Hw Address|
Host Nametable
3DNS update
[ 松澤ら , 2000]
No.12
DNS UPDATE パケットの構造
HeaderZone
PrerequisiteUpdate
Additional Data
specifies the zone to be updatedRRs or RRsets which must (not) preexistRRs or RRsets to be added or deletedadditional data
・ RR のエントリ( name, type, class, ttl, rdlength, rdata )のうち ( name, type, class )が同じ RR の集合
RRset:
No.13
Header セクション( 1 )
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15ID
QR Opcode Z RCODE ZOCOUNTPRCOUNTUPCOUNTADCOUNT
ID : 要求を行うプログラムによって割り当てられる識別子QR : 要求( 0 )、応答( 1 )Opcode : 要求の種類、 UPDATE ( 5 )Z : 予約、すべて 0 にセット
No.14
Header セクション( 2 )
RCODE: 応答コード
ZOCOUNT: Zone セクションに含まれる RR の数PRCOUNT: Prerequisite セクションに含まれる RR の数UPCOUNT: Update セクションに含まれる RR の数ADCOUNT: Additional Data セクションに含まれる RR の数
012345
6 7 8 910
NOERRORFORMERRSERVFAILNXDOMAINNOTIMPREFUSED
YXDOMAINYXRRSETNXRRSETNOTAUTHNOTZONE
No.15
Zone セクション
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15
ZNAME
ZTYPEZCLASS
ZNAME : ゾーンの名前ZTYPE : SOA でなければならないZCLASS : ゾーンのクラス
※ すべての更新は、同一ゾーンに対してでなければならない
・更新するゾーンを指定
No.16
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
※ttl はすべて 0 にセット
classANYANY
NONENONEzone
typeANYrrsetANYrrsetrrset
rdataemptyemptyemptyempty
rr
meaning( 4 )( 1 )( 5 )( 3 )( 2 )
<構文>
No.17
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
※ ( 1 )以外、 ttl は すべて 0 にセット
classANYANY
NONEzone
typeANYrrsetrrsetrrset
rdataemptyempty
rrrr
meaning( 3 )( 2 )( 4 )( 1 )
<構文>
No.18
Server Behavior ( 1 )
プライマリ
セカンダリ
マスター
スレーブフォワード
( 1 )プライマリ DNS UPDATE パケットの各セクションを処理( 2 )セカンダリ ・ DNS UPDATE パケットをプライマリに向かって フォワード
DNS UPDATE パケットの処理
No.19
Server Behavior ( 2 )
<処理手順> ( 1 ) Zone セクション ( 2 ) Prerequisite セクション ( 3 ) Update セクション ( 4 ) Requestor への応答
( 1 )原子性( atomicity ) ( A )全必要条件を満足 ー> 全更新を反映 ( B )全必要条件を不満 ー> 全更新を取消( 2 )ゾーンのバージョン管理 ・更新を反映した場合、 SOA RR の serial フィールド値 をインクリメント
DNS UPDATE
No.20
Requestor Behavior前提: ・更新するゾーンの名前と当該ゾーンの DNS サーバ (プライマリまたはセカンダリ)は既知
ID:Opcode:Zone zcount:Zone zname:Zone zclass:Zone type:Prerequisite Section:Update Section:Additional Data Section:
(new)UPDATE1(zone name)(zone class)T_SOA(see previous page)(see previous page)(empty)
DNS UPDATE パケット
No.21
実装( 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.22
ソースコード( 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.23
ソースコード( 2 )
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 */ ...
$DISTDIR/bind_src/src/bin/named/ns_update.c
No.24
動作テスト環境
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.25
動作テスト結果( 1 )(fubuki)</etc/namedb>$ nslookupDefault Server: fubuki.yamamoto.csce.kyushu-u.ac.jpAddress: 133.5.22.115
> tender.yamamoto.csce.kyushu-u.ac.jpServer: fubuki.yamamoto.csce.kyushu-u.ac.jpAddress: 133.5.22.115
Name: tender.yamamoto.csce.kyushu-u.ac.jpAddress: 133.5.22.108> (Ctrl-D)
(fubuki)</etc/namedb>$ nsupdate> update delete tender.yamamoto.csce.kyushu-u.ac.jp IN A>> (Ctrl-D)
No.26
動作テスト結果( 2 )(fubuki)</etc/namedb>$ nslookupDefault Server: fubuki.yamamoto.csce.kyushu-u.ac.jpAddress: 133.5.22.115
> tender.yamamoto.csce.kyushu-u.ac.jpServer: fubuki.yamamoto.csce.kyushu-u.ac.jpAddress: 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.27
動作テスト結果( 3 )(fubuki)</etc/namedb>$ nslookupDefault Server: fubuki.yamamoto.csce.kyushu-u.ac.jpAddress: 133.5.22.115
> tender.yamamoto.csce.kyushu-u.ac.jpServer: fubuki.yamamoto.csce.kyushu-u.ac.jpAddress: 133.5.22.115
Name: tender.yamamoto.csce.kyushu-u.ac.jpAddress: 133.5.22.105> (Ctrl-D)
※PTR RR (逆引き)は、別途更新(削除・追加)する必要あり
No.28
動作テスト結果( 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 2001121101update: {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 2001121102update: {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