什么是DHCP?
任何具有计算机网络基础知识的人都知道,对于两个主机,使用TCP /IP模型在同一网络上进行通信,两个主机都需要具有唯一的IP地址。网络上的任何给定主机如何获得IP地址的方式有两种。
一种方法是手动配置网络接口并手动分配IP地址。手动网络配置称为静态配置,这意味着主机的IP地址不会更改其IP地址,除非用户或系统管理员手动更改。如果您的公司网络包含超过1000台主机,则使用静态IP地址配置每个主机的工作将变得很繁琐,并且更重要的是效率极低。
无论实际网络大小如何,为网络主机分配适当的IP地址的另一种方法是自动为每个主机分配IP地址。 DHCP(动态主机配置协议)很方便,可以执行自动主机的IP配置。
通过DHCP协议,DHCP客户端(即您的网络主机)可以租用网络配置参数(例如IP地址)。实际上,租约参数不仅限于IP地址,还可能包括以下配置设置:
- IP地址和网络掩码
- 域名服务器(DNS)
- 默认网关
- WINS服务器
- Syslog主机
- 代理服务器
- NTP服务器
- X字体服务器
- Syslog主机
配置为通过DHCP动态获取IP地址的每个网络主机在启动时都会通过网络发送DHCP请求(根据定义,这是所有1的广播),以发现网络上某处是否有DHCP服务器可用,并因此请求网络配置。然后,DHCP客户端有义务保持与DHCP服务器的通信,并根据IP地址的租约期限到期定期更新其IP地址。如果DHCP客户端无法更新其IP地址(断开连接,关闭主机等),其IP地址将过期,并且DHCP服务器可以将该IP地址租借给另一个DHCP客户端。
DHCP服务器会记录所有租用的IP地址,并将它们存储在/var /lib /dhcp目录中的dhcpd.leases文件中(此文件的位置可能会因所使用的Linux系统而异)。有了这样的文件,即使重新引导或电源故障后,DHCP服务器也可以跟踪所有IP地址租约。
将DHCP服务器连接到网络有以下优点:
- 没有IP地址冲突。 DHCP可以保证网络上的所有主机都具有唯一的IP地址。 DHCP服务器保留所有分配的IP地址的记录,并将其与主机的MAC地址进行交叉引用。
- 根据MAC地址,DHCP允许为特定主机配置固定参数
- 最小的本地客户端网络配置,因此提高了效率
DHCP服务器安装
在各种Linux发行版中可用的标准DHCP服务器实现是由ISC(Internet系统联盟)维护的开源版本。
使用以下linux命令在Linux服务器上安装DHCP:
Debian和Ubuntu:
# apt-get install isc-dhcp-server
红帽&软呢帽:
# yum install dhcp
基本DHCP配置
默认情况下,DHCP服务器配置不包括DHCP服务器应在其上租借IP地址的任何子网。因此,取决于您的Linux系统,当您尝试使用默认的dhcpd.conf配置文件启动DHCP时,可能会收到以下错误消息。
Starting ISC DHCP server: dhcpdcheck syslog for diagnostics. ... failed!
检查日志文件(例如/var /log /syslog)会显示更多详细信息:
No subnet declaration for eth0 (some IP address).
您的服务器可能已连接到多个网络子网。要启动DHCP服务器,必须在DHCP配置文件/etc/dhcp/dhcpd.conf中定义至少一个子网。
注意:如果您的服务器可以访问多个子网,即使没有立即意图在该子网上启用DHCP服务,DHCP也需要定义所有子网。
以下是DHCP配置文件的最简单示例:
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.3 10.1.1.254;
}
subnet 192.168.0.0 netmask 255.255.0.0 {
}
该配置文件指示DHCP服务器在子网10.1.1.0上使用网络掩码255.255.255.0侦听DHCP客户端请求。此外,它将分配10.1.1.3-10.1.1.254范围内的IP地址。它还为网络ID为192.168.0.0的子网定义了一个空定义。
用您的子网更改以上代码,然后将其插入/etc/dhcp/dhcpd.conf。准备就绪后,请使用重新启动DHCP服务器(restart命令可能有所不同):
# service isc-dhcp-server restart
DHCP默认和最大租用时间
此时,我们可以在DHCP配置中添加一些额外的设置,即默认和最大租用时间到期。
- default-lease-time是一个以秒为单位的值,在该值中,如果DHCP客户端不要求任何其他特定的有效期租用时间,则将设置一个租用的IP地址有效期。
- max-lease-time是一个以秒为单位的值,它定义DHCP服务器租用的IP地址的最大到期时间。
default-lease-time 600;
max-lease-time 7200;
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.3 10.1.1.254;
}
subnet 192.168.0.0 netmask 255.255.0.0 {
}
定义DNS服务器
DHCP服务器可能为其客户端设置的另一个配置参数是DNS服务器的定义。如果希望客户使用IP地址为8.8.8.8和10.1.1.1的DNS服务器,则可以通过在DHCP的配置文件中包含选项”domain-name-servers”来实现。
default-lease-time 600;
max-lease-time 7200;
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.3 10.1.1.254;
option domain-name-servers 10.1.1.1, 8.8.8.8;
}
subnet 192.168.0.0 netmask 255.255.0.0 {
}
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.3 10.1.1.254;
option routers 10.1.1.1;
}
设置默认网关
DHCP还允许客户端的网关配置。要设置本地网络上的任何客户端使用默认网关10.1.1.1,请在dhcpd.conf文件中添加“ option routers 10.1.1.1”行,如下所示:
default-lease-time 600;
max-lease-time 7200;
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.3 10.1.1.254;
option domain-name-servers 10.1.1.1, 8.8.8.8;
option routers 10.1.1.1;
}
subnet 192.168.0.0 netmask 255.255.0.0 {
}
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.3 10.1.1.254;
option routers 10.1.1.1;
}
DHCP现在将使用网关10.1.1.1。设置DHCP客户端。
主机特定的配置
可能需要为网络上的特定主机(例如打印机,Web服务器等)设置静态IP地址。在这种情况下,可以修改DHCP服务器配置,以将选择的IP地址租借给其MAC定义的特定主机。地址。
default-lease-time 600;
max-lease-time 7200;
subnet 10.1.1.0 netmask 255.255.255.0 {
range 10.1.1.3 10.1.1.254;
option domain-name-servers 10.1.1.1, 8.8.8.8;
option routers 10.1.1.1;
}
subnet 192.168.0.0 netmask 255.255.0.0 {
}
host printer {
hardware ethernet 00:16:d3:b7:8f:86;
fixed-address 10.1.1.100;
}
host web-server {
hardware ethernet 00:17:a4:c2:44:22;
fixed-address 10.1.1.200;
}
上面的DHCP配置文件会将IP地址10.1.1.100永久分配给MAC地址为00:16:d3:b7:8f:86的主机”printer”,并将IP地址10.1.1.200分配给MAC地址为00:17:a4的主机”web-server” :c2:44:22。
附录
Ubuntu客户端网络设置以使用DHCP
要将客户端配置为在Ubuntu或Debian linux系统上的网络接口eth0上使用DHCP,请在/etc /network /interfaces文件中输入以下行:
auto eth0
iface eth0 inet dhcp
配置DHCP中继
如果您的DHCP服务器无法访问某些特定的子网,则并不表示它无法在其中提供服务。要使此工作正常进行,需要在远程子网中配置DHCP中继代理,该子网将所有请求转发到指定的DHCP服务器和远程子网。首先安装DHCP中继:
# apt-get install isc-dhcp-relay
然后用两行创建一个配置文件/etc /default /isc-dhcp-relay:
SERVERS="192.168.5.5"
INTERFACES="eth0"
上面的配置文件将指示DHCP中继代理在eth0接口上侦听DHCP客户端请求,并将其转发到IP地址192.168.5.5上的DHCP服务器。
BOOTP支持
ISC DHCP服务器向后兼容BOOTP。以下是要在DHCP的主要配置dhcpd.conf文件中定义的BOOTP客户端声明:
host bootp {
hardware ethernet 00:00:2e:55:12:09;
fixed-address 123.123.1.3;
filename "/path/to/tftpboot/bootp.boot";
}