マニュアルページセク ション 1M: システム管理コマンド

印刷ビューの終了

更新: 2014 年 7 月
 
 

nsupdate(1M)

名前

nsupdate - 動的 DNS 更新ユーティリティー

形式

nsupdate [-dv] [-y keyname:secret | -k keyfile] [-t timeout]
     [-u udptimeout] [-r udpretries] [filename]

説明

nsupdate ユーティリティーは、RFC 2136 に定義されている動的 DNS 更新要求を、ネームサーバーに送信します。このユーティリティーを使用することで、ゾーンファイルを手動で編集しなくても、リソースレコードをゾーンに追加したりゾーンから削除したりできます。1 つの更新要求に、複数のリソースレコードの追加要求や削除要求を含めることができます。

nsupdate または DHCP サーバーにより動的に制御されているゾーンは、手動で編集しないようにしてください。手動で編集すると、動的更新との競合が発生して、データが失われる可能性があります。

nsupdate を使って動的に追加または削除されたリソースレコードは、同じゾーン内に存在する必要があります。要求は、ゾーンの SOA レコードの MNAME フィールドで識別されるゾーンのマスターサーバーに送信されます。

RFC 2845 に記述されている TSIG リソースレコードタイプを使用した動的 DNS 更新の認証には、トランザクション署名を利用できます。この署名が依存している共有シークレットを知るのは、nsupdate とネームサーバーだけです。現在のところ、TSIG でサポートされる暗号化アルゴリズムは、RFC 2104 で定義されている HMAC-MD5 だけです。その他のアルゴリズムが TSIG 用に定義される場合は、アプリケーションで相互の認証時に適切なアルゴリズムと鍵が選択されるようにする必要があります。たとえば、ネームサーバーが適切な秘密鍵とアルゴリズムを TSIG 認証を使用するクライアントアプリケーションの IP アドレスに関連付けることができるように、適切な key および server 文が /etc/named.conf に追加されます。nsupdate ユーティリティーは、/etc/named.conf を読み取りません。

nsupdate ユーティリティーとともに –y または –k オプションを使用して、TSIG レコードの生成に必要な共有シークレットを提供し、動的 DNS 更新要求を認証します。これらのオプションは相互に排他的です。詳しくは「オプション」の項を参照してください。

オプション

サポートしているオプションは、次のとおりです。

–d

デバッグモードで操作します。これにより、作成された更新要求およびネームサーバーから受信した応答に関するトレース情報が提供されます。

–k keyfile

keyfile ファイルから共有シークレットを読み取ります。名前の書式は次のとおりです。K{name}.+157.+{random}.private。歴史的な理由で、ファイル K{name}.+157.+{ random}.key も存在する必要があります。

–r udpretries

UDP での再試行回数を設定します。デフォルトの再試行回数は 3 です。udpretries がゼロに設定されている場合、更新要求が 1 つだけ作成されます。

–ttimeout

更新が中止されるまでのタイムアウト間隔 (秒) を設定します。デフォルトは 300 秒です。ゼロに設定すると、タイムアウトが無効になります。

–u udptimeout

UDP での再試行までの間隔 (秒) を設定します。デフォルトは 3 秒です。ゼロに設定すると、間隔がタイムアウト (–t) と UDP での再試行回数 (–r) に基づいて計算されます。

–v

TCP 接続を使用します。更新要求のバッチを作成する場合は、TCP 接続の使用をお勧めします。デフォルトでは、nsupdate は UDP を使用して更新要求をネームサーバーに送信します。

–y keyname:secret

keyname:secret から署名を生成します。ここで、keyname は鍵の名前、secret は Base 64 でエンコードされた共有シークレットです。

–y オプションの使用は推奨されていません。これは、共有シークレットが平文のコマンド行引数として指定されるため、ps(1) の出力や、ユーザーのシェルで管理される履歴ファイルへの表示が可能であるためです。

入力形式

入力形式

nsupdate ユーティリティーは、filename や標準入力から入力を読み取ります。各コマンドは、入力内に 1 行で指定されます。一部のコマンドは管理用です。その他のコマンドは、更新指示であるか、ゾーンの内容の前提条件チェックです。これらのチェックにより、名前またはリソースレコードのセット (RRset) がゾーンに存在するかどうかの条件が設定されます。更新要求全体を成功させるには、これらの条件を満たしている必要があります。前提条件のテストに失敗すると、更新は拒否されます。

すべての更新要求は、ゼロ以上の前提条件およびゼロ以上の更新で構成されます。この条件のために、指定されたリソースレコードがゾーンに存在または欠落している場合に、適切に認証された更新要求を処理することが可能になります。空白の入力行 (または send コマンド) が存在すると、累積されたコマンドが 1 つの動的 DNS 更新要求としてネームサーバーに送信されます。

このコマンドの書式とその意味は次のとおりです。

server servername [ port ]

すべての動的更新要求をネームサーバー servername に送信します。server 文が指定されていない場合、nsupdate は更新を適切なゾーンのマスターサーバーに送信します。ゾーンの SOA レコードの MNAME フィールドにより、そのゾーンのマスターサーバーが特定されます。port 引数は、動的更新要求が送信される servername のポート番号です。ポート番号が指定されていない場合は、デフォルト DNS ポート番号 53 が使用されます。

