この特集のトップページへ
>
Chapter 6:Dynamic DNS 〜DNSとDHCP〜
次に,静的なIPアドレスを割り当てたクライアントのトレースを使用しながら,Dynamic DNSの動作を説明する。
ここでは,クライアントをPC98(192.168.1.101),DNSサーバーをAZ3(192.168.1.100)とする。このネットワークの構成は,「5.3.1 ログオンまでの処理内容」で説明している環境と同じである。念のために,構成図を再掲しておこう(Fig.6-3)。
Fig.6-3 トレース情報を取得したサンプルネットワークの構成(Fig.5-9の再掲) |
なお,以下に示すトレース中に記載されている赤色の文字列は,筆者が加えたコメントである。
クライアントはまず,自分が登録しようとしているリソースレコードに対する権威を有するDNSサーバーを探すため,SOAレコードの問い合わせを送信する。SOAレコードによってゾーンに対する権威を有するDNSサーバーが判明したら,そのサーバーに対してDynamic DNSのPrerequisiteパケットを送信し,リソースレコードが存在するかどうかを確認する。これから登録しようとしているリソースレコードと同じものが登録されている場合は,そのリソースレコードの必要条件のみを更新する。同じものが登録されていない場合は,そのリソースレコードを新規に登録する。リソースレコードを追加したり削除したりするには,Updateセクションを含んだパケットを使用する。なお,クライアントは,登録したリソースレコードを定期的に更新する。
List 6-1(クリックして別ウィンドウを開く)に示すのは,リソースレコードが登録されていない場合に,Aレコードを登録するときのトレースである。すでに重複するリソースレコードが登録されている場合の例は,追って示す。
List 6-1において,1と2はSOAレコードの問い合わせである。PC98.active.dsl.local.はまだ登録されていない名前なので,DNSサーバーからは“Name does not exist”という回答が戻ってきている。2の回答であるAuthorityセクションには,このドメインに対して権威を有するDNSサーバーの名前が格納されている。この部分の詳細を,List 6-2に示す。
List 6-1の3と4は,Dynamic DNSのパケットである。まだ登録されていない名前なので,DNSサーバーからは“RR set that ought to exist, does not exist”という回答が戻っている。List 6-3に,DNS部分の詳細を示す。
注目してほしいのは,3のパケットにはPrerequisiteセクションが2つあることである。1つは,TYPEが“CNAME”でCLASSが“NONE”,RDATAが存在しないものである。このPrerequisiteセクションでは,ゾーンセクションで指定した“active.dsl.local.”にCNAMEレコードが登録されていないことを確認している。もう1つは,TYPEが“A”でCLASSが“Internet”,RDATAにはIPアドレスが指定されているものである。このPrerequisiteセクションでは,指定したリソースレコード,つまり“PC98.active.dsl.local. IN A 192.168.1.101”という情報が,DNSに登録されているかどうかを確認している。
これに対する回答が,4のパケットである。「照会されたリソースレコードは登録されていない」という回答を返していることがわかる。
そのあと,List 6-1の5と6では,再びSOAレコードの問い合わせを送り,Updateパケットを送信するDNSサーバーを検索している。そして,7と8により,実際にDNSサーバーに対して新しいリソースレコードを追加するように要求している。
7のパケットでは,Updateを要求している。ここでは,“PC98.active.dsl.local. IN A 192.168.1.100”というリソースレコードを登録しようとしており,その前提条件として“PC98.active.dsl.local.”というCNAMEレコードやAレコードが登録されていないことを確認している。この前提条件は,CLASSが“NONE”,TYPEがリソースレコード,RDATAがなしであるリソースレコードをPrerequisiteセクションで指定することによって示されている。
8の回答には“No error”とあるため,リソースレコードの追加は無事完了したことがわかる。
List 6-4は,7と8で示したDNS部分の詳細である。
なお,DNSサーバーがダウンしている場合や,ネットワーク障害によってDNSサーバーに到達できなかった場合には,クライアントは5分後にUpdateをリトライする。それに失敗すると,さらに10分後に再度リトライする。それでもUpdateに成功しなかった場合には,最後のリトライから50分後に,最初と同じ手順でリトライを再開し,成功するまでくり返す。
List 6-5は,登録しようとしたAレコードと同じリソースレコードが,すでに存在している場合のトレースである。同じリソースレコードが存在するため,必要条件のみを更新している。DNSサーバーからのレスポンスにより,更新作業は正常に終了し,クライアントは必要条件のみの更新に成功したことがわかる。
6/13 |