DHCP(动态主机配置协议)
DHCP(动态主机配置协议)
是一个应用层协议。分配地址时,DHCP服务器和客户端需要在一个局域网内。服务器为不同网段的主机分配IP时,只要连接两个网段中间的路由器能转发DHCP配置请求即可,但这要求路由器配置中继功能。 端口号:67(DHCP服务器),68(DHCP客户端)
DHCP服务器提供三种IP分配方式:
(1)自动分配
自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址。
(2)动态分配
动态分配是当DHCP客户端第一次从DHCP服务器分配到IP地址后,并非永久地使用该地址,每次使用完后,DHCP客户端就得释放这个IP地址,以给其他客户端使用。
(3)手动分配
手动分配是由DHCP服务器管理员专门为客户端指定IP地址。
总结:其中,又分为静态分配和动态分配,自动分配和手动分配都为静态分配。
DHCP报文
DHCP一共有8种报文,(1)DHCP Discover(2)DHCP Offer(3)DHCP Request(4)DHCP ACK(5)DHCP NAK(6)DHCP Release(7)DHCP Decline(8)DHCP Inform。
这些报文分为:
请求报文(客户端发出的): DHCP Discover、DHCP Request、DHCP Release、DHCP Inform和DHCP Decline。
应答报文(服务器发出的): DHCP Offer、DHCP ACK和DHCP NAK。
DHCP的八种报文(详细)
(1)DHCP DISCOVER: DHCP 客户端在请求 IP地址时并不知道 DHCP服务器的位置,因此DHCP客户端会在本地网络内以 广播方式发送 Discover 请求报文,以发现网络中的 DHCP服务器。所有收到 Discover 报文的 DHCP服务 器都会发送应答报文, DHCP 客户端据此可以知道网络 中存在的 DHCP 服务器的位置。
(2)DHCP OFFER: DHCP 服务器收到 Discover 报文后,就会在所配置的地址池中查找一个合适的 IP 地址,加上相应的租约期限和其他配置信息(如网关、 DNS 服务器等),构造一 个 Offer 报文,发送给 DHCP 客户端,告知用户本服务器可以为其提供 IP 地址。但这个报文只是告诉 DHCP客户端可以提供 IP地址,最终还需要客户端通过 ARP 来检测该 IP地址是否重复。
(3)DHCP REQUEST: DHCP客户端可能会收到很多 Offer 请求报文,所以必须在这些应答中选择一个(客户端对收到网络中的多台服务器给过来的包做出回应,广播DHCP Request
(我拿到了某台服务器的IP,其他的服务器给过来的不要了))。通常是选择第一个 Offer 应答报文的服务器作为自己的目标服务器,并向服务器发送一个广播的 Request 请求报文,通告选择的服务器, 希望获得所分配的 IP 地址。(1.当期租期过去50%时,客户端会发送一个DHCP Request请求续约租期,服务器如果同意请求,返回一个DHCP Ack给客户端。服务器如果不同意,则返回一个拒绝报文,客户端停止使用之前分配的IP,重新发送DHCP Discover报文。2.若服务器没有回应,租期过去87.5%时,客户端继续发送DHCP Request请求续约租期,若服务器同意,返回一个DHCP Ack报文,若还是没有回应,租期过完,客户端停止使用IP。)
(4)DHCP ACK: DHCP 服务器收到 Request 请求报文后,根据 Request 报文 中携带的用户 MAC 查找有没有相应的租约记录,如果有则发送 ACK 应答报文,通知用户可以使用分配的 IP地址。
(5)DHCP NAK: 如果 DHCP服务器收到 Request 请求报文后,没有发现有相应的租约记录或者由于某些原因无法正常分配IP地址,则向 DHCP客户端发送NAK应答报文,通知用户无法分配合适的 IP地址。
(6)DHCP RELEASE: 一般出现在客户端下线等状况。当 DHCP 客户端不再需要使用分配 IP 地址时,就会主动向 DHCP 服务器发送 RELEASE 请求报文,告知服务器用户不 再需要分配 IP 地址,请求 DHCP 服务器释放对应的 IP 地址。
(7)DHCP DECLINE: DHCP 客户端收到 DHCP 服务器 ACK 应答报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则会向 DHCP服务器发送 Decline求报文,通知服务器所分配的IP地址不可用,以期获得新的IP地址。
(8)DHCP inform:DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则向 DHCP服务器发送Inform 求报文; DHCP服务器在收到该报文后,将根据租约进行查找到相应的配置信息后,向 DHCP客户端发送 ACK 答报文。目前基本上不用了。
分配的IP地址要符合以下原则:
地址空闲,同一网络下没有其他设备使用该地址。
DHCP通信分为四步:
(1)主机发送DHCPDISCOVER广播包在网络上寻找DHCP服务器;
(2)DHCP服务器向主机发送DHCPOFFER单播数据包,包含IP地址、MAC地址、域名信息以及地址租期;
(3)主机发送DHCPREQUEST广播包,正式向服务器请求分配已提供的IP地址;
(4)DHCP服务器向主机发送DHCPACK单播包,确认主机的请求。
DHCP同时也存在不少缺点:DHCP不能发现网络上非DHCP客户机已经在使用的IP地址;当网络上存在多个DHCP服务器时,一个DHCP服务器不能查出已被其它服务器租出去的IP地址;DHCP服务器不能跨路由器与客户机通信,除非路由器允许BOOTP转发。
WireShark抓包验证
DHCP攻击(了解)
针对DHCP的一种攻击办法是从服务器那里骗IP地址。攻击者的电脑可以不断发出DHCP请求,冒充成新入网的客户机。于是,DHCP服务器的地址池被耗干,无法分配地址给后来的用户。后来的用户再也没法使用网络服务。攻击者很可能会继续下连环套。攻击者占有了大量IP地址,可以装扮成新的DHCP服务器,把自己骗来的IP地址分配给网络上的新用户。
等等,好像有什么不对攻击者搞瘫一台DHCP服务器,就为了过一下cosplay的瘾?
当然不是。DHCP服务器还能提供其他网络设置参数。攻击者可以让自己成为DNS服务器或者网络出口。于是,客户机的域名解析和外网通信,必须经过攻击者的电脑。这个时候,攻击者的权限就很大了。他可以偷听通信、伪装成客户机、假扮成某个域名的网站。比如说,攻击者就可以篡改域名解析,让你在访问www.cnblogs.com/vamei时,实际上访问的是攻击者提供的一个网页。当你在这个网页上输入用户名和密码时,你的信息就完全泄露给了攻击者。
DHCP攻击让人防不胜防。DHCP协议在设计中并没有考虑到安全性的问题,所以很难从软件上杜绝DHCP攻击。某些品牌的交换机上,可以指定特定端口给合法的DHCP服务器,以免其他人伪装。当然,最重要的保护方式,还是防止攻击者连入局域网。
(H3C)DHCP配置命令:
(1)DHCP服务器基本配置
[Router]dhcp enable (开启DHCP服务)
[Router]dhcp server ip-pool pool-name (创建DHCP地址池pool-name)1
[Router-dhcp-pool-0]network network-address [mask-length | mask mask] (配置动态分配的地址主网段范围)192.168.1.0 24
[Router-dhcp-pool-0]gateway-list ip-address &<1-8> (配置为DHCP客户端分配的网关地址)192.168.1.254
(2)DHCP服务器可选配置
[Router-dhcp-pool-0]dns-list ip-address & <1-8> (配置为DHCP客户端分配的DNS服务器地址)114.114.114.114 8.8.8.8 根据要求填写
[Router]dhcp server forbidden-ip start-ip-address [end-ip-address] (配置DHCP地址池中不参与分配的IP地址)192.168.1.10 192.168.1.20
[Router-dhcp-pool-0] address range 192.168.1.1 192.168.1.10 (配置参与自动分配的地址范围)
[Router-dhcp-pool-0]expried {day day [hour hour [minute minute [second second]]] | unlimited } (配置动态分配的IP地址的租用有效期限)day 1 (一天)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!