ク・ミニ実験室⑩ ネットワー ドメイン名がすでにあったときの Dynamic Update の通信 図 12 を・ ASTEG 下 e & 、 [ キャプチャデ、一タく pr eq ー・れ xdomain 上れ c 〉 1 ー区 ミファイルの偏集 ( 日表示 ( Ⅵキャプチャ 0 モニタツール (I) 設定 0 ウインドウ ( 動 ヘルプ凹 LAN ロー白住◎多ン斗目 受信先アド ... マゴ . マサマリ フ . マ発信元アド .. SOA レコードの 0 ホスト A DNS サー丿ーー 0 Ⅲ : 3 5 143 OPIIIDE:O RET= 0 NAME:gal axy. exampl e. com TYPE= SOA DNS 問合せと応答 1 DNSÜ—) ーー ホスト A R ID : 35143 OPCODE= 0 T : 0 NAME:gaI axy.exampl e. com TYPE-SOÅ DNS DNSÜ—,I\— 2 ホスト A DNS 0 ID ニ 21314 CIPCODE:5 T : 0 NAME=example.com TYPE:u Update 要求と応答 3 D サーパー ホスト A R ID : 21314 OPCODE:5 RET=O DNS Zone Zone Name Type C 55 Prerequ site Name Type C s き T i To 凵能 Resource Data Length Llpdat e Type C ss Time To 凵 Resource D 8 Length Ho Address Dyna mic lJpdate examp ー e. com 6 (OA: marks [ start of を zo of authority) 1 (the lnternet) ゾーン情報 galaxy.example.com 255 (ANY: a req リ est 「。「 all records) すべてのタイプのレコード 254 (None) 0 存在しなければ upd e を実行 0 ga ー axy. examp 尾 . com 1 (): & host r ” s ) 1 代 lnternet) 86400 4 条件 追加するレコード 132.168.1 コ 02 [ 3 / 4 ] IO ・ 2 ホスト A ー > DNS サーハー 0 NS 図 13 ドメイン名がすでにあったときの Dynamic Update の応若 / ヾケット ( DNS ) The Doma i n Name Syst em 1 denti f に i on 2 1 3 1 4 0 xA88 6 日 5 Update 要求の応答 Response : : . 0 1 0 1 . Updat e 0pcde Non-aut ho 「社 i answer AA Not レ邯に ed TC Recu rs i on not desi red RD Recu rsi on ava i lab 厄 Non-authenti cat ed data Checki ng enab led Name Ex i sts when 社 shou 尾 not : Response Code . 0 1 1 0 Number of Zone RRs 0 0 resou rce record( S) Numbe r of P re requ に ite RRs 0 resource record ( S ) Numbe r 0f Updat e RRs 0 resou rc:e 「 e00 「 d ( 5 ) Numbe r of Add は i on 引 RRs 0 工ラー : 存在すべきではない ドメイン名があった 図 13 は、 Update 要求に対する応答バケットの詳細 です。 Response Code" カゞ、、 Name Exists when it 、、ドメイン名カ在しない " should not" となっており、 という条件を満たさなかったためにエラーになったことを 知らせています。 最後の Update は追加するレコードの情報です。問合 せに対する応答 (Answer セクション ) と同様の形式で、 ドメイン名 : galaxy.example.com ・タイプ : A レコード クラス : lnternet ・ TTL ( 生存時間 ) : 86 , 400 秒 . IP アドレス : 192.168.1.102 などを指定しています。 差分ゾーン転送 Dynamic Update を利用した機能の 1 つに、、差分ゾ 57 UNIX MAGAZ 工 NE 2006 . 4
図 9 ゾーンを freeze させた際の example.com/zone ファイル 192 . 168 . 1 . 102 : $ORIG 工 N $TTL 8 6 4 0 0 example . com $OR 工 G 工 N example galaxy nebula stardust 1 day 工 N SOA NS . com . ns . example . COtn. 2 0 0 6 0 215 0 2 10 8 0 0 3 6 0 0 6 0 4 8 0 0 8 6 4 0 0 ns . example . COtn. 19 2 . 16 8 . 1 . 101 192 . 168 . 1 . 1 19 2 . 16 8 . 1 . 10 0 旧アドレスを変更 192 . 168 . 1 . 105 ・ : 2 0 0 6 0 215 0 3 ns . example . com. root . . . com. refresh ( 3 hours) retry ( 1 hour) expire ( 1 week) minimum ( 1 day) 図 10 ゾーンファイルの変見点 example . COIII galaxy という状態です。 工 N SOA ・← Dynamic Update で追加された galaxy.example.com の A レコード r00 し . ns . example . com. ( serial 三←シリアル番号を 1 増やす DNS サーノヾーのメッセージで、ゾーン・情報の再ロード を確認してください。シリアル番号をみれは新しいゾー ファイルがロードされたことが分かります。 ン $ rndc loaded 17—Feb —s 192 . 168 . 1 . 1 unfreeze example . com 最後にゾーン情報の更新を許可します。 serial 2006021503 ー 2006 01 : 35 : 41 . 282 zone example . com/IN: それでは、ゾーンファイルを変更してみましよう。ここ では、 example.com ゾーンのゾーンファイル example. com.zone を修正します。ゾーン情報が Dynamic Up- date で更新されないように、事前に rndc freeze を実 $ rndc —s 192.168.1.1 freeze example. com 行します。 編集したゾーンファイルを保存し、 rndc reload で ます。また、シリアル番号を 1 増やします ( 図 10 ) 。 ample.com の IP アドレスを 192.168.1.105 に変更し こでゾーンファイルを手作業で編集し、 galaxy ・ ex- レコードが追加されています ( 図 9 ) 。 ゾーンファイルをみると、 galaxy ・ example.com の A example . com/IN' : success 17 ー Feb ー 2006 01 : 29 : 09.656 freezing zone たというメッセージか表示されます。 すると、 DNS サーバーにはゾーンの、、 freeze" が成功し DNS サーバーに読み込みます。 54 zone reload queued $ rndc —s 192.168.1.1 reload example. com DNS サーバーのメッセージに されれは成功です。 unfreeze" したと表示 17 ー Feb ー 2006 01 : 37 : 19.350 unfreezing zone example . com/IN' : success 念のために dig コマンドを実行し、 IP アドレスが 192. 168.1.102 から 192.168.1.105 に変わっているかを確認 します ( 図 11 ) 。 freeze 中の問合せ こで、 freeze の際に DNS サーバーがどのような振舞 いをするのかを調べてみましよう。ます、 freeze している DNS サーバーに問合せをしてみます。あらかじめ、 rndc —s 192 . 168 . 1 . 1 freeze example . com UN 工 X MAGAZ 工 NE 2006 . 4
図 3 example.com/zone ファイル $TTL 86400 IN SOA ns . example r00 セ . . example . com. . com . 2 0 0 6 0 215 01 serial 10 8 0 0 refresh ( 3 hours) retry ( 1 hour) 3 6 0 0 expire ( 1 week) 6 0 4 8 0 0 minimum ( 1 day) 8 6 4 0 0 192 . 16 8 . 1 . 1 ・← DNS サーノヾーのアドレスは 192.168.1.1 ・← 2 台のホストのアドレスが登録されている : nebula 192 . 168 . 1 . 10 0 : stardust 192 . 16 8 . 1 . 101 三 図 4 Dynamic Update でした際の DNS サーバーのメッセージ 16 ー Feb ー 2006 00 : 39 : 10 . 808 client 192 .168 . 10 .100 # 36242 : updating zone ー example . com/工 N' : adding an RR at ー galaxy. example . com' A 16 ー Feb ー 2006 00 : 39 : 10 . 808 journal file example. com. zone . jnl does not exist , creating 土し galaxy.example.com の登録に成功 ジャーナル・ファイルを作成した 図 5 galaxy ・ example.com か泉されていることを石忍 $ d 土 9 @192 .168 . 1 . 1 galaxy . example . com くく > > DiG 9 . 3 . 1 くく > > @192 .168 . 1 . 1 galaxy. example . com ( 1 server found) 問合せに成功 910ba1 op に土 ons : printcmd GO セ answer: ->>HEADER くくー opcode : QUERY, : status : NOERROR,E id: 1831 flags : qr aa rd ra; QUERY: 1 ′ ANSWER: 1 ′ AUTHOR 工 TY: 1 ′ ADD 工 TIONAL: 1 ANSWER SECTION : galaxy. example . com . ANSWER SECTION に 問合せ結果が表示された 192 . 168 . 1 . 102 : 8 6 4 0 0 工 N すると、 ・ galaxy.example.com の A ( アドレス ) リソースレコ ードが登録された ・ジャーナル・ファイル (example.com/zone.jnl) が作 成された ことが分かります。 dig プログラムで galaxy. example. com の問合せ結果も確認しておきましよう ( 図 5 ) 。 こで正しくない手川頁で DNS サーバーを停止 さて、 させてみます。 Dynamic Update を利用している場合、 DNS サーバーは本来なら rndc プログラムで安全に停止 させなくてはなりませんが、 こでは kill プログラムで強 制的に停止します。 DNS サーノヾー上で、 # kill -TERM named のプロセス ID または、 # kill —TERM ( cat /var/run/named. pid ( を実行し、 named プロセスを停止させてください。なお、 上記の /var/run/named. pid は named のプロセス ID カ第泉されているファイルです。 ホストの登録から DNS サーバーの停止までの操作を手 早くおこなうと、 galaxy ・ example.com の情報が、 ・ジャーナル・ファイルや動作中の DNS サーバーのメモ リには、、登録されている " ・ゾーンファイルには、、登録されていない " という状態になります。ゾーンファイル /etc/namedb/ example ・ com.zone を調べ、最初の状態 ( 図 3 ) と同じ内 50 UNIX MAGAZINE 2006.4
図 7 シャーナル・ファイルとゾーンファイルにイ合を生じさせる example.com ソーンの DNS サーバー ( 192.168.1.1 ) ① Dynamic Update で シリアル番号は 2006021502 記録されたジャーナル・ファイル。 ② galaxy.example.com の登録情報が example.com/zone.jnl ( 192.168.1.102 ) を登録 galaxy.example.com ー ③ DNS サーバーを k Ⅲプログラムで galaxy.example.com ( 192.168.1.105 ) を追加 ④ゾーンファイルを手作業で編集 example.com/zone NS SOA ゾーンファイルは更新されていない 強制停止 シリアル番号をジャーナル・ファイルのものより大きくする 表 1 ジャーナル・ファイルとゾーンファイルに生じた合 galaxy ・ example.com の IP アドレス ジャーナル・ファイル ゾーンファイル 192.168.1.102 192.168.1.105 シリアル番号 2006021502 2006021503 図 8 DNS サーバーへの問合せに知攵 $ d 土 9 @192 .168 . 1 . 1 galaxy. example . com くく > > DiG 9 . 3 . 1 くく > > @192 .168 . 1 . 1 galaxy. example . com ( 1 server found) global op し土 ons : printcmd GO む : ->>HEADER<<- opcode : QUERY, : status : flags : qr rd ra; QUERY: 1 ー ANSWER: DNS サーバーのエラー SERVFAIL,: id: 453 0 ′ AUTHORITY : 0 ′ ADDITIONAL : 0 QUEST 工 ON SECT 工 ON: ;galaxy. example . com. Query time : 2 msec 工 N ANSWER SECT ℃ N がなく、応答が返されなかった SERVER : 192 . 16 8 . 1 . 1 # 5 3 ( 192 . 16 8 . 1 . 1 ) WHEN : Thu Feb 16 0 0 : 4 8 : 2 5 2 0 0 6 MSG SIZE rcvd: 36 こまでの手川頁の概要は図 7 のとおりです。この状態で ジャーナル・ファイルとゾーンファイルの内容に不整合か $ named -g います。 生じています俵 1 ) 。 は問題なくできますが、気になるメッセージが表示されて 次に、 DNS サーバーを起動してみましよう。起動自体 52 from '/etc/named . conf ' 16 ー Feb ー 2006 00 : 47 : 22.412 16 ー Feb ー 2006 00 : 47 : 22.401 starting BIND 9.3.1 —g loading configuration 16 ー Feb ー 2006 00 : 47 : 22 .454 zone example . com/IN: 」 ournal rollforward failed : j ournal out 0f sync with zone 16 ー Feb ー 2006 00 : 47 : 22 .456 running どうやら、、、ジャーナル・ファイルからのゾーン情報の 復旧に失敗した " ようです。 図 8 は、 dig プログラムで galaxy.example.com を問 い合わせた結果です。 ANSWER SECTION はなく、問 status: SERVFAIL" と 合せに失敗してしまいました。 UNIX MAGAZINE 2006.4
次の nsupdate コマンドは、 galaxy.example.com ド > quit > send ←工ラーが出力されないので処理に成功 192. 168. 1 . 102 > update add galaxy. example . com 86400 A > prereq nxdomain galaxy ・ example . com > server 192. 168 . 1 . 1 $ nsupdate メインがないときに A レコードを追加します。 の条件は満たされません。このときの nsupdate の実行結 prereq nxdomain galaxy. example . com 今度は galaxy.example.com ドメインがすでにあるため、 もう一度、同じ nsupdate コマンドを実行してみます。 加と同様です。 これまでみてきた Dynamic Update によるレコードの追 コマンドの実行結果や DNS サーバーのメッセージは、 an RR at 'galaxy. example . com' A 49407 : updating zone ) example . com/IN' : adding 17 ー Feb ー 2006 02 : 11 : 49 . 678 client 192 . 168. 10 . 100 # 示すメッセージが表示されます。 DNS サーバーには、レコードの追加に成功したことを 工ラーメッセージ : ドメインが存在する > quit ↑ update failed: YXDOMAIN > send 192 . 168. 1 . 102 > update add galaxy. example . com 86400 > prereq nxdomain galaxy. example . com > server 192. 168. 1 . 1 $ nsupdate 果は以下のようになります。 これは、、、名前が使われていないという条件を満たさな use ) prerequisite not satisfied (YXDOMAIN) unsuccessful : galaxy. example . com: 土Ⅱ 49407 : updating zone ) example . com/IN ) : update 17 ー Feb ー 2006 02 : 15 : 21 .435 client 192 .168.10.100 # ました。 また、 DNS サーバーには以下のメッセージが表示され update コマンドが失敗したことを示しています。 示し、 YXDOMAIN ( ドメインがすでにあった ) ために nsupdate は、、、 update failed: YXDOMAIN" と表 56 かった " という御未です。 条件付き Dynamic Update の通信 このときの通信の様子をネットワーク・アナライザ 1 で となっています。 ・後半の 2 回は Update 要求とその応答 SOA レコードに対する問合せと応答 ・前半の 2 回は galaxy ・ example.com が属するゾ ットは全部で 4 回流れていますが、 namic Update が失敗したときの通信の様子です。バケ 図 12 は、指定したドメインがすでにあったため、 Dy- 詳しく調べてみましよう。 ーンの UNIX MAGAZ 工 NE 2006 . 4 の情報がないため Additonal セクションは現れていません。 2 DNS バケットには情報があるセクションだけカ見れます。図 12 では助日 示はリリース中のバージョンとは異なります。 1 ASTEC Eyes (http://www.asteceyes.com/)o 解析画面の表 ・ Class : None ( 存在しない場合 ) ・ Type : ANY ( すべてのタイプのレコードで ) ・ Name : galaxy. example. corn ( 条件にするドメイン名 条件が入ります。 条件セクションには、 prereq コマンドで指定した以下の ーンの情報になっています。 するゾーン情報を表します。図 12 では、 example. corn ゾ ゾーン情報のセクションは、 Dynamic Update で変更 追加セクション (Additional) ・追加するレコードのセクション (Update) ・条件セクション (Prerequisite) ・ゾーン情報のセクション (Zone) 類です 2 。 Dynamic Update のバケットのセクションは次の 4 種 の 4 種類のセクションから構成されています。しかし、 追加セクション (Additional) 権限情報セクション (Authority) ・問合せに対する応答セクション (Answer) ・問合ぜ情報のセクション (Question) ています。通常の DNS の問合せと応答のバケットは、 図 12 の下半分は、 Update 要求バケットの詳細を表示し こで注目したいのは、 Update 要求とその応答です。
ネットワー ク・ミニ実験室⑩ 図 16 スレーブサーバーの言綻 (named. conf の抜粋 ) zone . file "example . com. zone . bak"; ・←ゾーン情報のコピーを保存するファイルの名前 { 192 . 16 8 . 1 . 1 ー masters 図 17 DNS サーバーのメッセージ ( ゾーン車医 ) ( 1 ) マスターサーバーのメッセージ 17 ー Feb ー 2 0 0 6 17 : 17 : 5 2 . 13 0 17 ー Feb ー 2 0 0 6 17 : 18 : 0 3 . 4 5 9 :AXFR: started 17 ー Feb ー 2 0 0 6 17 : 18 : 0 3 . 4 6 0 •AXFR: ended ・ヘゾーン転送 ( 2 ) スレーブサーバーのメッセージ 17 ー Feb ー 2 0 0 6 17 : 18 : 0 3 . 416 17 ー Feb ー 2 0 0 6 17 : 18 : 0 3 . 416 } ←マスターサーバーの旧アドレス zone example . com/工 N: sending notifies 三 (serial client 192 .168 . 1 . 2 # 1105 : transfer Of 'example . com/工 N'• client 192 .168 . 1 . 2 # 1105 : transfer Of 'example . com/工 N'• ゾーンのシリアル番号 2 圓 60215 ・ 6 ・ } ゾーン情報の通知 ゾーン転送 zone example . com/工 N : Transfer started . transfer 0f 'example . com/工 N' from 192 .168 . 1 . 1 # 53 : transferred? serial 2006021501 : ゾーン転送 transfer 17 ー Feb ー 2006 17 : 18 : 03 . 463 transfer of 'example . com/工 N' from 192 . 16 1 . 1 # 53 : end of 17 ー Feb ー 2006 17 : 18 : 03 . 463 zone example . com/工 N: connected using 192 .168 . 1 . 2 # 1105 ゾーン転送で受け取ったシリアル番号 notify explicit ; also—notify { 192 . 168 . 1 . 2 ; } ; は、ゾーン情報の変更通知の設疋で、 also-notify で指定し たホストだけに通知を送ります。 参考までに、スレープサーノヾーの named. conf ファイル の z 。 ne ステートメントの言当を図 16 に示します。 スレープサーバーのメッセージ、 います。 送 ( ゾーン情報全体の転送 ) がおこなわれたことを表して ジが表示されます。メッセージ中の、、 AXFR " はゾーン転 のメッセージ、スレープサーバーには図 17 ー 2 のメッセー 両方が起動した直後に、マスターサーバーには図 17 1 を起動してください。 準備ができたら、マスターサーバーとスレ 差分ゾーン転送の実験 ノミー 17 ー Feb ー 2006 17 : 18 : 03.463 zone example. com/IN: UNIX MAGAZINE 2006 . 4 削除と追加をおこないます。 次に、ホスト A から nsupdate を利用してレコードの 021501 " であることを憶えておいてください。 では、転送されたゾーン情報のシリアル番号の値が、、 2006 transferred serial 2006021501 $ nsupdate > server 192 . 168 . 1 . 1 > update delete stardust . example . com > update add galaxy ・ example . com 86400 A - 192. 168 . 1 . 102 > send > quit update delete でレコードを削除し、 update add でレ コードを追加したあと、 send でコマンドをマスターサーバ ーに送っています。 レコードを操作したら、もう一度 DNS サーバーのメッ セージを確認しておきましよう ( 図 18 ) 。今度のログは、 ・ Dynamic Update によるレコードの削除と追加 ・ゾーン情報の変更通知 差分ゾーン輯去 が混在する賑やかな状態になっています。 マスターサーバーのゾーン情報の通知のメッセージが、 、 sending notifies (serial 2006021502 ) " となっている ことから、スレープサーバーに、、ゾーン情報カ畯更されて シリアル番号が 2006021502 になりましたよ " と伝えてい ることカみ取れます。スレープサーバーはこのシリアル 番号と、以前に受け取ったシリアル番号、、 2006021501 " を 59
ネットワー ク・ミニ実験室⑩ 図 6 後の example ・ com ・ zone ファイル $TTL 86400 工 N SOA ns . example . com. r00 む . ns . example . com. ( : 2 0 0 6 0 215 0 3 三 10 8 0 0 3 6 0 0 6 0 4 8 0 0 8 6 4 0 0 NS refresh ( 3 hours ) retry ( 1 hour) expire ( 1 week) minimum ( 1 day) シリアル番号をジャーナル・ファイルに記録されている 2006021502 より大きくする nebu 1 a stardust galaxy n S r1S 192 . 168 . 1 . 1 19 2 . 16 8 . 1 . 10 5 三 19 2 . 16 8 . 1 . 101 19 2 . 16 8 . 1 . 10 0 galaxy.example.com の A レコードを追加。 旧アドレスはジャーナル・ファイルの内容とは ・←異なる 192.168.1.105 を設定 容であることを確認してください。 ーバーを、、 kill ー TERM " で停止しても実質的に問題は起 Dynamic Update を利用していない場合は、 DNS サ バーは、再起動時にこの記録をもとに最新のゾーン情報を イルには変更点カ第泉されています。そのため DNS サー ファイルを更新し損ねてしまいますが、ジャーナル・ファ 正しくない手順で DNS サーバーを停止すると、ゾーン シャーナル・ファイルからのソーン情報の復旧 更が反映されない " ことがあります。 いるときは、タイミングによっては、、ゾーンファイルに変 きませんでした。しかし、 Dynamic Update を利用して 16 ー Feb ー 2006 00 : 44 : 54.589 from '/etc/named. conf ' 16 ー Feb ー 2006 00 : 44 : 54.539 loading configuration 16 ー Feb ー 2006 00 : 44 : 54.527 $ named —g まず、停止させた DNS サーバーを再起動します。 復活させます。 starting BIND 9.3.1 —g ; ANSWER SECTION : ← ANSWER SECTION がある $ dig 9192.168.1.1 galaxy ・ example . com いて問し哈わせてみましよう。 続いて、 dig プログラムで galaxy.example.com につ 192.168.1.102 86400 IN galaxy ・ example. com. UNIX MAGAZ 工 NE 2006.4 容力鰒旧できているようです。 現れました。どうやら、 Dynamic Update で更新した内 ANSWER SECTION に galaxy.example.com が 正しい手 ) 頂で停止させなかったり、なんらかのトラブル で DNS サーバーが止まってしまった場合でも、ジャーナ ル・ファイルに記録カ長されていれば、 Dynamic Update で更新したゾーン情報は再起動時に自動的に復旧されます。 なかなかイリですね。 合が起きたときの振舞い ジャーナル・ファイルの働きはこれまでみてきたとおり ですが、、、うまく動いている " だけではおもしろくありませ ん。次は、ジャーナル・ファイルとゾーンファイルの内容 に不整合がある状態を作り、 DNS サーバーの動作がどう変 わるかを調べてみましよう。 ジャーナル・ファイルカられていない最初の状態にも う - ・ - 一度戻り、 1. 図 3 のゾーンファイルを使って DNS サーバーを起動 2. nsupdate で galaxy.example.com を登金求 3. ジャーナル・ファイルカ胙られたことを DNS サーバー のメッセージで確認してから、 kill コマンドで DNS サ ーバーを停止 という操作をおこなってください。さらに ル example.com/zone を・手作業で編集し、 ゾーンファイ ホスト galaxy.example.com を 192.168.1.105 とい う IP アドレスで追加 ・シリアル番号をジャーナル・ファイルに言泉された値よ りも大きい、、 2006021503 " に変更 のようにします。編集後のゾーンファイルを図 6 に示し ます。 51
図 18 DNS サーバーのメッセージ ( 変更適知と差分ゾーン車医 ) ( 1 ) マスターサーバーのメッセーシ 17 ー Feb ー 2 0 0 6 工 N delete 17 - Feb - 2 0 0 6 IN い adding 17 ー Feb - 2 0 0 6 creating 土し 17 ー Feb - 2 0 0 6 17 ー Feb ー 2 0 0 6 a11 rrsets from name ー stardust . example . COITI' 17 : 18 : 35 . 067 client 192 .168 .10 .100 # 45441 : updating zone ー example . com/ ー example . com/ an 17 : 18 : 3 5 RR at 17 : 18 : 3 5 . 067 17 : 18 : 3 5 . 075 . 067 client 192 .168 .10 .100 # 45441 : updating zone ー galaxy. example . com' A Dynamic U pdate journal file example . com. zone . jn1 does no に exist, 変更通知 ゾーン情報の zone example. C00/ 工 N:: sending notifies (serial 2006021502 ) - } 17 : 18 : 3 5 . 085 ・ヘ差分ゾーン転送 : X ended 17 ー Feb ー 2 0 0 6 17 : 18 : 3 5 . 0 8 5 : X started 17 ー Feb ー 2 0 0 6 17 : 18 : 3 5 . 0 81 17 - Feb ー 2 0 0 6 17 : 18 : 3 5 . 0 81 zone ー example . 17 - Feb - 2 0 0 6 17 : 18 : 3 5 . 0 81 ( 2 ) スレーブサーバーのメッセージ client 192 .168 . 1 . 2 # 1106 : transfer Of 'example . com/工 N'• client 192 .168 . 1 . 2 # 1106 : transfer Of 'example . com/工 N' ・ Dynamic Update で変更後の ソーンのシリアル番号 差分ゾーン転送 ゾーン情報の変更通知を client 192 .168 . 1 . 1 # 1155 : received notify for ← 受け取った zone example . com/IN: connected using 192 .168 . 1 . 2 # 1106 17 ー Feb ー 2006 17 : 18 : 35 . 097 三 journal fi1e example . com. zone . bak. jn1 does not exist, creating 土し 17 ー Feb ー 2006 17 : 18 : 35 .160 zone example . com/工 N: 17 ー Feb ー 2006 17 : 18 : 35 .160 transfer of 'example . com/工 N' f 0 f t ran s f e r ゾーン転送で受け取ったシリアル番号 スレーブサーバーでも Transfer started . transfer 0f 'example . com/工 N' from 192 .168 . 1 . 1 # 53 : transferred:;serial 2006021502 : 192 . 16 8 . 1 . 1 # 53 : end ゾーン転送 くらべ、ゾーン情報の更新をおこないます。 マスターサーバーの次のメッセージの、、 IXFR " は差分 ゾーン転送を意味します。図 17 のゾーン転送 (AXFR) と比較してみましよう。 スレープサーバー側のメッセージは、一見するとゾーン 転送 (AXFR) のメッセージと区別がつきません。違いと いえば、ジャーナル・ファイルの作成を知らせるメッセー ジが追加されていることくらいです。 ゾーン情報の変更通知 通信レベルでどのような情報がやりとりされているかを 調べてみましよう。図 19 は、レコードの変更から差分ゾ ーン転送までの通信をネットワーク・アナライザで解析し た画面と通信シーケンスです。 前半ではホスト A がマスターサーバーから SOA レコ ードを取得したあと、 DNS の Update 要求を送っていま す。今回はレコードの削除と追加の 2 回の処理を要求しま したが、これらは 1 回の Update 要求にまとめてマスター サーバーに送信されました。 Update 要求を受けてゾーン情報を更新したあとは、マ スターサーバーからスレープサーバーにゾーン情報の変更 60 ジャーナル・ファイルが 作成されている 通知を送っています。この通知はプロトコル上は DNS の Notify として送信さ楸スレープサーバーから応答を受け 取ります。 DNS の Notify を受け取ったスレープサーバーは、マ スターサーバーに SOA レコードを要求したあと、さらに 差分ゾーン軾医を求める IXFR 要求を送っています。 Notify バケットは普通の DNS の問合せ / 応答バケット とは違う点があります。通常は、 . 問合せバケットの Question セクションに問合せ内容を スフ E 応答バケットの Question セクションに問合せ内容を、 Answer セクションに間合せの返事を設疋 ですが、 Notify では次のようになっています ( 図 20 ) 。 最初に送る通知バケットの Answer セクションに、変更 されたゾーンの SOA レコードを設疋 応答バケットには Question セクションのみを設疋 IXFR / ヾケット 差分ゾーン転送をおこなう IXFR バケットについても みておきましよう。通常、 DNS バケットは UDP 上を流 UN 工 X MAGAZ 工 NE 2006.4
ク・ミニ実験室⑩ ネットワー 図 11 galaxy ・ example.com の IP アドレスの変更を石忍 $ d 土 9 @192 .168 . 1 . 1 galaxy. example . com くく > > DiG 9 . 3 . 1 くく > > @192 .168 . 1 . 1 galaxy. example . com ( 1 server found) 問合せに成功 910ba1 00 し土 ons : printcmd GO し answer : ->>HEADER< く一 opcode: QUERY, : status : NOERROR, 三 id: 1947 flags : qr aa rd ra; QUERY: 1 ー ANSWER: 1 ー AUTHOR 工 TY: 1 ー ADDITIONAL: 1 ゾーンファイルで指定した旧アドレスに変更された ANSWER SECT 工 ON: galaxy . example . com . 8 6 4 0 0 工 N で DNS サーバーを freeze し、 (REFUSED) と表示され、 Dynamic update が一時的に無効 (tem- dig @192.168.1.1 galaxy ・ example . com porarily disabled) になっている " ことが分かります。な と実行します。試してみれば分かりますが、 DNS サーバ お、認証に失敗したときは、次のように否認 (denied) メ ーからは図 11 と同様に status が NOERROR で、 AN- ッセージか表示されます。 SWER SECTION を含む応答が返されます。 このことから、、、 freeze 中でも DNS サーバーは問合せ 17 ー Feb ー 2006 01 : 39 : 36.206 client 192. 168. 10 . 100 # 55235 : update 'example . com/IN' denied に対して応答を返す " ことが分かります。 nsupdate プログラムの応用 freeze 中のソーン情報の更新 次は、 freeze 中に nsupdate でゾーン情報を削除してみ 続いて、 nsupdate の応用についてお話ししましよう。 ます。 rndc の freeze コマンドの役割から考えると、この このプログラムは、特定のレコードの有無によって追加や 操作は失敗するはずです。 削除の処理をおこなうかを選択できます。たとえば、 次の例は、 nsupdate の対話モードで galaxy. example. 指定したレコードがあれは消リ除 com を削除しようとした例です。 指定したレコードがなければ追加 $ nsupdate といった条件付き操作のために、次の 4 種類のコマンドが > server 192 . 168 . 1 . 1 > update delete galaxy. example . com 用意されています。 > send update failed : REFUSED ・ prereq yxdomain ドメイン名 、 send" コマンドを実行した時点で DNS サーバーにアク ・ prereq nxdomain ドメイン名 セスしますが、、、 update failed: REFUSED" という表 ・ prereq yxrrset ドメイン名 [ クラス ] タイプ 示からも分かるように、レコードの削除は拒否されました。 ・ prereq nxrrset ドメイン名 [ クラス ] タイプ このメッセージだけでは、、、 REFUSED" の原因が、 yxdomain と nxdomain は、それそれ指定したドメイ 正に失敗したのか ン名のレコードのいずれかがある / ないという条件を意味 ・ freeze 中なのか します。 ・その他の原因なのか yxrrset と nxrrset は上記の 2 つに似ていますが、指定 したドメイン名、タイプ、クラス ( 省略時は IN クラスと の区別がつきません。しかし、 DNS サーバーのメッセー みなす ) のレコードがある / ないという条件を未します。 ジには、 条件付きレコードの追加 17 ー Feb ー 2006 01 : 38 : 54.184 client 192 . 168 . 10 .100 # 55270 : updating zone ' example . com/IN ' : update 操作例をみてみましよう。 failed: dynamic update temporarily disabled 問合せに対する応答 192 . 16 8 . 1 . 55 UNIX MAGAZINE 2006.4
ク・ミニ実験室 O 図 1 ネットワー ソーン情報の整合性の実験に使用するシステム ホスト A ②メモリ上のゾーン情報を example.com ソーンの更新 DNS サーバー ( 192.168.1.1 ) ①レコードの追加や削除 ③変更をジャーナル・ ファイルに記録 example.com/zone.jnl ( バイナリファイル ) ④ゾーンファイルを 定期的に更新 SOA NS example.com/zone 図 2 Dynamic Update を許可した named. conf の言見 key " rndc-key" { algorithm hmac-md5 ー secret "a51ZezYVD086VQPMUMxXwg= controls { inet 192 .168 . 1 . 1 port 953 a110W { 192 .168 . 10 .100 ー } keys { " rndc-key" OP に土 ons directory "/etc/namedbt' ・ zone ” example . type master; file . com. :allow-update { 192 .168 . 10 .100 ・ 192.168.10.100 のホストからの Dynamic Update を許可 rndc の認証に関する設定 examp 巨 com ドメインの管理のための設定 全体的な設定 rndc 用のポートの指定と通信を許可するアドレス 正しくない手川頁で DNS サーバーを停止 DNS サーバーの動作を確認しながら実験をおこなうた め、 named を、、一 g " オプション付きで起動します。 $ named —g 16 ー Feb ー 2006 00 : 38 : 16.576 starting BIND 9 . 3.1 -g 16 ー Feb ー 2006 00 : 38 : 16 . 588 loading configuration UN 工 X MAGAZINE 2006.4 ます、以下のような内容のテキストファイル、、 example.com/ を登録します。 次に、ホスト A で nsupdate を実行し、ホスト、、 16 ー Feb ー 2006 00 : 38 : 16.635 running from ) /etc/named. conf ' update- galaxy. add " を用意します ( 誌面の都合上、で折り返していま す。以下同様 ) 。 server 192 . 168. 1 . 1 IP アドレス 192.168.1.102 を登録します。 行し、 DNS サーバーにホスト名 galaxy ・ example.com と このファイルを引数に指定して nsupdate コマンドを実 send 192. 168. 1 . 102 update add galaxy ・ example . com 86400 A - $ nsupdate update—add この時点で DNS サーバーのメッセー ジ ( 図 4 ) を確認 49