当前位置: 首页>>技术教程>>正文


在Linux中,什么是DHCP以及如何配置DHCP服务器

, ,

什么是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";
            }

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10382.html,未经允许,请勿转载。