280 likes | 434 Views
Dynamic DNS. 情報工学専攻 谷口研究室 山本 淳. 発表手順. 1 . DNS の概要 2 . Dynamic DNS の概要 3 .実装( BIND ) 4 .動的更新ツール( nsupdate ). DNS ( Domain Name System ). ( 1 ) TCP/IP ネットワークにおける名前解決サービスを提供 ( A )正引き: ドメイン名 ー> IP アドレス ( B )逆引き: IP アドレス ー> ドメイン名 ( C )クライアント / サーバ方式で動作
E N D
Dynamic DNS 情報工学専攻 谷口研究室 山本 淳
発表手順 1.DNSの概要 2.Dynamic DNSの概要 3.実装(BIND) 4.動的更新ツール(nsupdate)
DNS(Domain Name System) (1)TCP/IPネットワークにおける名前解決サービスを提供 (A)正引き: ドメイン名 ー> IPアドレス (B)逆引き: IPアドレス ー> ドメイン名 (C)クライアント/サーバ方式で動作 (2)階層構造の分散データベース方式で名前空間を管理 (A)ゾーン単位で情報を管理 (B)ゾーン単位で管理を委任 (C)ドメインとゾーンは不一致可 (3)RFC1034とRFC1035で定義
名前空間(ドメインとゾーン) . (root) jp uk ac co kyushu-u <ドメイン!=ゾーンの例> ・csce.kyushu-u.ac.jpドメイン ・csce.kyushu-u.ac.jpゾーン <ドメイン==ゾーンの例> ・st.csce.kyushu-u.ac.jpドメイン ・st.csce.kyushu-u.ac.jpゾーン csce swlab st ※各ゾーンごとに1台以上のDNSサーバが存在
DNSサーバの種類 (1)プライマリとセカンダリ (A)プライマリ: ゾーンファイルの原本から情報を取得 (B)セカンダリ: ゾーンファイルの複製から情報を取得 (2)マスターとスレーブ (A)マスター: ゾーン転送における転送元 (B)スレーブ: ゾーン転送における転送先 プライマリ マスター ゾーン転送 セカンダリ スレーブ
DNSの動作 recursive query .(root) DNSサーバ iterative query (2) jp DNSサーバ ローカルのDNSサーバ (3) (4) (1)www.kyushu-u.ac.jp (6)133.5.1.2 ac.jp DNSサーバ (5) DNSクライアント kyushu-u.ac.jp DNSサーバ
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)”
差分ゾーン転送(RFC1995) (1)ゾーン転送 ・マスターがスレーブにゾーンファイルの内容を 転送すること (2)転送方式 (A)完全転送(AXFR) ゾーンファイル内容の全体を転送 (B)差分転送(IXFR) ゾーンファイル内容の差分を転送 ゾーン転送に伴う無駄なトラフィックの抑制 ※ゾーンファイルのバージョンは、SOA RRの serialフィールド値で管理
ゾーンの更新通知(RFC1996) (1)ゾーン転送の契機 スレーブからマスターへの転送要求の発行 (2)要求の発行契機 (A)定期間隔 SOA RRのrefreshフィールド値の間隔で要求を発行 (B)更新通知 マスターからの更新通知により要求を発行 マスターとスレーブ間での情報一致の促進
DNSの動的更新(RFC2136) (1)DNSのオリジナル設計 (A)静的に構成されたデータベースの管理 (B)更新はゾーンファイルの手動編集により実施 (2)動的更新の必要性 (A)ゾーンファイルの管理コストの削減 (B)DHCPクライアントへの固定ドメイン名の割り当て UPDATE命令で指定ゾーンのRRの追加・削除を可能に
利用例(DHCPとDynamic DNS) Hw Address | Host Name table DHCP Server DNS 2 send IP-Host infomation 3 DNS update 1 allocate IP address DHCP Client [松澤ら, 2000]
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の集合
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にセット
Headerセクション(2) RCODE: 応答コード 0 1 2 3 4 5 YXDOMAIN YXRRSET NXRRSET NOTAUTH NOTZONE 6 7 8 9 10 NOERROR FORMERR SERVFAIL NXDOMAIN NOTIMP REFUSED ZOCOUNT: Zoneセクションに含まれるRRの数 PRCOUNT: Prerequisiteセクションに含まれるRRの数 UPCOUNT: Updateセクションに含まれるRRの数 ADCOUNT: Additional Dataセクションに含まれるRRの数
Zoneセクション ・更新するゾーンを指定 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 ZNAME ZTYPE ZCLASS ZNAME : ゾーンの名前 ZTYPE: SOAでなければならない ZCLASS : ゾーンのクラス ※すべての更新は、同一ゾーンに対してでなければならない
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 ANY ANY NONE NONE zone type ANY rrset ANY rrset rrset meaning (4) (1) (5) (3) (2) rdata empty empty empty empty rr ※ttlはすべて0 にセット
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にセット
Server Behavior(1) DNS UPDATEパケットの処理 (1)プライマリ DNS UPDATEパケットの各セクションを処理 (2)セカンダリ ・DNS UPDATEパケットをプライマリに向かって フォワード プライマリ マスター フォワード セカンダリ スレーブ
Server Behavior(2) <処理手順> (1)Zoneセクション (2)Prerequisiteセクション (3)Updateセクション (4)Requestorへの応答 DNS UPDATE (1)原子性(atomicity) (A)全必要条件を満足 ー> 全更新を反映 (B)全必要条件を不満 ー> 全更新を取消 (2)ゾーンのバージョン管理 ・更新を反映した場合、SOA RRのserialフィールド値 をインクリメント
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)
実装(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
ソースコード(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); }
ソースコード(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 */ ...
動作テスト環境 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(正引き)の更新(削除・追加)
動作テスト結果(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)
動作テスト結果(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)
動作テスト結果(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(逆引き)は、別途更新(削除・追加)する必要あり
動作テスト結果(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