DHCP工作原理

了解DHCP服务

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是由 Internet 工作任务小组设计开发的,专门用于为TCPIIP 网络中的计算机自动分配 TCP/IP 参数的协议。DHCP 提供了安全、可靠且简单的TCP/IP 网络设置,降低了配置IP地址的负担。

使用DHCP的好处

减少管理员的工作量

避免输入错误的可能

避免IP地址冲突

当网络更改IP地址段时,不需要再重新配置每个用户的IP地址

提高了IP地址的利用率

方便客户端的配置

DHCP的分配方式.

自动分配:当DHCP客户机第一次成功地从DHCP服务器获取到一个IP地址后,就永久使用这个IP地址

手动分配:由DHCP服务器管理员专门指定IP地址

动态分配:

DHCP的租约过程

客户端在网络中搜索服务器:

服务器向客户端响应服务;

客户端向服务器发出服务请求:

服务器向客户端提供服务。

 在Linux系统中,DHCP服务通过监听特定的UDP端口(通常是67端口)来接收客户端的请求。当客户端启动时,它会发送一个DHCP DISCOVER广播消息来寻找可用的DHCP服务器。服务器收到请求后,会发送一个DHCP OFFER消息给客户端,其中包含IP地址和其他配置信息。客户端从接收到的OFFER中选择一个,并发送DHCP REQUEST消息进行确认。最后,服务器发送DHCP ACK消息给客户端,确认IP地址的分配。如下图:

DHCP原理与配置_IP

使用DHCP动态配置主机地址

配置DHCP服务器

先执行“rpm -q dhcp”命令查看系统中是否已安装dhcp软件包,如果没有安装,则只要挂载CentOS系统光盘,安装其中的dhcp-4.2.5-47.e17.centos.x86_64.rpm软件包即可。具体操作如下:

DHCP原理与配置_IP_02

安装dhcp软件包后系统会自动复制相关程序,并添加名为dhcpd的系统服务。

建立主配置文件dhcpd.conf

dhcpd服务的主配置文件是/etc/dhcp/dhcpd.conf,但是该文件中默认不包含任何有效配置,需要管理员手动建立。需要参考文件范本建立新的dhcpd.conf。”*“指的是dhcp软件包的版本号,具体操作如下:

DHCP原理与配置_IP_03

(1)/etc/dhcp/dhcpd.conf文件的构成

声明:较常见的声明是 subnet、host,其中 subnet 声明用来约束一个网段,host 声明用来约束一台特定的主机。

参数:由配置关键字和对应的值组成,总是以";"(分号)结束,一般位于指定的声明范围之内,用来设置所在范围的运行特性(如默认租约时间、最大租约时间等)。

选项:由"option"引导,用于指定分配给客户机的各种地址参数(如默认网关地址、子网掩码、DNS 服务器地址等)。

(2)dhcpd服务的全局配置

全局配置通常会放在配置文件dhcpd.conf的开头部分,先进入到“/etc/dhcp/”中,然后使用vi编辑器进入dhcpd.conf具体操作如下:

DHCP原理与配置_DHCP_04

DHCP原理与配置_IP_05

default-lease-time,默认租约时间。单位为秒。

max-lease-time,最大租约时间。单位为秒,表示允许 DHCP 客户端请求的最大租约时间。

option domain-name-servers,DNS 服务器地址,设置多个 DNS 服务器地址时,以逗号进行分隔。

option domain-name,默认搜索区域。为客户机指定解析主机名时的默认搜索域该配置选项将体现在客户机的/etc/resolv.conf配置文件中

例如,若要为局域网搭建一台DHCP服务器,所有网段使用相同的租约时间,默认搜索区域为abc.com,DNS服务器地址为114.114.114.114,8.8.8.8,设置地址池为192.168.10.200~192.168.10.230,默认网关地址为192.168.10.254,具体操作如下:

DHCP原理与配置_服务器_06

一台DHCP服务器可以为多个网段提供服务,因此subnet网段声明必须有而且可以有多个

range:指定地址池,可以有多个

option routers:默认网关地址

option broadcast-address:广播地址

设置完参数之后保存并退出,之后开启该服务。具体操作如下:

DHCP原理与配置_IP_07

需要关闭、重启 dhcpd 服务时,只要将上述操作命令中的“start"改为"stop"或“restart"即可。如果 dhcpd 服务启动失败会报错,可以检査日志文件/var/log/messages 末尾的错误提示信息,并根据提示进行排错。

使用DHCP客户端

打开一台Linux客户机在网络配置中设置使用DHCP的方式获取地址。只需编辑对应网卡配置文件如“vim /etc/sysconfig/network-scripts/ifcfg-ens33”,修改“BOOTPROTO=dhcp”,并重启network服务即可,如下操作示例:

DHCP原理与配置_DHCP_08

重启network服务过后,查询一下IP是否分配:

DHCP原理与配置_IP_09

在服务器端可以通过查看租约文件/var/lib/dhcpd/dhcpd.leases来了解服务器的IP地址分配情况,具体操作如下:

DHCP原理与配置_DHCP_10

该租约文件中记录了分配出去的每个IP地址信息(租约记录),包括 IP 地址、客户端的 MAC 地址、租用的起始时间和结束时间等。

此外,在Linux客户机中还可以使用"dhclient"工具来测试DHCP服务器,结合”-d“选项使其在前台运行,例如执行”dhclient  -d  ens33“命令后可以为网卡ens33自动获取新的IP地址,并显示获取过程。如下如示例:

DHCP原理与配置_DHCP_11

结合”-r“选项可以释放获取的IP租约,如下示例:

DHCP原理与配置_IP_12