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