]> git.ipfire.org Git - thirdparty/dhcpcd.git/blame - src/dhcpcd.conf.5.in
dhcpcd: Add support for arp persist defence (#273)
[thirdparty/dhcpcd.git] / src / dhcpcd.conf.5.in
CommitLineData
114167a2
YY
1.\" SPDX-License-Identifier: BSD-2-Clause
2.\"
7a13e344 3.\" Copyright (c) 2006-2023 Roy Marples
ba9dfb7a
RM
4.\" All rights reserved
5.\"
6.\" Redistribution and use in source and binary forms, with or without
7.\" modification, are permitted provided that the following conditions
8.\" are met:
9.\" 1. Redistributions of source code must retain the above copyright
10.\" notice, this list of conditions and the following disclaimer.
11.\" 2. Redistributions in binary form must reproduce the above copyright
12.\" notice, this list of conditions and the following disclaimer in the
13.\" documentation and/or other materials provided with the distribution.
14.\"
15.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25.\" SUCH DAMAGE.
26.\"
e65e82a5 27.Dd December 21, 2023
0b4a1931 28.Dt DHCPCD.CONF 5
918338f2 29.Os
ba9dfb7a
RM
30.Sh NAME
31.Nm dhcpcd.conf
443c8695 32.Nd dhcpcd configuration file
ba9dfb7a
RM
33.Sh DESCRIPTION
34Although
35.Nm dhcpcd
36can do everything from the command line, there are cases where it's just easier
cf42802e
RM
37to do it once in a configuration file.
38Most of the options found in
ba9dfb7a 39.Xr dhcpcd 8
cf42802e
RM
40can be used here.
41The first word on the line is the option and the rest of the line is the value.
42Leading and trailing whitespace for the option and value are trimmed.
43You can escape characters in the value using the \\ character.
67f84564
RM
44Comments can be prefixed with the # character.
45String values should be quoted with the " character.
ba9dfb7a
RM
46.Pp
47Here's a list of available options:
48.Bl -tag -width indent
ba97e494
RM
49.It Ic allowinterfaces Ar pattern
50When discovering interfaces, the interface name must match
51.Ar pattern
52which is a space or comma separated list of patterns passed to
53.Xr fnmatch 3 .
54If the same interface is matched in
55.Ic denyinterfaces
56then it is still denied.
57.It Ic denyinterfaces Ar pattern
58When discovering interfaces, the interface name must not match
59.Ar pattern
60which is a space or comma separated list of patterns passed to
61.Xr fnmatch 3 .
68f04fa8
RM
62.It Ic anonymous
63Enables Anonymity Profiles for DHCP, RFC 7844.
2bd74fa2 64Any DUID is ignored and ClientID is set to LL only.
68f04fa8
RM
65All non essential options are then masked at this point,
66but they could be unmasked by explicitly requesting the option
67.Sy after
68the
69.Ic anonymous
70option is processed.
71As such, the
72.Ic anonymous
73option
74.Sy should
75be the last option in the configuration unless you really want to
76send something which could identify you.
77.Nm dhcpcd
78will not try and reboot an old lease, it will go straight into
79DISCOVER/SOLICIT.
2bd74fa2
RM
80.It Ic randomise_hwaddr
81Forces a hardware address randomisation when the interface is brought up
82or when the carrier is lost.
83This is generally used in tandem with the anonymous option.
6f767217
RM
84.It Ic arping Ar address Op address
85.Nm dhcpcd
ff021b0b 86will arping each address in order before attempting DHCP.
6f767217 87If an address is found, we will select the replying hardware address as the
569c0b11 88profile, otherwise the IP address.
6f767217
RM
89Example:
90.Pp
91.D1 interface bge0
92.D1 arping 192.168.0.1
93.Pp
a6162a75
RM
94.D1 # My specific 192.168.0.1 network
95.D1 profile dd:ee:aa:dd:bb:ee
6f767217 96.D1 static ip_address=192.168.0.10/24
a6162a75
RM
97.Pp
98.D1 # A generic 192.168.0.1 network
99.D1 profile 192.168.0.1
100.D1 static ip_address=192.168.0.98/24
32945b61 101.It Ic authprotocol Ar protocol Op Ar algorithm Op Ar rdm
c73ed171 102Authenticate DHCP messages.
0dc49454 103See the Supported Authentication Protocols section.
32945b61
RM
104If
105.Ar protocol
106is
107.Ar token
108then
109.Ar algorithm is
21932eab 110snd_secretid/rcv_secretid so you can send and receive different tokens.
c73ed171
RM
111.It Ic authtoken Ar secretid Ar realm Ar expire Ar key
112Define a shared key for use in authentication.
c07e0ab0
RM
113.Ar realm
114can be "" to for use with the
c73ed171 115.Ar delayed
c07e0ab0 116protocol.
c73ed171
RM
117.Ar expire
118is the date the token expires and should be formatted "yyy-mm-dd HH:MM".
119You can use the keyword
120.Ar forever
121or
122.Ar 0
123which means the token never expires.
0dc49454
RM
124For the token protocol,
125.Ar secretid
126needs to be 0 and
127.Ar realm
128needs to be "".
129If
130.Nm dhcpcd
131has the error
132.D1 dhcp_auth_encode: Invalid argument
133then it means that
134.Nm dhcpcd
135could not find the correct authentication token in your configuration.
bac03ede 136.It Ic background
ef13f300 137Fork to the background immediately.
bac03ede
RM
138This is useful for startup scripts which don't disable link messages for
139carrier status.
6f767217 140.It Ic blacklist Ar address Ns Op /cidr
ce6b39df 141Ignores all packets from
6f767217 142.Ar address Ns Op /cidr .
bf80d526
RM
143.It Ic whitelist Ar address Ns Op /cidr
144Only accept packets from
145.Ar address Ns Op /cidr .
146.Ic blacklist
147is ignored if
148.Ic whitelist
149is set.
8f924434
RM
150.It Ic bootp
151Be a BOOTP client.
152Basically, this just doesn't send a DHCP Message Type option and will only
153interact with a BOOTP server.
154All other DHCP options still work.
900b3da4
RM
155.It Ic broadcast
156Instructs the DHCP server to broadcast replies back to the client.
569c0b11 157Normally this is only set for non-Ethernet interfaces,
900b3da4
RM
158such as FireWire and InfiniBand.
159In most cases,
160.Nm dhcpcd
161will set this automatically.
a93e79c6
RM
162.It Ic controlgroup Ar group
163Sets the group ownership of
d5aadbad 164.Pa @RUNDIR@/sock
a93e79c6
RM
165so that users other than root can connect to
166.Nm dhcpcd .
a3099289
RM
167.It Ic debug
168Echo debug messages to the stderr and syslog.
413652c1
RM
169.It Ic dev Ar value
170Load the
171.Ar value
172.Pa /dev
173management module.
174.Nm dhcpcd
175will load the first one found to work, if any.
6bfd88f1
RM
176.It Ic env Ar value
177Push
178.Ar value
179to the environment for use in
180.Xr dhcpcd-run-hooks 8 .
181For example, you can force the hostname hook to always set the hostname with
182.Ic env
183.Va force_hostname=YES .
bbd250b4
RM
184Or set which driver
185.Xr wpa_supplicant 8
186should use with
187.Ic env
188.Va wpa_supplicant_driver=nl80211
77961e7b 189.Pp
c883b7b9 190If the hostname is set, it will be will set to the FQDN if possible as per
569c0b11 191RFC 4702, section 3.1.
77961e7b
RM
192If the FQDN option is missing,
193.Nm dhcpcd
194will still try and set a FQDN from the hostname and domain options for
195consistency.
196To override this, set
197.Ic env
198.Va hostname_fqdn=[YES|NO|SERVER] .
569c0b11
DG
199A value of
200.Va SERVER
201means just what the server says, don't manipulate it.
77961e7b
RM
202This could lead to an inconsistent hostname on a DHCPv4 and DHCPv6 network
203where the DHCPv4 hostname is short and the DHCPv6 has an FQDN.
204DHCPv6 has no hostname option.
d2616b08 205.It Ic clientid Ar string
c989b023
RM
206Send the
207.Ar clientid .
d2616b08 208If the string is of the format 01:02:03 then it is encoded as hex.
3faba9e6
RM
209For interfaces whose hardware address is longer than 8 bytes, or if the
210.Ar clientid
211is an empty string then
212.Nm dhcpcd
213sends a default
214.Ar clientid
215of the hardware family and the hardware address.
21d35513 216.It Ic duid Op ll | lt | uuid | value
239b962f
RM
217Use a DHCP Unique Identifier.
218If a system UUID is available, that will be used to create a DUID-UUID,
e774fb01 219otherwise if persistent storage is available then a DUID-LLT
239b962f
RM
220(link local address + time) is generated,
221otherwise DUID-LL is generated (link local address).
11963d20
RM
222The DUID type can be hinted as an optional parameter if the file
223.Pa @DBDIR@/duid
224does not exist.
21d35513
RM
225If not
226.Va ll ,
227.Va lt
228or
229.Va uuid
230then
231.Va value
232will be converted from 00:11:22:33 format.
ebc9d360
RM
233This, plus the IAID will be used as the
234.Ic clientid .
239b962f 235The DUID generated will be held in
9f51e22b 236.Pa @DBDIR@/duid
d2616b08 237and should not be copied to other hosts.
21d35513 238This file also takes precedence over the above rules except for setting a value.
ebc9d360
RM
239.It Ic iaid Ar iaid
240Set the Interface Association Identifier to
241.Ar iaid .
9ff636a5
RM
242This option must be used in an
243.Ic interface
244block.
9db242be
RM
245This defaults to the VLANID (prefixed with 0xff) for the interface if set,
246otherwise the last 4 bytes of the hardware address assigned to the
6f66c6c9
RM
247interface.
248Each instance of this should be unique within the scope of the client and
249.Nm dhcpcd
250warns if a conflict is detected.
251If there is a conflict, it is only a problem if the conflicted IAIDs are
252used on the same network.
94bec972
RM
253.It Ic dhcp
254Enable DHCP on the interface, on by default.
255.It Ic dhcp6
256Enable DHCPv6 on the interface, on by default.
257.It Ic ipv4
258Enable IPv4 on the interface, on by default.
259.It Ic ipv6
260Enable IPv6 on the interface, on by default.
438cfdcd
RM
261.It Ic request Op Ar address
262Request the
263.Ar address
264in the DHCP DISCOVER message.
265There is no guarantee this is the address the DHCP server will actually give.
266If no
267.Ar address
268is given then the first address currently assigned to the
269.Ar interface
270is used.
6dc3763d 271.It Ic inform Op Ar address Ns Op Ar /cidr Ns Op Ar /broadcast_address
438cfdcd
RM
272Behaves like
273.Ic request
274as above, but sends a DHCP INFORM instead of DISCOVER/REQUEST.
275This does not get a lease as such, just notifies the DHCP server of the
276.Ar address
277in use.
278You should also include the optional
279.Ar cidr
280network number in case the address is not already configured on the interface.
281.Nm dhcpcd
282remains running and pretends it has an infinite lease.
283.Nm dhcpcd
284will not de-configure the interface when it exits.
285If
286.Nm dhcpcd
287fails to contact a DHCP server then it returns a failure instead of falling
288back on IPv4LL.
289.It Ic inform6
290Performs a DHCPv6 Information Request.
291No address is requested or specified, but all other DHCPv6 options are allowed.
569c0b11
DG
292This is normally performed automatically when an IPv6 Router Advertisement
293indicates that the client should perform this operation.
438cfdcd
RM
294This option is only needed when
295.Nm dhcpcd
569c0b11 296is not processing IPv6 RA messages and the need for a DHCPv6 Information Request
438cfdcd 297exists.
15fc1181
RM
298.It Ic persistent
299.Nm dhcpcd
300normally de-configures the interface and configuration when it exits.
301Sometimes, this isn't desirable if, for example, you have root mounted over
a544b76a
RM
302NFS or SSH clients connect to this host and they need to be notified of
303the host shutting down.
15fc1181 304You can use this option to stop this from happening.
ff021b0b 305.It Ic fallback Ar profile
569c0b11 306Fall back to using this profile if DHCP fails.
ff021b0b 307This allows you to configure a static profile instead of using ZeroConf.
ba9dfb7a 308.It Ic hostname Ar name
c883b7b9
RM
309Sends the hostname
310.Ar name
35d02ae6
RM
311to the DHCP server so it can be registered in DNS.
312If
c883b7b9 313.Ar name
35d02ae6
RM
314is an empty string then the current system hostname is sent.
315If
c883b7b9 316.Ar name
569c0b11 317is a FQDN (i.e., contains a .) then it will be encoded as such.
d6a18654
RM
318.It Ic hostname_short
319Sends the short hostname to the DHCP server instead of the FQDN.
320This is useful because DHCP servers will not register the FQDN in their
321DNS if the domain part does not match theirs.
77961e7b
RM
322.Pp
323Also, see the
324.Ic env
325option above to control how the hostname is set on the host.
8fe4bf14 326.It Ic ia_na Op Ar iaid Op / address
00ababe4
RM
327Request a DHCPv6 Normal Address for
328.Ar iaid .
00ababe4 329.Ar iaid
ebc9d360
RM
330defaults to the
331.Ic iaid
332option as described above.
333You can request more than one ia_na by specifying a unique
334.Ar iaid
335for each one.
22ea2b0d 336.It Ic ia_ta Op Ar iaid
00ababe4
RM
337Request a DHCPv6 Temporary Address for
338.Ar iaid .
ebc9d360
RM
339You can request more than one ia_ta by specifying a unique
340.Ar iaid
341for each one.
fda2c663 342.It Ic ia_pd Op Ar iaid Oo / Ar prefix / Ar prefix_len Oc Op Ar interface Op / Ar sla_id Op / Ar prefix_len Op / Ar suffix
00ababe4
RM
343Request a DHCPv6 Delegated Prefix for
344.Ar iaid .
9ff636a5
RM
345This option must be used in an
346.Ic interface
347block.
94a79cea
RM
348Unless a
349.Ar sla_id
e3883bfc
RM
350of 0 is assigned with the same resultant prefix length as the delegation,
351a reject route is installed for the Delegated Prefix to
94a79cea 352stop unallocated addresses being resolved upstream.
22ea2b0d
RM
353If no
354.Ar interface
94a79cea 355is given then we will assign a prefix to every other interface with a
22ea2b0d 356.Ar sla_id
94a79cea 357equivalent to the interface index assigned by the OS.
22ea2b0d 358Otherwise addresses are only assigned for each
00ababe4
RM
359.Ar interface
360and
9ff636a5 361.Ar sla_id .
01de6f23 362To avoid delegating to any interface, use - as the invalid interface name.
fda2c663
RM
363Each assigned address will have a
364.Ar suffix ,
365defaulting to 1.
f9f15d95
RM
366If the
367.Ar suffix
569c0b11 368is 0 then a SLAAC address is assigned.
12c77e75 369You cannot assign a prefix to the requesting interface unless the
569c0b11
DG
370DHCPv6 server supports the
371.Li RFC 6603
12c77e75 372Prefix Exclude Option.
2fae05d0
RM
373.Nm dhcpcd
374has to be running for all the interfaces it is delegating to.
00ababe4 375A default
367f7b11 376.Ar prefix_len
94a79cea
RM
377of 64 is assumed, unless the maximum
378.Ar sla_id
379does not fit.
380In this case
381.Ar prefix_len
b2feeb9e 382is increased to the highest multiple of 8 that can accommodate the
94a79cea 383.Ar sla_id .
367f7b11 384.Ar sla_id
663d44bf
RM
385is an integer which must be unique inside the
386.Ar iaid
387and is added to the prefix which must fit inside
367f7b11
RM
388.Ar prefix_len
389less the length of the delegated prefix.
22ea2b0d
RM
390You can specify multiple
391.Ar interface /
392.Ar sla_id /
393.Ar prefix_len
394per
395.Ic ia_pd ,
396space separated.
9be26bc3 397IPv6RS should be disabled globally when requesting a Prefix Delegation.
00ababe4 398.Pp
9be26bc3
RM
399In the following example eth0 is the externally facing interface to be
400configured for both IPv4 and IPv6.
401The DHCPv4 server will provide us with an IPv4 address and a default route.
402The DHCPv6 server is going to provide us with an IPv6 address, a default
403route and a /64 subnet to be delegated to the internal interface.
404The eth1 interface will be automatically configured
405for IPv6 using the first address (::1) from the delegated prefix.
b9beb41b 406A second prefix is requested and assigned to two other interfaces.
9be26bc3 407.Xr rtadvd 8
b9beb41b
RM
408can be used with an empty configuration file on eth1, eth2 and eth3,
409to provide automatic
9be26bc3 410IPv6 address configuration for the internal network.
7e609902 411.Bd -literal
b9beb41b
RM
412noipv6rs # disable routing solicitation
413denyinterfaces eth2 # Don't touch eth2 at all
9be26bc3 414interface eth0
ffb6d59b 415 ipv6rs # enable routing solicitation for eth0
b9beb41b
RM
416 ia_na 1 # request an IPv6 address
417 ia_pd 2 eth1/0 # request a PD and assign it to eth1
418 ia_pd 3 eth2/1 eth3/2 # req a PD and assign it to eth2 and eth3
01de6f23 419 ia_pd 4 - # request a PD but don't assign it
9be26bc3 420.Ed
d7555c12
RM
421.It Ic ipv4only
422Only configure IPv4.
423.It Ic ipv6only
925fc70e 424Only configure IPv6.
329e1f12 425.It Ic fqdn Op disable | none | ptr | both
569c0b11
DG
426.Ar none
427will not ask the DHCP server to update DNS.
428.Ar ptr
429just asks the DHCP server to update the PTR
430record of the host in DNS, whereas
431.Ar both
432also updates the A record.
433.Ar disable
434will disable the FQDN option.
435The default is
cb8c4252 436.Ar both .
1b3bc477
RM
437.Nm dhcpcd
438itself never does any DNS updates.
e837a670
RM
439.Nm dhcpcd
440encodes the FQDN hostname as specified in
569c0b11 441.Li RFC 1035 .
3adc5520 442.It Ic interface Ar interface
012fd5d3
RM
443Subsequent options are only parsed for this
444.Ar interface .
62f12387 445.It Ic ipv6ra_autoconf
569c0b11 446Generate SLAAC addresses for each Prefix advertised by an IPv6
62f12387
RM
447Router Advertisement message with the Auto flag set.
448On by default.
449.It Ic ipv6ra_noautoconf
450Disables the above option.
61dd6cf9
RM
451.It Ic ipv6ra_fork
452By default, when
453.Nm dhcpcd
569c0b11 454receives an IPv6 Router Advertisement,
61dd6cf9
RM
455.Nm dhcpcd
456will only fork to the background if the RA contains at least one unexpired
e2c4a256 457RDNSS option and a valid prefix or no DHCPv6 instruction.
61dd6cf9
RM
458Set this option so to make
459.Nm dhcpcd
628167b1 460always fork on a RA.
d7555c12 461.It Ic ipv6rs
b831a425 462Enables IPv6 Router Advertisement solicitation.
eebe9a18
RM
463This is on by default, but is documented here in the case where it is disabled
464globally but needs to be enabled for one interface.
ba9dfb7a 465.It Ic leasetime Ar seconds
8f86349e 466Request DHCP a lease time of
ba9dfb7a 467.Ar seconds .
47985cc0
RM
468.Ar -1
469represents an infinite lease time.
470By default
471.Nm dhcpcd
472does not request any lease time and leaves it in the hands of the
473DHCP server.
8f86349e
RM
474It is not possible to request a DHCPv6 lease time as this is not RFC compliant.
475See RFC 8415 21.4, 21.6, 21.21 and 21.22.
281818ae
RM
476.It Ic link_rcvbuf Ar size
477Override the size of the link receive buffer from the kernel default.
478While
479.Nm dhcpcd
480will recover from link buffer overflows,
481this may not be desirable on heavily loaded systems.
94d1ded9
RM
482.It Ic logfile Ar logfile
483Writes to the specified
4704f921
RM
484.Ar logfile .
485.Nm dhcpcd
486still writes to
94d1ded9
RM
487.Xr syslog 3 .
488The
489.Ar logfile
9cc7e848 490is reopened when
94d1ded9
RM
491.Nm dhcpcd
492receives the
493.Dv SIGUSR2
494signal.
065125d4
RM
495.It Ic metric Ar metric
496Metrics are used to prefer an interface over another one, lowest wins.
497.Nm dhcpcd
0c34e10b 498will supply a default metric of 1000 +
065125d4 499.Xr if_nametoindex 3 .
0c34e10b
PF
500This will be offset by 2000 for wireless interfaces, with additional offsets
501of 1000000 for IPv4LL and 2000000 for roaming interfaces.
a6d84af0 502.It Ic mudurl Ar url
569c0b11 503Specifies the URL for a Manufacturer Usage Description (MUD).
d85ad7d0
RM
504The description is used by upstream network devices to instantiate any
505desired access lists.
506See draft-ietf-opsawg-mud for more information.
7dab081f 507.It Ic noalias
569c0b11
DG
508Any pre-existing IPv4 addresses will be removed from the interface when
509adding a new IPv4 address.
ba9dfb7a 510.It Ic noarp
cf42802e
RM
511Don't send any ARP requests.
512This also disables IPv4LL.
e65e82a5 513.It Ic arp_persistdefence
514Keep the IP address even if defence fails upon IP Address conflict.
c73ed171
RM
515.It Ic noauthrequired
516Don't require authentication even though we requested it.
d672ebda 517Also allows FORCERENEW and RECONFIGURE messages without authentication.
f572315d
RM
518.It Ic nodelay
519Don't delay for an initial randomised time when starting protocols.
413652c1
RM
520.It Ic nodev
521Don't load
522.Pa /dev
523management modules.
d4154ba7
RM
524.It Ic nodhcp
525Don't start DHCP or listen to DHCP messages.
526This is only useful when allowing IPv4LL.
527.It Ic nodhcp6
528Don't start DHCPv6 or listen to DHCPv6 messages.
569c0b11
DG
529Normally DHCPv6 is started by an IPv6 Router Advertisement instruction or
530configuration.
feb553d0
RM
531.It Ic nogateway
532Don't install any default routes.
533.It Ic gateway
534Install a default route if available (default).
37156a6b
RM
535.It Ic nohook Ar script
536Don't run this hook script.
8276da82
RM
537Matches full name, or prefixed with 2 numbers optionally ending with
538.Pa .sh .
fc7ee231
RM
539.Pp
540So to stop
541.Nm dhcpcd
ca6cdf58
RM
542from touching your DNS settings or starting wpa_supplicant you would do:-
543.D1 nohook resolv.conf, wpa_supplicant
bb8051bf
RM
544.It Ic noipv4
545Don't attempt to configure an IPv4 address.
ba9dfb7a
RM
546.It Ic noipv4ll
547Don't attempt to obtain an IPv4LL address if we failed to get one via DHCP.
548See
549.Rs
550.%T "RFC 3927"
551.Re
bb8051bf 552.It Ic noipv6
fabcbe2e 553Don't solicit or accept IPv6 Router Advertisements and DHCPv6.
91cd7324 554.It Ic noipv6rs
fabcbe2e 555Don't solicit or accept IPv6 Router Advertisements.
a26af491
RM
556.It Ic nolink
557Don't receive link messages about carrier status.
558You should only set this for buggy interface drivers.
2862d340 559.It Ic noup
f6082bca 560Don't bring the interface up when in manager mode.
cc45fbd7 561.It Ic option Ar option
d2616b08 562Requests the
cc45fbd7 563.Ar option
cf42802e
RM
564from the server.
565It can be a variable to be used in
ee4e620a 566.Xr dhcpcd-run-hooks 8
cf42802e 567or the numerical value.
b8ffa3cd
RM
568You can specify more
569.Ar option Ns s
570separated by commas, spaces or more
571.Ic option
572lines.
573Prepend dhcp6_ to
574.Ar option
575to request a DHCPv6 option.
daa70372
RM
576If no DHCPv6 options are configured,
577then DHCPv4 options are mapped to equivalent DHCPv6 options.
2be15e88
RM
578.Pp
579Prepend nd_ to
580.Ar option
581to handle ND options, but this only works for the
582.Ic nooption ,
583.Ic reject
584and
585.Ic require
586options.
f38394c1
RM
587.Pp
588To see a list of options you can use, call
589.Nm dhcpcd
590with the
591.Fl V , Fl Fl variables
592argument.
2063c6f9 593.It Ic nooption Ar option
2be15e88
RM
594Remove the option from the message before it's processed.
595.It Ic require Ar option
596Requires the
597.Ar option
598to be present in all messages, otherwise the message is ignored.
599To enforce that
600.Nm dhcpcd
601only responds to DHCP servers and not BOOTP servers, you can
602.Ic require
603.Ar dhcp_message_type .
569c0b11 604This isn't an exact science though because a BOOTP server can send DHCP-like
2be15e88
RM
605options.
606.It Ic reject Ar option
607Reject a message that contains the
608.Ar option .
609This is useful when you cannot use
610.Ic require
611to select / de-select BOOTP messages.
1abffd5b
RM
612.It Ic destination Ar option
613If
614.Nm
615detects an address added to a point to point interface (PPP, TUN, etc) then
616it will set the listed DHCP options to the destination address of the
617interface.
6f767217
RM
618.It Ic profile Ar name
619Subsequent options are only parsed for this profile
620.Ar name .
1abffd5b 621.It Ic quiet
87b266d2 622Suppress any dhcpcd output to the console, except for errors.
1abffd5b 623.It Ic reboot Ar seconds
a2a9a498
RM
624Allow
625.Ar reboot
dca37a5e
RM
626seconds before moving to the DISCOVER phase if we have an old lease to use.
627Allow
628.Ar reboot
629seconds before starting fallback states from the DISCOVER phase.
630IPv4LL is started when the first
631.Ar reboot
632timeout is reached.
a628f34d 633The default is 5 seconds.
901b42de 634A setting of 0 seconds causes
dca37a5e
RM
635.Nm
636to skip the reboot phase and go straight into DISCOVER.
901b42de
RM
637This is desirable for mobile users because if you change from network A to
638network B and they use the same subnet and the address from network A isn't
b831a425
RM
639in use on network B, then the DHCP server will remain silent even if
640authoritative which means
901b42de
RM
641.Nm dhcpcd
642will timeout before moving back to the DISCOVER phase.
dca37a5e 643This has no effect on DHCPv6 other than skipping the reboot phase.
2662d519
RM
644.It Ic release
645.Nm dhcpcd
646will release the lease prior to stopping the interface.
0aeb350c
RM
647.It Ic script Ar script
648Use
649.Ar script
650instead of the default
651.Pa @SCRIPT@ .
c53cf4ef
RM
652.It Ic ssid Ar ssid
653Subsequent options are only parsed for this wireless
654.Ar ssid .
1a70f1b5 655.It Ic slaac Ic hwaddr | Ic private | Ic token Ar token Op Ic temp | Ic temporary
1aeaf0e7 656Selects the interface identifier used for SLAAC generated IPv6 addresses.
eec0cf35 657If
1a70f1b5 658.Ic private
628167b1 659is used, a RFC 7217 address is generated.
1a70f1b5
RM
660If
661.Ic token Ar token
4b37f008 662is used then the token is combined with the prefix to make the final address.
628167b1 663The
1a70f1b5 664.Ic temporary
628167b1 665directive will create a temporary address for the prefix as well.
91a44b91
RM
666.It Ic static Ar value
667Configures a static
668.Ar value .
669If you set
670.Ic ip_address
671then
672.Nm dhcpcd
569c0b11
DG
673will not attempt to obtain a lease and will just use the value for the address
674with an infinite lease time.
b3c41d25
RM
675If you set an empty value this removes all prior static allocations to
676the same value.
677This is useful when using profiles and in the case of
678.Ic ip_address
679it will remove the static allocation.
680Note that setting 0.0.0.0 keeps the static allocation but waits for a 3rdparty
681to configure the address.
408fe755
RM
682If you set
683.Ic ip6_address ,
684.Nm dhcpcd
ea781ba6 685will continue auto-configuration as normal.
91a44b91 686.Pp
6dc3763d
RM
687Here is an example which configures two static address, overriding the default
688IPv4 broadcast address, an IPv4 router, DNS and disables IPv6 auto-configuration.
408fe755
RM
689You could also use the
690.Ic inform6
691command here if you wished to obtain more information via DHCPv6.
692For IPv4, you should use the
693.Ic inform Ar ipaddress
694option instead of setting a static address.
91a44b91 695.D1 interface eth0
408fe755 696.D1 noipv6rs
91a44b91 697.D1 static ip_address=192.168.0.10/24
6dc3763d 698.D1 static broadcast_address=192.168.0.63
408fe755 699.D1 static ip6_address=fd51:42f8:caae:d92e::ff/64
91a44b91 700.D1 static routers=192.168.0.1
408fe755 701.D1 static domain_name_servers=192.168.0.1 fd51:42f8:caae:d92e::1
1abffd5b
RM
702.Pp
703Here is an example for PPP which gives the destination a default route.
569c0b11
DG
704It uses the special
705.Ar destination
706keyword to insert the destination address
1abffd5b
RM
707into the value.
708.D1 interface ppp0
b3c41d25 709.D1 static ip_address=0.0.0.0
1abffd5b 710.D1 destination routers
d2616b08 711.It Ic timeout Ar seconds
569c0b11 712Time out after
b58bf81f
RM
713.Ar seconds ,
714instead of the default 30.
d93d7adc
RM
715A setting of 0
716.Ar seconds
717causes
718.Nm dhcpcd
719to wait forever to get a lease.
b58bf81f
RM
720If
721.Nm dhcpcd
722is working on a single interface then
723.Nm dhcpcd
724will exit when a timeout occurs, otherwise
725.Nm dhcpcd
726will fork into the background.
727If using IPv4LL then
728.Nm dhcpcd
729start the IPv4LL process after the timeout and then wait a little longer
730before really timing out.
d2616b08 731.It Ic userclass Ar string
9275b105 732Tag the DHCPv4 message with the userclass.
cf42802e 733You can specify more than one.
9275b105
RM
734.It Ic msuserclass Ar string
735Tag the DHCPv4 mesasge with the Microsoft userclass.
736Unlike the
737.Ic userclass
738option, this one can only be added once.
739It should only be used for Microsoft DHCP servers and the
740.Ic vendorclassid
741should be set to "MSFT 98" or "MSFT 5.0".
742This option is not RFC compliant.
bac03ede 743.It Ic vendor Ar code , Ns Ar value
87b266d2 744Add an encapsulated vendor option.
757520c5
RM
745.Ar code
746should be between 1 and 254 inclusive.
95d6dcfa
RM
747To add a raw vendor string, omit
748.Ar code
749but keep the comma.
757520c5
RM
750Examples.
751.Pp
752Set the vendor option 01 with an IP address.
753.D1 vendor 01,192.168.0.2
754Set the vendor option 02 with a hex code.
755.D1 vendor 02,01:02:03:04:05
756Set the vendor option 03 with an IP address as a string.
757.D1 vendor 03,\e"192.168.0.2\e"
87b266d2 758Set un-encapsulated vendor option to hello world.
9cb58952 759.D1 vendor ,"hello world"
bac03ede 760.It Ic vendorclassid Ar string
1300150e 761Set the DHCP Vendor Class.
569c0b11 762DHCPv6 has its own option as shown below.
eebe9a18
RM
763The default is
764dhcpcd-<version>:<os>:<machine>:<platform>.
765For example
766.D1 dhcpcd-5.5.6:NetBSD-6.99.5:i386:i386
bac03ede 767If not set then none is sent.
eebe9a18
RM
768Some badly configured DHCP servers reject unknown vendorclassids.
769To work around it, try and impersonate Windows by using the MSFT vendorclassid.
7a911e57 770.It Ic vendclass Ar en Ar data
1300150e 771Add the DHCPv6 Vendor Indetifying Vendor Class with the IANA assigned Enterprise
7a911e57
RM
772Number
773.Ar en
774with the
775.Ar data .
776This option can be set more than once to add more data, but the behaviour,
ea781ba6 777as per RFC 3925 is undefined if the Enterprise Number differs.
7013b073 778.It Ic waitip Op 4 | 6
2a07a2af 779Wait for an address to be assigned before forking to the background.
7013b073
RM
7804 means wait for an IPv4 address to be assigned.
7816 means wait for an IPv6 address to be assigned.
8b7499fd
RM
782If no argument is given,
783.Nm
784will wait for any address protocol to be assigned.
785It is possible to wait for more than one address protocol and
786.Nm
787will only fork to the background when all waiting conditions are satisfied.
4242c9b3
RM
788.It Ic xidhwaddr
789Use the last four bytes of the hardware address as the DHCP xid instead
790of a randomly generated number.
eaa90296 791.El
8e7d8c37 792.Ss Defining new options
569c0b11
DG
793DHCP, ND and DHCPv6 allow for the use of custom options, and RFC 3925 vendor
794options for DHCP can also be supplied.
8e7d8c37 795Each option needs to be started with the
2be15e88 796.Ic define ,
a6d84af0 797.Ic definend ,
8e7d8c37 798.Ic define6
569c0b11
DG
799or
800.Ic vendopt
8e7d8c37
RM
801directive.
802This can optionally be followed by both
803.Ic embed
804or
805.Ic encap
806options.
807Both can be specified more than once and
808.Ic embed
809must come before
810.Ic encap .
811.Bl -tag -width indent
812.It Ic define Ar code Ar type Ar variable
813Defines the DHCP option
814.Ar code
815of
816.Ar type
817with a name of
818.Ar variable
819exported to
820.Xr dhcpcd-run-hooks 8 .
2be15e88
RM
821.It Ic definend Ar code Ar type Ar variable
822Defines the ND option
823.Ar code
824of
825.Ar type
826with a name of
827.Ar variable
828exported to
829.Xr dhcpcd-run-hooks 8 ,
830with a prefix of
05e49063 831.Va nd_ .
8e7d8c37
RM
832.It Ic define6 Ar code Ar type Ar variable
833Defines the DHCPv6 option
834.Ar code
835of
836.Ar type
837with a name of
838.Ar variable
839exported to
840.Xr dhcpcd-run-hooks 8 ,
841with a prefix of
05e49063 842.Va dhcp6_ .
7a911e57
RM
843.It Ic vendopt Ar code Ar type Ar variable
844Defines the Vendor-Identifying Vendor Options.
845The
846.Ar code
925fc70e 847is the IANA Enterprise Number which will uniquely describe the encapsulated
7a911e57
RM
848options.
849.Ar type
850is normally
851.Ar encap .
852.Ar variable
853names the Vendor option to be exported.
8e7d8c37
RM
854.It Ic embed Ar type Ar variable
855Defines an embedded variable within the defined option.
856The length is determined by the
857.Ar type .
63bdd2c2
RM
858If the
859.Ar variable
860is not the same as defined in the parent option,
861it is prefixed with the parent
862.Ar variable
863first with an underscore.
cc71162d
RM
864If the
865.Ar variable
866has the name of
867.Ar reserved
868then it is not processed.
8e7d8c37
RM
869.It Ic encap Ar code Ar type Ar variable
870Defines an encapsulated variable within the defined option.
871The length is determined by the
872.Ar type .
63bdd2c2
RM
873If the
874.Ar variable
875is not the same as defined in the parent option,
876it is prefixed with the parent
877.Ar variable
878first with an underscore.
879.El
880.Ss Type prefix
881These keywords come before the type itself, to describe it more fully.
882You can use more than one, but they must appear in the order listed below.
883.Bl -tag -width -indent
884.It Ic request
885Requests the option by default without having to be specified in user
569c0b11 886configuration.
63bdd2c2 887.It Ic norequest
569c0b11 888This option cannot be requested, regardless of user configuration.
ecdbb919
RM
889.It Ic optional
890This option is optional.
569c0b11 891Only makes sense for embedded options like the client FQDN option, where
ecdbb919 892the FQDN string itself is optional.
03476881
RM
893.It Ic index
894The option can appear more than once and will be indexed.
63bdd2c2 895.It Ic array
b2feeb9e 896The option data is split into a space separated array, each element being
63bdd2c2 897the same type.
8e7d8c37
RM
898.El
899.Ss Types to define
b21cd906
RM
900The type directly affects the length of data consumed inside the option.
901Any remaining data is normally discarded.
902Lengths can be specified for string and binhex types, but this is generally
903with other data embedded afterwards in the same option.
8e7d8c37
RM
904.Bl -tag -width indent
905.It Ic ipaddress
cc71162d 906An IPv4 address, 4 bytes.
8e7d8c37 907.It Ic ip6address
cc71162d 908An IPv6 address, 16 bytes.
b21cd906 909.It Ic string Op : Ic length
8f008ca7 910A NVT ASCII string of printable characters.
8e7d8c37 911.It Ic byte
cc71162d
RM
912A byte.
913.It Ic bitflags : Ic flags
914A byte represented as a string of flags, most significant bit first.
915For example, using ABCDEFGH then A would equal 10000000, B 01000000,
916C 00100000, etc.
917If the bit is not set, the flag is not printed.
925fc70e
RM
918A flag of 0 is not printed even if the bit position is set.
919This is to allow reservation of the first bits while assigning the last bits.
8e7d8c37 920.It Ic int16
cc71162d 921A signed 16bit integer, 2 bytes.
8e7d8c37 922.It Ic uint16
cc71162d 923An unsigned 16bit integer, 2 bytes.
8e7d8c37 924.It Ic int32
cc71162d 925A signed 32bit integer, 4 bytes.
8e7d8c37 926.It Ic uint32
cc71162d
RM
927An unsigned 32bit integer, 4 bytes.
928.It Ic flag
929A fixed value (1) to indicate that the option is present, 0 bytes.
8e7d8c37 930.It Ic domain
569c0b11 931An RFC 3397 encoded string.
8f008ca7 932.It Ic dname
569c0b11 933An RFC 1035 validated string.
500cd813
RM
934.It Ic uri
935If an array then the first two bytes are the URI length inside the option data.
936Otherwise, the whole option data is the URI.
937As a space is not allowed in the URI encoding, the URIs are space separated.
b21cd906 938.It Ic binhex Op : Ic length
cc71162d 939Binary data expressed as hexadecimal.
8e7d8c37 940.It Ic embed
cc71162d 941Contains embedded options (implies encap as well).
8e7d8c37 942.It Ic encap
cc71162d 943Contains encapsulated options (implies embed as well).
03476881 944.It Ic option
cc71162d 945References an option from the global definition.
8e7d8c37
RM
946.El
947.Ss Example definition
569c0b11 948.D1 # DHCP option 81, Fully Qualified Domain Name, RFC 4702
63bdd2c2
RM
949.D1 define 81 embed fqdn
950.D1 embed byte flags
951.D1 embed byte rcode1
952.D1 embed byte rcode2
8e7d8c37
RM
953.D1 embed domain fqdn
954.Pp
569c0b11 955.D1 # DHCP option 125, Vendor Specific Information Option, RFC 3925
63bdd2c2
RM
956.D1 define 125 encap vsio
957.D1 embed uint32 enterprise_number
8e7d8c37 958.D1 # Options defined for the enterprise number
63bdd2c2 959.D1 encap 1 ipaddress ipaddress
0dc49454 960.Ss Supported Authentication Protocols
c73ed171
RM
961.Bl -tag -width -indent
962.It Ic token
32945b61
RM
963Sends a plain text token the server expects and matches a token sent by
964the server.
569c0b11
DG
965The tokens do not have to be the same.
966If unspecified, the token with a
967.Ar secretid
968of 0 will be used in sending messages
32945b61 969and validating received messages.
c73ed171
RM
970.It Ic delayedrealm
971Delayed Authentication.
972.Nm dhcpcd
973will send an authentication option with no key or MAC.
974The server will see this option, and select a key for
975.Nm , writing the
976.Ar realm
977and
978.Ar secretid
979in it.
980.Nm dhcpcd
569c0b11
DG
981will then look for an unexpired token with a matching
982.Ar realm
983and
984.Ar secretid .
925fc70e 985This token is used to authenticate all other messages.
c73ed171
RM
986.It Ic delayed
987Same as above, but without a realm.
988.El
0dc49454 989.Ss Supported Authentication Algorithms
c73ed171
RM
990If none specified,
991.Ic hmac-md5
992is the default.
993.Bl -tag -width -indent
994.It Ic hmac-md5
995.El
996.Ss Supported Replay Detection Mechanisms
997If none specified,
998.Ic monotonic
999is the default.
cf0840ef 1000If this is changed from what was previously used,
569c0b11
DG
1001or the means of calculating or storing it is broken, then the DHCP server
1002will probably have to have its notion of the client's Replay Detection Value
cf0840ef 1003reset.
c73ed171 1004.Bl -tag -width -indent
cf0840ef
RM
1005.It Ic monocounter
1006Read the number in the file
1007.Pa @DBDIR@/dhcpcd-rdm.monotonic
1008and add one to it.
1009.It Ic monotime
569c0b11 1010Create an NTP timestamp from the system time.
c73ed171 1011.It Ic monotonic
cf0840ef
RM
1012Same as
1013.Ic monotime .
c73ed171 1014.El
ba9dfb7a 1015.Sh SEE ALSO
0b4a1931 1016.Xr fnmatch 3 ,
065125d4 1017.Xr if_nametoindex 3 ,
0b4a1931
RM
1018.Xr dhcpcd 8 ,
1019.Xr dhcpcd-run-hooks 8
ba9dfb7a 1020.Sh AUTHORS
2cfe8d07 1021.An Roy Marples Aq Mt roy@marples.name
ba9dfb7a 1022.Sh BUGS
fd73ceb1 1023Please report them to
dc9775ed 1024.Lk https://roy.marples.name/projects/dhcpcd