SYNOPSIS
[-dknpAEGHMLNRSTY ] [-c , -script script ] [-h , -hostname hostname ] [-i , -classid classid ] [-l , -leasetime seconds ] [-m , -metric metric ] [-r , -request address ] [-t , -timeout seconds ] [-u , -userclass class ] [-F , -fqdn FQDN ] [-I , -clientid clientid ] [-P , -pidfile pidfile ] interface-k , -release interface
-x , -exit interface
DESCRIPTION
is an implementation of the DHCP client specified in- "RFC 2131"
Local Link configuration
If failed to obtain a lease, it will probe for a valid IPv4LL address Po aka Zeroconf, aka APIPA Pc . Once obtained it will probe every 10 seconds for a DHCP server to get a proper address.Even when obtains a proper lease, it will still add a Local Link route Po 165.254.0.0/16 Pc so that the host can communicate with clients using these addresses.
When using IPv4LL, will always succeed and return a 0 exit code. To disable this behaviour, you can use the -L , -noipv4ll option.
Hooking into DHCP events
will run /etc/dhcpcd.sh, or the script specified by the -c , -script option. It will set $1 to a shell compatible file that holds various configuration settings obtained from the DHCP server and $2 to either up, down or new depending on the state of . ignores the exist code of the script.Fine tuning
You can fine tune the behaviour of with the following options :-- -d , -debug
- Echo debug and informational messages to the console. Subsequent debug options stop from daemonising.
- -h , -hostname hostname
- By default, will send the current hostname to the DHCP server so it can register in DNS. You can use this option to specify the hostname sent, or an empty string to stop any hostname from being sent.
- -i , -classid classid
- Override the DHCP vendor classid field we send. The default is dhcpcd-<version>.
- -k , -release
- This causes an existing process running on the interface to release it's lease, deconfigure the interface and then exit.
- -l , -leasetime seconds
- Request a specific lease time in seconds By default does not request any lease time and leaves the it in the hands of the DHCP server.
- -m , -metric metric
- Added routes will use the metric on systems where this is supported Po presently only Linux Pc . Route metrics allow the addition of routes to the same destination across different interfaces, the lower the metric the more it is preferred.
- -n , -renew
- Notifies an existing process running on the interface to renew it's lease. If is not running, then it starts up as normal.
- -p , -persistent
- normally deconfigures the interface and configuration when it exits. Sometimes, this isn't desirable if for example you have root mounted over NFS. You can use this option to stop this from happening.
- -r , -request [address ]
- normally sends a DHCP Broadcast to find servers to offer an address. will then request the address used. You can use this option to skip the broadcast step and just request an address The downside is if you request an address the DHCP server does not know about or the DHCP server is not authorative, it will remain silent. In this situation, we go back to the init state and broadcast again. If no address is given then we use the first address currently assigned to the interface
- -s , -inform [address [/ cidr ] ]
- Behaves exactly like -r , -request as above, but sends a DHCP inform instead of a request. This requires the interface to be configured first. This does not get a lease as such, just notifies the DHCP server of the address we are using.
- -t , -timeout seconds
- Timeout after seconds instead of the default 20. A setting of 0 seconds causes to wait forever to get a lease.
- -u , -userclass class
- Tags the DHCP message with the userclass class DHCP servers use this give memebers of the class DHCP options other than the default, without having to know things like hardware address or hostname. If Fl F , -fqdn Ar fqdn Requests that the DHCP server updates DNS using FQDN instead of just a hostname. Valid values for fqdn are none, ptr and both. dhcpcd itself never does any DNS updates.
- -H , --sethostname
-
Forces
to set the hostname as supplied by the DHCP server. Because some OS's and users
prefer to have just the hostname, or the full FQDN more
-H , --sethostname
options change the behaviour. Below is the list of possible combinations:-
- -H
- set the hostname to the full FQDN.
- -HH
- strip the domain if it matches the dns domain.
- -HHH
- strip the domain regardless.
- -HHHH
- same as -H but force hostname lookup via DNS.
- -HHHHH
- same as above, but strip the domain if it matches the dns domain.
- -HHHHHH
- same as above, but strip the domain regardless.
- -I , -clientid clientid
- Send clientid as a client identifier string. If clientid matches a hardware address format, such as 01:00:01:02:03:04:05 then we encode it as that, otherwise as a string. You need to specify the hardware type in the first byte. Ethernet is 01, and the hardware address in the example is 00:01:02:03:04:05. If the clientid is a blank string, then we disable DUID support and use a clientid as shown above.
- -S, -mscsr
- Microsoft have their own code for Classless Static Routes Po RFC 3442 Pc . You can use this option to request this as well as the normal CSR. Another instace of this option only requests the Microsoft CSR to prevent DHCP message over-running its maximum size. DHCP server administrators should update their CSR code from the Microsoft specific one to the RFC compliant one as the content is fully compatible.
- -P, -pidfile filename
- Write the PID to filename instead of /var/run/dhcpcd- interface .pid.
Restriciting behaviour
will try to do as much as it can by default. However, there are sometimes situations where you don't want the things to be configured exactly how the the DHCP server wants. Here are some option that deal with turning these bits off.- -A , -noarp
- Don't request or claim the address by ARP.
- -G , -nogateway
- Don't set any default routes.
- -L , -noipv4ll
- Don't use IPv4LL at all.
- -M , -nomtu
- Don't set the MTU of the interface
- -N , -nontp
- Don't touch /etc/ntpd.conf or restart the ntp service.
- -R , -nodns
- Don't send DNS information to resolvconf or touch /etc/resolv.conf
- -T , -test
- On receipt of discover messages, simply print the contents of the DHCP message to the console. will not configure the interface touch any files or restart any services.
- -Y , -nonis
- Don't touch /etc/yp.conf or restart the ypbind service.
NOTES
Because supports InfiniBand, we put a Node-specific Client Identifier in the ClientID field. This is required by RFC 4390. It's also required for DHCP IPv6 which should support one day. However, some DHCP servers have no idea what this is and reject the message as they do not understand type 255. This is not conformant with RFC 2132 and the server should be fixed. Also, some DHCP server configurations require an ethernet hardware address of 6 hexacdecimal numbers in the ClientID which is the default behaviour of most other DHCP clients. If your DHCP server is as desribed above, you should fix the server, or if that is not an option you can compile DUID support out of or use the -I , -clientid clientid option and set clientid to ''.ISC dhcpd, dnsmasq, udhcpd and Microsoft DHCP server 2003 default configurations work just fine with the default configuration.
requires a Berkley Packet Filter, or BPF device on BSD based systems and a Linux Socket Filter, or LPF device on Linux based systems.
FILES
- /etc/dhcpcd.sh
- Bourne shell script that is run when we configure or deconfigure an interface.
- /var/lib/dhcpcd/dhcpcd.duid
- Text file that holds the DUID used to identify the host.
- /var/lib/dhcpcd/dhcpcd- interface .info
- Bourne shell file that holds the DHCP values used in configuring the interface. This path is passed as the first argument to /etc/dhcpcd.sh