%general-entities; ]> $Date$ DHCP-&dhcp-version; DHCP Introduction to ISC DHCP The ISC DHCP package contains both the client and server programs for DHCP. dhclient (the client) is used for connecting to a network which uses DHCP to assign network addresses. dhcpd (the server) is used for assigning network addresses on private networks. &lfs101_checked; Package Information Download (HTTP): Download (FTP): Download MD5 sum: &dhcp-md5sum; Download size: &dhcp-size; Estimated disk space required: &dhcp-buildsize; Estimated build time: &dhcp-time; User Notes: Kernel Configuration You must have Packet Socket support. IPv6 support is optional. [*] Networking support ---> [CONFIG_NET] Networking options ---> <*> Packet socket [CONFIG_PACKET] <*> The IPv6 Protocol ---> [CONFIG_IPV6] DHCP Installation of ISC DHCP First, fix a build issue with GCC 10 and later: sed -i '/o.*dhcp_type/d' server/mdb.c && sed -r '/u.*(local|remote)_port/d' \ -i client/dhclient.c \ relay/dhcrelay.c This package does not support parallel build. Be careful with the instructions below. The single and double quotes are important because the defined variables are used verbatim in the code. Install ISC DHCP by running the following commands: ( export CFLAGS="${CFLAGS:--g -O2} -Wall -fno-strict-aliasing \ -D_PATH_DHCLIENT_SCRIPT='\"/usr/sbin/dhclient-script\"' \ -D_PATH_DHCPD_CONF='\"/etc/dhcp/dhcpd.conf\"' \ -D_PATH_DHCLIENT_CONF='\"/etc/dhcp/dhclient.conf\"'" && ./configure --prefix=/usr \ --sysconfdir=/etc/dhcp \ --localstatedir=/var \ --with-srv-lease-file=/var/lib/dhcpd/dhcpd.leases \ --with-srv6-lease-file=/var/lib/dhcpd/dhcpd6.leases \ --with-cli-lease-file=/var/lib/dhclient/dhclient.leases \ --with-cli6-lease-file=/var/lib/dhclient/dhclient6.leases ) && make -j1 This package does not come with a test suite. If you only want to install the ISC DHCP client, issue the following commands as the root user: make -C client install && install -v -m755 client/scripts/linux /usr/sbin/dhclient-script Skip to in order to configure the client If you only want to install the ISC DHCP server, issue the following command as the root user: make -C server install Skip to in order to configure the server. Alternatively, you can install whole package which includes the client, server, relay, static libraries and development headers by running the following commands as the root user: make install && install -v -m755 client/scripts/linux /usr/sbin/dhclient-script Configuring ISC DHCP Config Files /etc/dhcp/dhclient.conf and /etc/dhcp/dhcpd.conf /etc/dhcp/dhclient.conf /etc/dhcp/dhcpd.conf Client Configuration Create a basic /etc/dhcp/dhclient.conf by running the following command as the root user: install -vdm755 /etc/dhcp && cat > /etc/dhcp/dhclient.conf << "EOF" # Begin /etc/dhcp/dhclient.conf # # Basic dhclient.conf(5) #prepend domain-name-servers 127.0.0.1; request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, netbios-name-servers, netbios-scope, interface-mtu, ntp-servers; require subnet-mask, domain-name-servers; #timeout 60; #retry 60; #reboot 10; #select-timeout 5; #initial-interval 2; # End /etc/dhcp/dhclient.conf EOF See man 5 dhclient.conf for additional options. Now create the /var/lib/dhclient directory which will contain DHCP Client leases by running the following command as the root user: install -v -dm 755 /var/lib/dhclient If you want to configure network interfaces at boot using dhclient, you need to install the dhclient@.service unit included in the package by running the following command as the root user: dhclient@.service make install-dhclient Make sure that you disable the systemd-networkd service or configure it not to manage the interfaces you want to manage with dhclient. At this point you can test if dhclient is behaving as expected by running the following command as the root user: dhclient <eth0> systemctl start dhclient@eth0 Replace <eth0> with your desired interface. If you want more verbose output, add the -v parameter to the command above. If you want to configure network interfaces at boot using dhclient, you need to install the /lib/services/dhclient script included in package: make install-service-dhclient dhclient (service script) Next, create the /etc/sysconfig/ifconfig.eth0 configuration file with the following commands as the root user: cat > /etc/sysconfig/ifconfig.eth0 << "EOF" ONBOOT="yes" IFACE="eth0" SERVICE="dhclient" DHCP_START="" DHCP_STOP="" # Set PRINTIP="yes" to have the script print # the DHCP assigned IP address PRINTIP="no" # Set PRINTALL="yes" to print the DHCP assigned values for # IP, SM, DG, and 1st NS. This requires PRINTIP="yes". PRINTALL="no" EOF /etc/sysconfig/ifconfig.eth0 Adjust the file to suit your needs. For more information on the appropriate DHCP_START and DHCP_STOP values see man 8 dhclient. To start dhclient on a specific interface at boot, enable the previously installed systemd unit by running the following command as the root user: systemctl enable dhclient@eth0 Replace eth0 with the actual interface name. Server Configuration Note that you only need the DHCP server if you want to issue LAN addresses over your network. The DHCP client doesn't need the server in order to function properly. Start with creating /etc/dhcp/dhcpd.conf by running the following command as the root user: cat > /etc/dhcp/dhcpd.conf << "EOF" # Begin /etc/dhcp/dhcpd.conf # # Example dhcpd.conf(5) # Use this to enable / disable dynamic dns updates globally. ddns-update-style none; # option definitions common to all supported networks... option domain-name "example.org"; option domain-name-servers ns1.example.org, ns2.example.org; default-lease-time 600; max-lease-time 7200; # This is a very basic subnet declaration. subnet 10.254.239.0 netmask 255.255.255.224 { range 10.254.239.10 10.254.239.20; option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org; } # End /etc/dhcp/dhcpd.conf EOF Adjust the file to suit your needs. See man 5 dhcpd.conf for additional options. Now create the /var/lib/dhcpd directory which will contain DHCP Server leases by running the following command as the root user: install -v -dm 755 /var/lib/dhcpd If you want to start the DHCP Server at boot, install the /etc/rc.d/init.d/dhcpd inti script dhcpd.service unit included in the package: make install-dhcpd dhcpd You will need to edit the /etc/sysconfig/dhcpd /etc/default/dhcpd in order to set the interface on which dhcpd will serve the DHCP requests. Contents Installed Programs Installed Libraries Installed Directories dhclient, dhclient-script, dhcpd, dhcrelay and omshell libdhcpctl.a and libomapi.a /etc/dhcp, /usr/include/dhcpctl, /usr/include/isc-dhcp, /usr/include/omapip, /var/lib/dhclient and /var/lib/dhcpd Short Descriptions dhclient is the implementation of the DHCP client dhclient dhclient-script is used by dhclient to (re)configure interfaces. It can make extra changes by invoking custom dhclient-{entry,exit}-hooks dhclient-script dhcpd implements Dynamic Host Configuration Protocol (DHCP) and Internet Bootstrap Protocol (BOOTP) requests for network addresses dhcpd dhcrelay provides a means to accept DHCP and BOOTP requests on a subnet without a DHCP server and relay them to a DHCP server on another subnet dhcrelay omshell provides an interactive way to connect to, query and possibly change the ISC DHCP Server's state via OMAPI, the Object Management API omshell