local address [ port ]

ローカルアドレスを使用して、すべての動的更新要求を送信します。local 文が指定されていない場合、nsupdate はシステムが選択したアドレスとポートを使って更新を送信します。port 引数を使って、特定のポートからの要求を作成することもできます。ポート番号が指定されていない場合は、システムによりポート番号が割り当てられます。

zone zonename

すべての更新の対象をゾーン zonename に指定します。zone 文が指定されていない場合、nsupdate は残りの入力に基づいて適切な更新対象ゾーンの特定を試みます。

class classname

デフォルトクラスを指定します。クラスが指定されていない場合、デフォルトクラスは IN になります。

key name secret

すべての更新を name secret ペアを使用して TSIG で署名します。key コマンドは、–y–k を使ってコマンド行で指定されたどの鍵よりも優先されます。

prereq nxdomain domain-name

domain-name という名前のリソースレコードが、どのタイプにも存在しないことを要求します。

prereq yxdomain domain-name

domain-name が存在することを要求します。domain-name には、いずれかのタイプのリソースレコードが 1 つ以上含まれている必要があります。

prereq nxrrset domain-name [ class ] type

指定された typeclass、および domain-name のリソースレコードが存在しないことを要求します。class を省略すると、IN (インターネット) とみなされます。

prereq yxrrset domain-name [ class ] type

指定された typeclass、および domain-name のリソースレコードが存在することを要求します。class を省略すると、IN (インターネット) とみなされます。

prereq yxrrset domain-name [ class ] type data...

共通の typeclass、および domain-name を共有する、この書式の前提条件の各セットから取得された data は、結合されて RR セットになります。この RR セットは、ゾーン内に存在する typeclassdomain-name で設定された既存の RR セットと正確に一致している必要があります。data は、リソースレコードの RDATA の標準テキスト表現で書き込まれます。

update delete domain-name [ ttl ] [ class ] [ type [ data... ] ]

domain-name という名前のリソースレコードをすべて削除します。type および data が指定されている場合は、一致するリソースレコードだけが削除されます。class が指定されていない場合は、インターネットクラスとみなされます。ttl は無視されます。これは、互換性を維持するためにのみ用意されています。

update add domain-name ttl [ class ] type data...

指定された ttlclass、および data の新規リソースレコードを追加します。

show

現在のメッセージを表示します。前回の送信時以降に指定されたすべての前提条件と更新が含まれています。

send

現在のメッセージを送信します。これは、空白行を挿入することと同等です。

answer

答えを表示します。

先頭がセミコロンの行はコメントであり、無視されます。

使用例 1 ゾーンに対してリソースレコードの挿入や削除を行う

この例では、nsupdate を使用して、example.com ゾーンに対してリソースレコードの挿入と削除を行う方法を示します。各例では、入力の末尾に空行が含まれることに注目してください。これは、コマンドのグループを 1 つの動的更新要求として example.com のマスターネームサーバーに送信するためです。

# nsupdate
> update delete oldhost.example.com A
> update add newhost.example.com 86400 A 172.16.1.1
> send

oldhost.example.com のすべての A レコードが削除されます。IP アドレス 172.16.1.1 の newhost.example.com の A レコードが追加されます。新たに追加されたレコードの TTL は 1 日 (86400 秒) です。

使用例 2 レコードが存在しない場合にのみ CNAME を追加する

次のコマンドは、レコードが存在しない場合にのみ CNAME を追加します。

# nsupdate
> prereq nxdomain nickname.example.com
> update add nickname.example.com 86400 CNAME somehost.example.com
> send

ネームサーバーは、前提条件に従って、どのタイプのリソースレコードも nickname.example.com に存在しないことを確認します。リソースレコードが存在する場合、更新要求は失敗します。この名前が存在しない場合は、CNAME が追加されます。この動作により、CNAME の追加時に、従来の RFC 1034 の規則 (名前が CNAME として存在する場合は、どのレコードタイプであれ、その名前がほかに存在してはならない) と矛盾することはありません。(この規則は RFC 4035 で DNSSEC 向けに更新され、CNAME RSIGDNSKEY、および NSEC レコードを保持することが可能になりました。)

ファイル

/etc/resolv.conf

デフォルトネームサーバーの識別に使用。

K{name}.+157.+{random}.key

dnssec-keygen(1M) により作成された HMAC-MD5 鍵の Base 64 エンコーディング

K{name}.+157.+{random}.private

dnssec-keygen(1M) により作成された HMAC-MD5 鍵の Base 64 エンコーディング

バグ

TSIG 鍵は 2 つの別個のファイルに重複して格納されます。これは、nsupdate で暗号化操作に DST ライブラリを使用したためで、将来のリリースでは変更される可能性があります。

属性

属性についての詳細は、マニュアルページの attributes(5) を参照してください。

属性タイプ
属性値
使用条件
service/network/dns/bind
インタフェースの安定性
流動的

関連項目

named(1M), dnssec-keygen(1M), attributes(5)

RFC 2136RFC 3007RFC 2104RFC 2845RFC 1034RFC 2535RFC 2931RFC 4035