名称

nsupdate対話的に Internet ネームサーバを更新する

書式

nsupdate [-k keydir:keyname] [-d] [-v] [filename]

解説

nsupdate は動的な更新をサポートした Internet ドメインネームサーバを更新する ためのプログラムです。 nsupdate は DNS のリソースレコード (RR) を追加したり削除したりする メッセージを DNS サーバ に伝えるために、DNS リゾルバライブラリを使用します。 nsupdate は入力を filename もしくは、標準入力から読み取ります。

引数

-k
TSIG を用いて更新に署名します。
-d
デバッグモードを指定します。
-v
バーチャルサーキット - サーバとの通信に TCP を使用します。既定値では UDP を 使用します。

入力書式

nsupdate は 1 行ごとに 1 個の入力レコードを読みます。 それぞれの行は更新要求の対象になるリソースレコードです。 1 個の更新要求に含まれるすべてのドメイン名は、 同一の DNS ゾーンに含まれるものであることが必要です。 更新は、SOA MNAME フィールドで定義されるマスタサーバへ送られます。 空行は、蓄積されたレコードを 1 個の更新要求としてまとめ、ゾーンの権威を もつネームサーバへの送信を指示します。 追加レコードを続けることが可能です。 これらは、追加的な、完全に独立した更新要求になります。 最後の要求が送信されるためには、空行が入力の最後にあることが必要です。
レコードはふたつの一般的な形式のうちのどちらかの形式です。 必要条件 (prerequisite) レコードは、要求が処理される前に満たされていることが必要な条件を指示します。 更新情報 (update) レコードは、DNS データベースになされる変更を指示します。 更新要求は、0 個以上の必要条件と、1 個以上の更新情報から成ります。 それぞれの更新要求は、すべての必要条件が満たされることが確認 されたあとで、すべての更新が実行されるという順番で、原子的に処理されます。
nsupdate は次のような入力レコードの書式を理解します。
 
prereq nxdomain domain-name
domain-name で指定したドメイン内に、どのような RR もないことを要求します。
 
prereq yxdomain domain-name
domain-name で指定したドメイン内に、最低 1 個の RR が存在することを要求します。
 
prereq nxrrset domain-name [class] type
domain-name で指定したドメイン内に type で指定した型の RR が存在しないことを要求します。
 
prereq yxrrset domain-name [class] type [data...]
domain-name で指定したドメイン内に、 type で指定した型の RR が存在することを要求します。 data が指定された場合は、正確にチェックが行なわれます。
 
update delete domain-name [class] [type [data...]]
domain-name で指定したドメイン名の RR を削除します。 もし type (と、可能ならば data) が指定されれば、該当されるレコードだけが削除されます。
 
update add domain-name ttl [class] type data...
ttl, type, data で指定した RR を追加します。
 
 

使用例

下記の例は、 nsupdate の対話的な使用例を示しています。 あるドメイン名のすべての A レコードを削除して、新しいレコードを 追加することによって、IP アドレスを変更します。 ここでは必要条件が指定されていないので、削除するレコードがなくても新しい レコードが追加されます。 後に続く空行は要求を処理させるために必要であることに注意してください。
$ nsupdate 
> update delete test.example.com A 
> update add test.example.com 3600 A 10.1.1.1 
> 

この例では、対象のドメインに A レコードまたは CNAME レコードがない場合に、 CNAME エイリアスがデータベースに追加されます。
$ nsupdate 
> prereq nxrrset www.example.com A 
> prereq nxrrset www.example.com CNAME 
> update add www.example.com 3600 CNAME test.example.com 
> 

この例では、nsupdate はディレクトリ "/var/named/keys" に存在するキー "mykey" で署名されます。
$ nsupdate -k /var/named/keys:mykey 
> update add ftp.example.com 60 A 192.168.5.1 
> 

 

診断

 
“send error”
一般に、権威のあるネームサーバに到達できなかったことを示します。
 
“failed update packet”
一般に、ネームサーバが動的更新をサポートしていないためか、認証の失敗のために、 更新を拒否したことを示します。
 
“res_mkupdate: packet size = size
(また他のメッセージが表示されないとき) 更新は正常に受信されてネームサーバに認証されました。 しかし必要条件が更新を妨げたかもしれません。更新が行なわれているか を確かめる方法は、デバッグモード (-d) を使用して、ネームサーバからの応答フィールドを確認するしかありません。

関連ファイル

/etc/resolv.conf
ドメイン名とネームサーバのアドレスの初期設定。

関連項目

named(8), resolver(3), resolver(5); RFC-1034, “Domain Names - Concepts and Facilities”; RFC-1035, “Domain Names - Implementation and Specification”; RFC-2136, Dynamic Updates in the Domain Name System.

作者

Brent Baccala

Recommended readings

Pages related to nsupdate you should read also: