动态主机配置协议(DHCP)

使用动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)可以避免网络参数变化后一些烦琐的配置,客户端可以从DHCP服务端检索相关信息并完成相关网络配置,在系统重启后依然可以工作。DHCP基于C/S模式,主要用于大型网络。DHCP提供一种动态指定IP地址和相关网络配置参数的机制。本节主要介绍DHCP的工作原理及DHCP服务端与DHCP客户端的部署过程。

DHCP的工作原理

动态主机配置协议(DHCP)是用来自动给客户端分配TCP/IP信息的网络协议,如IP地址、网关、子网掩码等信息。每个DHCP客户端通过广播连接到区域内的DHCP服务器,该服务器会相应请求返回包括IP地址、网关和其他网络配置信息。DHCP的请求过程如图1.1所示。

图1.1 DHCP请求过程

客户端请求IP地址和配置参数的过程有以下几个步骤:

  • 步骤1:客户端需要寻求网络IP地址和其他网络参数,然后向网络中广播,客户端发出的请求名称叫做DHCPDISCOVER。如广播网络中有分配IP地址的服务器,服务器会返回响应应答,告诉客户端可以分配,服务器返回包的名称叫DHCPOFFER,包内包含可用的IP地址和参数。
  • 步骤2:如果客户在发出DHCPOFFER包后一段时间内没有接收到响应,会重新发送请求,如广播区域内有多于一台的DHCP服务器,有客户端决定使用哪个。
  • 步骤3:当客户端选定了某个目标服务器后,会广播DHCPQUEST包,用以通知选定的DHCP服务器和未选定的DHCP服务器。
  • 步骤4:服务端收到DHCPQUEST后会检查收到的包,如果包内的地址和所提供的地址一致,证明现在的客户端接收的是自己提供的地址;如果不是,则说明自己提供的地址未被采纳。如被选定的服务器在接收到DHCPQUEST包以后,因为某些原因可能不能向客户端提供这个IP地址或参数,可以向客户端发送DHCPNAK包。
  • 步骤5:客户端在收到包后,检查内部的IP地址和租用时间,如发现有问题,则发包拒绝这个地址,然后重新发送DHCPDISCOVER包。如无问题,就接受这个配置参数。

配置DHCP服务器

本节主要介绍DHCP服务器的配置过程,包含安装,配置文件设置,服务器启动等步骤。

1.软件安装

DHCP服务依赖的软件可以从rpm包安装或从源码进行安装,本节以yum工具为例说明DHCP服务的安装过程,如【示例1-1】所示。

【示例1-1】

#确认当前系统是否安装相应软件包
[root@node1 ~]# rpm -aq | grep dhcp
#如以上命令无输出说明没有安装dhcp
#如使用rpm安装,使用如下命令
[root@node1 ~]# yum install -y dhcp

经过上面的设置,DHCP服务已经安装完毕,主要的文件如下:

/etc/dhcp/dhcpd.conf 为DHCP主配置文件。
/usr/lib/systemd/system/dhcpd.service DHCP服务单元。

2.编辑配置文件/etc/dhcpd.conf

要配置DHCP服务器,需修改配置文件/etc/dhcp/dhcpd.conf。如果不存在则创建该文件。本示例实现的功能为当前网络内的服务器分配指定IP段的IP地址,并设置过期时间为2天。配置文件如【示例1-2】所示。

【示例1-2】

[root@node1 ~]# cat /etc/dhcp/dhcpd.conf 
#指定接收DHCP请求的网卡的子网地址,注意不是本机的IP地址。netmask为子网掩码
subnet  192.168.1.0 netmask 255.255.255.0{
#指定默认网关
option  routers 192.168.1.1;
#指定默认子网掩码
option  subnet-mask 255.255.255.0;
#指定最大租用周期
max-lease-time 172800;
#此DHCP服务分配的IP地址范围
range   192.168.1.128 192.168.1.254;
}

以上示例文件列出了一个子网的声明,包括routers默认网关、subnet-mask默认子网掩码和max-lease-time最大租用周期,单位是秒。需要特别说明的是,在本地须有一个网络接口的IP地址为192.168.1.0网络,DHCP服务才能启动。

配置文件的更多选项可以使用命令“man dhcpd.conf”获取更多帮助信息。

【示例1-3】

[root@node1 ~]# systemctl start dhcpd.service

如启动失败可以参考屏幕输出定位错误内容,或查看/var/log/messages的内容,然后参考dhcpd.conf的帮助文档。

配置DHCP客户端

当服务启动成功后,客户端需要与服务端网络联通,然后做以下配置以便自动获取IP地址。客户端网卡配置如【示例1-4】所示。

【示例1-4】

[root@node1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ea9a7274-6d22-4df9-b413-9b1cd73fd685"
DEVICE="ens33"
ONBOOT="yes"

如需使用DHCP服务,BOOTPROTO="dhcp"表示将当前主机的网络IP地址设置为自动获取方式。需要说明的是DHCP客户端无需使用CentOS 7,使用其他版本的Linux或Windows操作系统均可,在本例中使用的是CentOS 7作为客户端。测试过程如【示例1-5】所示。

【示例1-5】

[root@node2 ~]# service network restart
#启动成功后确认成功获取到指定IP段的IP地址。
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.128  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::e12:bbab:adf8:2d97  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::f8ab:62fc:a9a3:c8a1  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::c4c9:c904:3318:e303  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:37:b3:0d  txqueuelen 1000  (Ethernet)
        RX packets 67348  bytes 30498073 (29.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 65279  bytes 52236950 (49.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

客户端配置为自动获取IP地址,然后重启网络接口,启动成功后使用ifconfig查看成功获取到IP地址。

提示:本节介绍了DCHP的基本功能,如需了解DHCP其他更过的功能,可参考DHCP的帮助文档或其他资料。

最后修改:2020 年 10 月 19 日 07 : 54 PM
如果觉得我的文章对你有用,请随意赞赏