7.2. Configuring a DHCP ServerDynamic Host Configuration Protocol (DHCP) is used to automatically send basic configuration data to computers and network devices. This centralizes network configuration control so that a change in the network layoutsuch as adding a nameserver or a gateway, or renumbering the networkdoes not require a visit to every computer in the network. DHCP also provides a convenient method of supplying network configuration information to visiting computers, such as the laptop of a visiting colleague. When a DHCP client system boots, it effectively shouts a broadcast message to the network: "Does anyone know who I am?" The DHCP server replies, "I know you, you're..." and then proceeds to tell the client its IP address and some combination of other network configuration information, possibly including a hostname, nameserver, timeserver, gateway, and default domain. The information sent by the DHCP server is called a lease and is only valid for a set length of time. The client can renew the lease when it expires, in which case it can keep its identity, or, if it disappears from the network and fails to renew the lease, the IP address can be recycled by the DHCP server and assigned to another host. Most home and small networks are connected to the Internet by a router or gateway device that includes DHCP service capability. However, you may prefer to use the Fedora DHCP server instead because it gives you more configuration options and control over the network configuration. 7.2.1. How Do I Do That?Before you set up a DHCP server for your network, you must design the network layout that you wish to use. Private networksones that will not be connected to the Internet, or that will be connected through a router or gateway that performs network address translation (NAT), or masqueradingwill use one of the private network ranges defined in RFC 1918, shown in Table 7-1.
Most small networks use one of the class C networks that start with the 192.168 prefix, yielding 256 addresses. Because two addresses are reserved for broadcast and network messages, that leaves 254 addresses for computers and network devices (such as printers), which is plenty for most homes and small businesses. DHCP can assign any combination of two address types:
Table 7-2 shows a possible network configuration for a home or small office network that will use the network prefix 192.168.1. In this example, available addresses have been divided into four ranges, one each for servers, network devices, desktop and laptop systems, and network infrastructure.
DHCP is configured through the text file /etc/dhcpd.conf, which contains configuration statements and comments. Configuration statements are case-insensitive and are separated by semicolons (;)whitespace doesn't matter. Some statements create blocks, delimited with curly braces ({}), that contain other statements. Comments start with # and continue to the end of the line. The dhcpd.conf file starts out with global statements; only one is required: ddns-update-style none; This prevents the DHCP server from attempting to update records on the DNS server (which is prohibited by Fedora's default SELinux configuration). The rest of the configuration statements are placed in a block as part of a subnet statement: subnet 192.168.1.0 netmask 255.255.255.0 { # Statements that apply only to this subnet... } These are the most commonly used configuration statements:
To configure static hosts, statements are placed in the block of a host statement: host hostname { # Statements that apply only to this host... } These are the statements that are most commonly used in a host block:
To configure a network that uses the layout shown in Table 7-2, where the devices have the MAC addresses shown in Table 7-3, you would write this /etc/dhcpd.conf file: # Sample /etc/dhcpd.conf file # Don't update DNS ddns-update-style none; # The local network is 192.168.1.X subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.254; # Default gateway option subnet-mask 255.255.255.0; # Client netmask option domain-name "fedorabook.com"; # Domain option domain-name-servers 172.16.97.1; # Nameserver is .1 option time-offset -21600; # Eastern Standard Time option ntp-servers pool.ntp.org; # Timeservers default-lease-time 86400; # 1 day max-lease-time 172800; # 2 days # Dynamic configuration range 192.168.1.128 192.168.1.191 # Static configuration for various hosts host prime { hardware ethernet 00:0c:0d:99:99:99 ; fixed-address 192.168.1.1 ; } host cabinet { hardware ethernet 00:0c:0d:aa:aa:aa ; fixed-address 192.168.1.2 ; } host chatterbox { hardware ethernet 00:0c:0d:bb:bb:bb ; fixed-address 192.168.1.3 ; } host laser1 { hardware ethernet 00:0c:0d:cc:cc:cc ; fixed-address 192.168.1.64 ; } host multifunction1 { hardware ethernet 00:0c:0d:dd:dd:dd ; fixed-address 192.168.1.65 ; } host webcam1 { hardware ethernet 00:0c:0d:ee:ee:ee ; fixed-address 192.168.1.66 ; } host gateway1 { hardware ethernet 00:0c:0d:ff:ff:ff ; fixed-address 192.168.1.254 ; } }
Once your configuration has been saved in /etc/dhcpd.conf, restart dhcpd to activate it using the Services graphical tool or this command: # service dhcpd restart If there are errors in your configuration file, dhcpd may not start. Check the end of the file /var/log/messages to see if there are any error messages: # tail -50 /var/log/messages|less If there are no error messages, clients can begin using the dhcpd server to obtain their IP addresses.
If configured to obtain IP information through DHCP, the client systems will contact the DHCP server when they are booted. You can also force them to contact the DHCP server at any time:
7.2.2. How Does It Work?Table 7-4 shows the sequence of messages that flow between a DHCP client and a DHCP server during initial negotiation and during lease renewal.
Early DHCP messages are sent using UDP to the broadcast address 255.255.255.255. This is necessary because the client does not have an IP address at the start of the negotiation. dhcpd stores lease information in the file /var/lib/dhcpd/dhcpd.leases so that if it is stopped and restarted, it still has an idea of what leases are outstanding. In a similar way, dhclient stores its lease information in /var/lib/dhcp/dhclient-<eth0>.leases (where <eth0> is the interface name). 7.2.3. What About...7.2.3.1. ...older clients that use the bootp protocol?The DHCP server, dhcpd, can also manage clients that use the Bootstrap Protocol (BOOTP). However, BOOTP does not use leases, so once an IP address is assigned, it stays assigned even if the computer using that address is removed from the network. IP assignments from an address pool are therefore called automatic assignments instead of dynamic assignments. To enable dhcpd to assign BOOTP addresses, add the dynamic-bootp option to the range statement in /etc/dhcpd.conf: range dynamic-bootp 192.168.1.128 192.168.1.191 7.2.4. Where Can I Learn More?
|