1NSUPDATE(1) BIND9 NSUPDATE(1)
2
3
4
6 nsupdate - Dynamic DNS update utility
7
9 nsupdate [-d] [-D] [[-g] | [-o] | [-l] | [-y [hmac:]keyname:secret] |
10 [-k keyfile]] [-t timeout] [-u udptimeout] [-r udpretries]
11 [-R randomdev] [-v] [filename]
12
14 nsupdate is used to submit Dynamic DNS Update requests as defined in
15 RFC 2136 to a name server. This allows resource records to be added or
16 removed from a zone without manually editing the zone file. A single
17 update request can contain requests to add or remove more than one
18 resource record.
19
20 Zones that are under dynamic control via nsupdate or a DHCP server
21 should not be edited by hand. Manual edits could conflict with dynamic
22 updates and cause data to be lost.
23
24 The resource records that are dynamically added or removed with
25 nsupdate have to be in the same zone. Requests are sent to the zone´s
26 master server. This is identified by the MNAME field of the zone´s SOA
27 record.
28
29 The -d option makes nsupdate operate in debug mode. This provides
30 tracing information about the update requests that are made and the
31 replies received from the name server.
32
33 The -D option makes nsupdate report additional debugging information to
34 -d.
35
36 The -L option with an integer argument of zero or higher sets the
37 logging debug level. If zero, logging is disabled.
38
39 Transaction signatures can be used to authenticate the Dynamic DNS
40 updates. These use the TSIG resource record type described in RFC 2845
41 or the SIG(0) record described in RFC 2535 and RFC 2931 or GSS-TSIG as
42 described in RFC 3645. TSIG relies on a shared secret that should only
43 be known to nsupdate and the name server. Ensure that you select the
44 appropriate algorithms for the applications as well as the key when
45 authenticating each other. For instance, suitable key and server
46 statements would be added to /etc/named.conf so that the name server
47 can associate the appropriate secret key and algorithm with the IP
48 address of the client application that will be using TSIG
49 authentication. SIG(0) uses public key cryptography. To use a SIG(0)
50 key, the public key must be stored in a KEY record in a zone served by
51 the name server. nsupdate does not read /etc/named.conf.
52
53 GSS-TSIG uses Kerberos credentials. Standard GSS-TSIG mode is switched
54 on with the -g flag. A non-standards-compliant variant of GSS-TSIG used
55 by Windows 2000 can be switched on with the -o flag.
56
57 nsupdate uses the -y or -k option to provide the shared secret needed
58 to generate a TSIG record for authenticating Dynamic DNS update
59 requests, default type HMAC-MD5. These options are mutually exclusive.
60
61 When the -y option is used, a signature is generated from
62 [hmac:]keyname:secret. keyname is the name of the key, and secret is
63 the base64 encoded shared secret. Use of the -y option is discouraged
64 because the shared secret is supplied as a command line argument in
65 clear text. This may be visible in the output from ps(1) or in a
66 history file maintained by the user´s shell.
67
68 With the -k option, nsupdate reads the shared secret from the file
69 keyfile. Keyfiles may be in two formats: a single file containing a
70 named.conf-format key statement, which may be generated automatically
71 by ddns-confgen, or a pair of files whose names are of the format
72 K{name}.+157.+{random}.key and K{name}.+157.+{random}.private, which
73 can be generated by dnssec-keygen. The -k may also be used to specify a
74 SIG(0) key used to authenticate Dynamic DNS update requests. In this
75 case, the key specified is not an HMAC-MD5 key.
76
77 nsupdate can be run in a local-host only mode using the -l flag. This
78 sets the server address to localhost (disabling the server so that the
79 server address cannot be overridden). Connections to the local server
80 will use a TSIG key found in /var/run/named/session.key, which is
81 automatically generated by named if any local master zone has set
82 update-policy to local. The location of this key file can be overridden
83 with the -k option.
84
85 By default, nsupdate uses UDP to send update requests to the name
86 server unless they are too large to fit in a UDP request in which case
87 TCP will be used. The -v option makes nsupdate use a TCP connection.
88 This may be preferable when a batch of update requests is made.
89
90 The -p sets the default port number to use for connections to a name
91 server. The default is 53.
92
93 The -t option sets the maximum time an update request can take before
94 it is aborted. The default is 300 seconds. Zero can be used to disable
95 the timeout.
96
97 The -u option sets the UDP retry interval. The default is 3 seconds. If
98 zero, the interval will be computed from the timeout interval and
99 number of UDP retries.
100
101 The -r option sets the number of UDP retries. The default is 3. If
102 zero, only one update request will be made.
103
104 The -R randomdev option specifies a source of randomness. If the
105 operating system does not provide a /dev/random or equivalent device,
106 the default source of randomness is keyboard input. randomdev
107 specifies the name of a character device or file containing random data
108 to be used instead of the default. The special value keyboard indicates
109 that keyboard input should be used. This option may be specified
110 multiple times.
111
113 nsupdate reads input from filename or standard input. Each command is
114 supplied on exactly one line of input. Some commands are for
115 administrative purposes. The others are either update instructions or
116 prerequisite checks on the contents of the zone. These checks set
117 conditions that some name or set of resource records (RRset) either
118 exists or is absent from the zone. These conditions must be met if the
119 entire update request is to succeed. Updates will be rejected if the
120 tests for the prerequisite conditions fail.
121
122 Every update request consists of zero or more prerequisites and zero or
123 more updates. This allows a suitably authenticated update request to
124 proceed if some specified resource records are present or missing from
125 the zone. A blank input line (or the send command) causes the
126 accumulated commands to be sent as one Dynamic DNS update request to
127 the name server.
128
129 The command formats and their meaning are as follows:
130
131 server {servername} [port]
132 Sends all dynamic update requests to the name server servername.
133 When no server statement is provided, nsupdate will send updates to
134 the master server of the correct zone. The MNAME field of that
135 zone´s SOA record will identify the master server for that zone.
136 port is the port number on servername where the dynamic update
137 requests get sent. If no port number is specified, the default DNS
138 port number of 53 is used.
139
140 local {address} [port]
141 Sends all dynamic update requests using the local address. When no
142 local statement is provided, nsupdate will send updates using an
143 address and port chosen by the system. port can additionally be
144 used to make requests come from a specific port. If no port number
145 is specified, the system will assign one.
146
147 zone {zonename}
148 Specifies that all updates are to be made to the zone zonename. If
149 no zone statement is provided, nsupdate will attempt determine the
150 correct zone to update based on the rest of the input.
151
152 class {classname}
153 Specify the default class. If no class is specified, the default
154 class is IN.
155
156 ttl {seconds}
157 Specify the default time to live for records to be added. The value
158 none will clear the default ttl.
159
160 key {name} {secret}
161 Specifies that all updates are to be TSIG-signed using the keyname
162 keysecret pair. The key command overrides any key specified on the
163 command line via -y or -k.
164
165 gsstsig
166 Use GSS-TSIG to sign the updated. This is equivalent to specifying
167 -g on the commandline.
168
169 oldgsstsig
170 Use the Windows 2000 version of GSS-TSIG to sign the updated. This
171 is equivalent to specifying -o on the commandline.
172
173 realm {[realm_name]}
174 When using GSS-TSIG use realm_name rather than the default realm in
175 krb5.conf. If no realm is specified the saved realm is cleared.
176
177 prereq nxdomain {domain-name}
178 Requires that no resource record of any type exists with name
179 domain-name.
180
181 prereq yxdomain {domain-name}
182 Requires that domain-name exists (has as at least one resource
183 record, of any type).
184
185 prereq nxrrset {domain-name} [class] {type}
186 Requires that no resource record exists of the specified type,
187 class and domain-name. If class is omitted, IN (internet) is
188 assumed.
189
190 prereq yxrrset {domain-name} [class] {type}
191 This requires that a resource record of the specified type, class
192 and domain-name must exist. If class is omitted, IN (internet) is
193 assumed.
194
195 prereq yxrrset {domain-name} [class] {type} {data...}
196 The data from each set of prerequisites of this form sharing a
197 common type, class, and domain-name are combined to form a set of
198 RRs. This set of RRs must exactly match the set of RRs existing in
199 the zone at the given type, class, and domain-name. The data are
200 written in the standard text representation of the resource
201 record´s RDATA.
202
203 update delete {domain-name} [ttl] [class] [type [data...]]
204 Deletes any resource records named domain-name. If type and data is
205 provided, only matching resource records will be removed. The
206 internet class is assumed if class is not supplied. The ttl is
207 ignored, and is only allowed for compatibility.
208
209 update add {domain-name} {ttl} [class] {type} {data...}
210 Adds a new resource record with the specified ttl, class and data.
211
212 show
213 Displays the current message, containing all of the prerequisites
214 and updates specified since the last send.
215
216 send
217 Sends the current message. This is equivalent to entering a blank
218 line.
219
220 answer
221 Displays the answer.
222
223 debug
224 Turn on debugging.
225
226 Lines beginning with a semicolon are comments and are ignored.
227
229 The examples below show how nsupdate could be used to insert and delete
230 resource records from the example.com zone. Notice that the input in
231 each example contains a trailing blank line so that a group of commands
232 are sent as one dynamic update request to the master name server for
233 example.com.
234
235 # nsupdate
236 > update delete oldhost.example.com A
237 > update add newhost.example.com 86400 A 172.16.1.1
238 > send
239
240 Any A records for oldhost.example.com are deleted. And an A record for
241 newhost.example.com with IP address 172.16.1.1 is added. The
242 newly-added record has a 1 day TTL (86400 seconds).
243
244 # nsupdate
245 > prereq nxdomain nickname.example.com
246 > update add nickname.example.com 86400 CNAME somehost.example.com
247 > send
248
249 The prerequisite condition gets the name server to check that there are
250 no resource records of any type for nickname.example.com. If there are,
251 the update request fails. If this name does not exist, a CNAME for it
252 is added. This ensures that when the CNAME is added, it cannot conflict
253 with the long-standing rule in RFC 1034 that a name must not exist as
254 any other record type if it exists as a CNAME. (The rule has been
255 updated for DNSSEC in RFC 2535 to allow CNAMEs to have RRSIG, DNSKEY
256 and NSEC records.)
257
259 /etc/resolv.conf
260 used to identify default name server
261
262 /var/run/named/session.key
263 sets the default TSIG key for use in local-only mode
264
265 K{name}.+157.+{random}.key
266 base-64 encoding of HMAC-MD5 key created by dnssec-keygen(8).
267
268 K{name}.+157.+{random}.private
269 base-64 encoding of HMAC-MD5 key created by dnssec-keygen(8).
270
272 RFC 2136, RFC 3007, RFC 2104, RFC 2845, RFC 1034, RFC 2535, RFC 2931,
273 named(8), ddns-confgen(8), dnssec-keygen(8).
274
276 The TSIG key is redundantly stored in two separate files. This is a
277 consequence of nsupdate using the DST library for its cryptographic
278 operations, and may change in future releases.
279
281 Copyright © 2004-2010 Internet Systems Consortium, Inc. ("ISC")
282 Copyright © 2000-2003 Internet Software Consortium.
283
284
285
286BIND9 Aug 25, 2009 NSUPDATE(1)