DHCP动态主机配置协议

DHCP(动态主机配置协议)用于自动分配网络设备的IP地址等配置信息。本文详细介绍了DHCP的工作原理,包括租约四部曲(DHCPDiscover、DHCPOFFER、DHCPREQUEST、DHCPACK)和续租过程。此外,还阐述了如何在Linux环境下搭建DHCP服务器,包括配置文件的修改和服务的启动。通过实例展示了DHCP服务的配置和客户端的IP获取流程。
摘要由CSDN通过智能技术生成

一、简介

DHCP(Dynamic Host Configuation Protocol,动态主机配置协议)是一个工作在应用层的局域网网络协议,数据传输时使用UDP不可靠传输协议工作,通常被应用在大型局域网环境中,主要作用是集中的管理,分配网络资源,使网络环境中的主机能够动态获取IP地址、Gatway地址、DNS服务器地址等信息,并能够提升地址使用率。

二、DHCP工作原理(租约四部曲+续租)

1.DHCP客户机进行IP请求

当一个DHCP客户机启动时,会自动将自己的IP配置成0.0.0.0,由于0.0.0.0不能正常通信,所以客户机就必须通过DHCP服务器的IP地址来获取一个合法的地址。但是由于客户机不知道DHCP服务器的IP地址,所以使用0.0.0.0的地址作为源地址,使用255.255.255.255作为目标地址,使用UDP67端口作为目的端口来广播请求IP地址信息。广播信息DHCP Discover中包含了HDCP客户机的MAC地址和计算机名,以便使DHCP服务器确定使哪个客户机发送的请求。(255.255.255.255代表任意地址)

2.DHCP服务器响应请求

当DHCP服务器接受到客户机请求IP地址的信息时,它就在自己的IP地址池中查找是否由合法IP地址提供给客户机。如果有,DHCP服务器就将此IP地址做上标记,加入到DHCP OFFER信息中,然后DHCP服务就广播一则包括下列信息的DHCP OFFER消息:

DHCP客户端的MAC地址;DHCP服务器提供的合法IP地址;子网掩码;默认网关(路由);租约期限;DHCP的IP地址-MAC。
因为客户机还没有IP地址,所以DHCP服务使用自己的IP地址作为源地址,使用255.255.255.255作为目标地址,使用UDP 68端口来广播DHCP OFFER信息。

3.客户机选择IP

DHCP客户机从接收到第一个DHCP OFFER消息中选择IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能提供给另一个DHCP客户机,当客户机从第一个DHCP服务器接收到DHCP OFFER并选择IP地址后,DHCP租约的第三过程发生。客户机将DHCP REQUEST消息广播到所有的DHCP服务器,表明它接受提供的内容。DHCP REQUEST消息包括为该客户机提供IP配置的服务器的服务标识符(就是IP地址)。DHCP服务器查看服务器标识符字段,以确定它自己是否被选择为指定的客户机提供IP地址,如果那些DHCO OFFER被拒绝,则DHCP服务器会取消提供并保留其IP地址用于下一个IP租约请求。

在客户机选择IP过程中,虽然客户机选择了IP地址,但还没有配置IP地址,而在以一个网络中可能有多个DHCP服务器,所以客户机仍然使用0.0.0.0地址作为源地址,使用255.255.255.255作为目标地址,使用UDP 67端口来广播DHCP REQUEST信息。

4.DHCP服务器确定租约

服务器确定租约:DHCP ACK
DHCP服务器接收到DHCP REQUEST消息后,以DHCP消息的形式向客户机广播成功的确认,该消息包含有IP地址的有效租期和其他可能配置的信息。虽然服务器确定勒客户机的租约请求,但客户机还没有收到服务器的DHCP ACK消息,所以服务器仍然使用自己的IP地址作为源地址,使用255.255.255.255作为目标地址,使用UDP 68端口作为源端口来广播DHCP ACK信息。当客户机收到DHCP ACK消息时,它就配置了IP地址,完成TCP/IP的初始化。

4.服务器拒绝租约:DHCP NACK(DHCP NAK)

如果DHCP REQUEST步成功,例如客户机试图租约先前的IP地址,但该IP地址不再可用,或者因为客户机移到其他子网,该IP无效时,DHCP服务器将广播否定确定DHCP NACK。当客户机收到步成功的确认时,它将重新开始DHCP租约过程

