Although dhcpcd can do everything from the
command line, there are cases where it's just easier to do it once in a
configuration file. Most of the options found in dhcpcd(8)
can be used here. The first word on the line is the option and the rest of
the line is the value. Leading and trailing whitespace for the option and
value are trimmed. You can escape characters in the value using the \
character. Comments can be prefixed with the # character. String values
should be quoted with the " character.
Here's a list of available options:
allowinterfaces
patterndenyinterfaces then it is still
denied.denyinterfaces
patternarping
address [address]dhcpcd will arping each address in order before
attempting DHCP. If an address is found, we will select the replying
hardware address as the profile, otherwise the ip address. Example:
authprotocol
protocol algorithm
rdmauthtoken
secretid realm
expire keydhcpcd has the error
dhcpcd could not find the correct
authentication token in your configuration.backgroundblacklist
address[/cidr]whitelist
address[/cidr]blacklist is ignored if
whitelist is set.bootpbroadcastdhcpcd will set
this automatically.controlgroup
groupdhcpcd.debugdev
valuedhcpcd will load the first one
found to work, if any.env
valueenv
force_hostname=YES. Or set which driver
wpa_supplicant(8) should use with
env
wpa_supplicant_driver=nl80211
If the hostname is set, it will be will set to the FQDN if
possible as per RFC 4702 section 3.1. If the FQDN option is missing,
dhcpcd will still try and set a FQDN from the
hostname and domain options for consistency. To override this, set
env
hostname_fqdn=[YES|NO|SERVER]. A value of server
means just what the server says, don't manipulate it. This could lead to
an inconsistent hostname on a DHCPv4 and DHCPv6 network where the DHCPv4
hostname is short and the DHCPv6 has an FQDN. DHCPv6 has no hostname
option.
clientid
stringdhcpcd sends a default
clientid of the hardware family and the hardware
address.duidclientid. The DUID-LLT generated will be held in
/etc/dhcpcd.duid and should not be copied to other
hosts.iaid
iaidinterface block.
This defaults to the last 4 bytes of the hardware address assigned to the
interface. Each instance of this should be unique within the scope of the
client and dhcpcd warns if a conflict is detected.
If there is a conflict, it is only a problem if the conflicted IAIDs are
used on the same network.dhcpdhcp6ipv4ipv6request
[address]inform
[address[/cidr]]request as above, but sends a DHCP
INFORM instead of DISCOVER/REQUEST. This does not get a lease as such,
just notifies the DHCP server of the address in use.
You should also include the optional cidr network
number in case the address is not already configured on the interface.
dhcpcd remains running and pretends it has an
infinite lease. dhcpcd will not de-configure the
interface when it exits. If dhcpcd fails to
contact a DHCP server then it returns a failure instead of falling back on
IPv4LL.inform6dhcpcd is not processing IPv6RA messages and the
need for DHCPv6 Information Request exists.persistentdhcpcd normally de-configures the interface and
configuration when it exits. Sometimes, this isn't desirable if, for
example, you have root mounted over NFS or SSH clients connect to this
host and they need to be notified of the host shutting down. You can use
this option to stop this from happening.fallback
profilehostname
namehostname_shortAlso, see the env option above to
control how the hostname is set on the host.
ia_na
[iaid [/ address]]iaid
option as described above. You can request more than one ia_na by
specifying a unique iaid for each one.ia_ta
[iaid]ia_pd
[iaid [/ prefix /
prefix_len] [interface [/
sla_id [/ prefix_len [/
suffix]]]]]interface block. Unless
a sla_id of 0 is assigned with the same resultant
prefix length as the delegation, a reject route is installed for the
Delegated Prefix to stop unallocated addresses being resolved upstream. If
no interface is given then we will assign a prefix
to every other interface with a sla_id equivalent to
the interface index assigned by the OS. Otherwise addresses are only
assigned for each interface and
sla_id. Each assigned address will have a
suffix, defaulting to 1. If the
suffix is 0 then a slaac address is assigned. You
cannot assign a prefix to the requesting interface unless the DHCPv6
server supports RFC6603 Prefix Exclude Option.
dhcpcd has to be running for all the interfaces it
is delegating to. A default prefix_len of 64 is
assumed, unless the maximum sla_id does not fit. In
this case prefix_len is increased to the highest
multiple of 8 that can accommodate the sla_id.
sla_id is an integer which must be unique inside the
iaid and is added to the prefix which must fit
inside prefix_len less the length of the delegated
prefix. You can specify multiple interface /
sla_id / prefix_len per
ia_pd, space separated. IPv6RS should be disabled
globally when requesting a Prefix Delegation.
In the following example eth0 is the externally facing interface to be configured for both IPv4 and IPv6. The DHCPv4 server will provide us with an IPv4 address and a default route. The DHCPv6 server is going to provide us with an IPv6 address, a default route and a /64 subnet to be delegated to the internal interface. The eth1 interface will be automatically configured for IPv6 using the first address (::1) from the delegated prefix. A second prefix is requested and assigned to two other interfaces. rtadvd(8) can be used with an empty configuration file on eth1, eth2 and eth3, to provide automatic IPv6 address configuration for the internal network.
noipv6rs # disable routing solicitation
denyinterfaces eth2 # Don't touch eth2 at all
interface eth0
ipv6rs # enable routing solicitation get the
# default IPv6 route
ia_na 1 # request an IPv6 address
ia_pd 2 eth1/0 # request a PD and assign it to eth1
ia_pd 3 eth2/1 eth3/2 # req a PD and assign it to eth2 and eth3
ipv4onlyipv6onlyfqdn
[disable | ptr | both]dhcpcd itself never
does any DNS updates. dhcpcd encodes the FQDN
hostname as specified in RFC1035.interface
interfaceipv6ra_autoconfipv6ra_noautoconfipv6ra_forkdhcpcd receives an IPv6 RA,
dhcpcd will only fork to the background if the RA
contains at least one unexpired RDNSS option and a valid prefix or no
DHCPv6 instruction. Set this option so to make
dhcpcd always fork on an RA.ipv6ra_ownipv6ra_own_defaultipv6rsleasetime
secondslogfile
logfiledhcpcd
receives the SIGUSR2 signal.metric
metricdhcpcd will supply a default metric of 200 +
if_nametoindex(3). An extra 100 will be added for
wireless interfaces.noaliasnoarpnoauthrequirednodelaynodevnodhcpnodhcp6nogatewaygatewaynohook
scriptSo to stop dhcpcd from touching your
DNS settings or starting wpa_supplicant you would do:-
noipv4noipv4llnoipv6noipv6rsnolinknoupdhcpcd.conf cannot determine the carrier state,
dhcpcd.conf will enter a tight polling loop until
the interface is marked up and running or a valid carrier state is
reported.option
optionoption lines.
option Prepend dhcp6_ to
option to request a DHCPv6 option. If no DHCPv6
options are configured, then DHCPv4 options are mapped to equivalent
DHCPv6 options.
Prepend nd_ to option to handle ND
options, but this only works for the nooption,
reject and require
options.
To see a list of options you can use, call
dhcpcd with the -V,
--variables argument.
nooption
optionrequire
optiondhcpcd only responds to DHCP servers and not BOOTP
servers, you can require
dhcp_message_type. This isn't an exact science
though because a BOOTP server can send DHCP like options.reject
optionrequire to select /
de-select BOOTP messages.destination
optiondhcpcd.conf detects an address added to a point
to point interface (PPP, TUN, etc) then it will set the listed DHCP
options to the destination address of the interface.profile
namequietreboot
secondsdhcpcd to skip the REBOOT phase and go straight
into DISCOVER. This is desirable for mobile users because if you change
from network A to network B and they use the same subnet and the address
from network A isn't in use on network B, then the DHCP server will remain
silent even if authoritative which means dhcpcd
will timeout before moving back to the DISCOVER phase.releasedhcpcd will release the lease prior to stopping
the interface.script
scriptssid
ssidslaac
[hwaddr | private]static
valueip_address then dhcpcd
will not attempt to obtain a lease and just use the value for the address
with an infinite lease time. If you set
ip6_address, dhcpcd will
continue auto-configuation as normal.
Here is an example which configures two static address, an
IPv4 router, DNS and disables IPv6 auto-configuration. You could also
use the inform6 command here if you wished to
obtain more information via DHCPv6. For IPv4, you should use the
inform ipaddress option
instead of setting a static address.
Here is an example for PPP which gives the destination a default route. It uses the special destination keyword to insert the destination address into the value.
timeout
secondsdhcpcd to wait forever to get a lease. If
dhcpcd is working on a single interface then
dhcpcd will exit when a timeout occurs, otherwise
dhcpcd will fork into the background. If using
IPv4LL then dhcpcd start the IPv4LL process after
the timeout and then wait a little longer before really timing out.userclass
stringvendor
code,valueSet the vendor option 01 with an IP address.
vendorclassid
stringvendclass
en datawaitip
[4 | 6]dhcpcd.conf will wait for any address protocol to
be assigned. It is possible to wait for more than one address protocol and
dhcpcd.conf will only fork to the background when
all waiting conditions are satisfied.xidhwaddrDHCP, ND and DHCPv6 allow for the use of custom options. Each
option needs to be started with the define, or
define6 directive. This can optionally be followed
by both embed or encap
options. Both can be specified more than once and
embed must come before
encap.
define
code type
variabledefinend
code type
variabledefine6
code type
variablevendopt
code type
variableembed
type variableencap
code type
variableThese keywords come before the type itself, to describe it more fully. You can use more than one, but they must appear in the order listed below.
requestnorequestoptionalindexarrayThe type directly affects the length of data consumed inside the option. Any remaining data is normally discarded. Lengths can be specified for string and binhex types, but this is generally with other data embedded afterwards in the same option.
ipaddressip6addressstring
[: length]bytebitflags:
flagsint16uint16int32uint32flagdomaindnamebinhex
[: length]embedencapoptiontokendelayedrealmdhcpcd will send an
authentication option with no key or MAC. The server will see this option,
and select a key for dhcpcd.conf, writing the
realm and secretid in it.
dhcpcd will then look for a non-expired token with
a matching realm and secretid. This token is used to authenicate all other
messages.delayedIf none specified, hmac-md5 is the
default.
If none specified, monotonic is the
default. If this is changed from what was previously used, or the means of
calculating or storing it is broken then the DHCP server will probably have
to have its notion of the clients Replay Detection Value reset.
monocountermonotimemonotonicmonotime.fnmatch(3), if_nametoindex(3), dhcpcd(8), dhcpcd-run-hooks(8)
Roy Marples <roy@marples.name>
Please report them to http://roy.marples.name/projects/dhcpcd