注意:

如果DHCP客户机无法找到DHCP服务器,它将从TCP/IP的B类网段169.254.0.0/16中挑选一个IP地址作为自己的IP地址,每隔5分钟尝试与一个DHCP服务器进行通讯,一旦与DHCP服务器取得联系,则客户机放弃自动配置的IP地址,而使用DHCP服务器分配的IP地址。

注意:

DHCP客户机收到DHCP服务器回应的DHCP ACK报文后,通过地址冲突检测arp,发现服务器分配的地址冲突或由于其他原因导致不能使用,则发送DECLINE报文,通知服务器分配IP地址不可用。

DHCP Discover
DHCP OFFER
DHCP REQUEST
DHCP ACK
DHCP client
DHCP server

三、DHCP客户机续租

DHCP客户机会在会在租期过去50%的时候,直接向为其提供IP地址的DHCP服务器发送DHCP REQUEST消息包,如果客户机接收到该服务器回应的DHCP ACK消息包,客户机就根据包中所提供的新的租期以及其他已经更新的TCP/IP参数,更新自己的配置。IP租用完成;如果没有收到该服务器的回复,则客户机继续使用现有IP地址,因为当前租期还有50%。

如果在租期过去50%的时候没有更新,则DHCP客户机将在租期过去87.5%的时候再次向为其提供IP地址的DHCP服务器发送DHCP REQUEST消息包。如果还步成功,到租约100%时,DHCP客户机必须放弃这个IP,重新申请,如果此时无DHCP服务器可用,DHCP客户机会使用169.254.0.0/16中随机的一个地址,并且每5分钟再进行尝试。

DHCP REQUEST
DHCP ACK
DHCP client
DHCP server

四、DHCP服务搭建

1.环境准备

关闭SELinux
关闭iptables
关闭Vmware虚拟网络编辑器的DHCP功能
两台机器,网络连接模式设为自定义VMnet*模式

2.DHCP相关信息

软件:
dhcp,DHCP服务器软件包
dhcp-common:DHCP命令软件包

3.服务名:

dhcpd,DHCP服务名
dhcrelay,DHCP中继服务名

4.端口号

udp,67,作为客户端的目标端口,接收客户端的DHCP请求。
udp,68,作为服务端的源端口,用来向客户端回复数据包。

5.配置文件

dhcpd,/etc/dhcp/dhcp.conf,默认为空,需要找模板文件重新生成。可以用模板文件覆盖。
dhcrelay,/etc/sysconfig/dhcrelay,该文件是中继配置文件。

6.DHCP配置文件详解

subnet 192.168.1.0 netmask 255.255.255.0{
#声明要分配的子网掩码和网段
range 192.168.88.2 192.168.88.254;
#声明可用IP地址池
option domain-name “laoli.com”;
#设置DNS域
option domain-name-servers 8.8.8.8;
#设置DNS服务器地址
option routers 192.168.88.2;
#默认网关地址
option boradcast-address 192.168.88.255;
#广播地址(可不写)
default-lease-time 600;
#默认租约(s)
max-lease-time 7200;
#最大租约(s)
}

注:至少有一个subnet声明的网络得是主机使用的网段。例如,DNS服务器的IP是192.168.88.10,那么配置文件中最好有一个subnet是192.168.88.0,作为向外分配的网段。

7.DHCP基础实验

1.生成配置文件

cp -a /usr/share/doc/dhcp-4../dhcp.conf.sample /etc/dhcp/dhcp.conf

2.修改配置文件

将配置文件的前几个subnet声明注释掉。修改最后一个subnet声明
注意配置文件中每行结尾部分的分号和大括号。
例如:

subnet 192.168.1.0 netmask 255.255.255.0{
range 192.168.1.10 192.168.1.254;
#option domain-name “laoli.com”;
#option doadmin-name-servers 8.8.8.8;
#option routers 192.168.1.2;
#option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
}

注:修改前记得备份
注:上面一些可以不用的,有网络和租约即可。

3.启动dhcp即可。

4.netstat -tlun

查看端口启动没有,67就是。

5.使用客户端去获取

如果有ip,可以设置启用dhcp,这样原ip就可以无效了。
记得重启网卡, 不建议重启网络。
ifdown ens33
ifup ens33

6.可以查看服务端的/var/log/messages

最后的日志,就有相关申请IP等信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值