DHCP原理简析及交互实践

环境:
os:centos7
dnsmasq:version 2.76

一. dhcp工作原理

首先补充几个dhcp相关的基本概念:
1、动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种网络管理协议,用于集中对用户IP地址进行动态管理和配置。
2、DHCP协议采用UDP作为传输协议,DHCP客户端发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给DHCP客户端的68号端口

3、在没有部署DHCP中继的场景下,首次接入网络的DHCP客户端与DHCP服务器的报文交互称为DHCP报文四步交互,如下图:
在这里插入图片描述
4、当DHCP客户端非首次接入网络时,可以重用曾经使用过的地址。客户端广播发送包含前一次分配的IP地址的DHCP REQUEST报文,报文中的Option50(请求的IP地址选项)字段填入曾经使用过的IP地址。DHCP服务器收到DHCP REQUEST报文后,根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录,如果有则返回DHCP ACK报文,通知DHCP客户端可以继续使用这个IP地址。否则,保持沉默,等待客户端重新发送DHCP DISCOVER报文请求新的IP地址
在这里插入图片描述

二. 实践

2.1 准备

参考文章《【云计算 | Openstack】KVM虚机通过dhcp自动获取地址》,使用dnsmasq作为dhcp服务端,使用virsh虚机作为dhcp客户端。

在这里插入图片描述

网络架构如下图所示,dnsmasq监听网桥br0的67号端口

在这里插入图片描述

2.2 开始dhcp并抓包

当客户端开始dhcp时,对虚机口进行抓包结果如下:
在这里插入图片描述

2.3 报文分析

上文提到dhcp的4步交互前提是:dhcp客户端首次接入网络。本次实践dhcp客户端非首次接入,同时修改了dhcp地址池的cidr信息。因此整个dhcp流程大致为:
客户端发送dhcp request——无响应——客户端重新发送dhcp discover——服务端响应dhcp offer——客户端发送dhcp request——服务端响应dhcp ack

1、先看下报文1-2DHCP Request

客户端发送两次dhcp request报文想继续使用之前申请的地址

在这里插入图片描述

2、报文3DHCP Discover,该步是发现阶段

客户端发送的dhcp request收不到响应,因此DHCP客户端以广播方式发送DHCP DISCOVER报文(目的IP地址为255.255.255.255)给同一网段内的所有设备(包括DHCP服务器或中继)。DHCP DISCOVER报文中携带了客户端的MAC地址、需要请求的参数列表选项(Option55)、广播标志位(flags字段)等信息。

在这里插入图片描述
(Option 55 包含的内容)

在这里插入图片描述

3、报文4-7

dhcp服务端收到了discover报文后,连续发送3个arp和一个icmp报文,用来判断地址11.11.1.70是否被其他客户端占用

在这里插入图片描述

4、报文8DHCP Offer,该步是提供阶段

服务端选择一个可用的IP地址,然后通过DHCP OFFER报文发送给DHCP客户端,Option 1包含了该ip地址的掩码位

在这里插入图片描述
5、报文9DHCP Request,该步是选择阶段

如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端一般只接收第一个收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文,该报文中包含客户端想选择的DHCP服务器标识符(即Option54)和客户端IP地址(即Option50)。
DHCP客户端广播发送DHCP REQUEST报文通知所有的DHCP服务器,它将选择某个DHCP服务器提供的IP地址,其他DHCP服务器可以重新将曾经分配给客户端的IP地址分配给其他客户端。

在这里插入图片描述
6、报文10DHCP ACK,该步是确认阶段

当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,DHCP服务器回应DHCP ACK报文,表示DHCP REQUEST报文中请求的IP地址(Option50填充的)分配给客户端使用。

在这里插入图片描述
7、报文11-12

DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址,如果在指定时间内没有收到回应,表示客户端可以使用此地址

在这里插入图片描述

8、报文13-14

DHCP客户端收到DHCP ACK报文,会广播发送ARP报文,获取网关的MAC信息(网关的ip地址在dhcp offer 和dhcp ack报文的Option 3 中均有体现)

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
DHCP Snooping是一种网络安全技术,用于防止恶意DHCP服务器和DHCP欺骗攻击。它基于交换机上的DHCP Snooping表,通过检查和验证DHCP消息的源MAC地址、IP地址和租约信息,确保只有授权的DHCP服务器可以提供IP地址给客户端。 工作原理如下: 1. 所有接入交换机端口默认为未信任状态,不允许发送DHCP请求或响应。 2. 管理员将指定的接入交换机端口标记为信任状态,允许发送DHCP消息。 3. 交换机在信任端口上监听DHCP Discover消息,并将源MAC地址、IP地址和租约信息添加到DHCP Snooping表中。 4. 当交换机接收到DHCP Offer、Request和Ack消息时,会验证源MAC地址、IP地址和租约信息是否与DHCP Snooping表中的相符。 5. 如果验证通过,交换机将允许该消息继续转发。否则,该消息将被丢弃。 配置步骤如下: 1. 开启DHCP Snooping功能: ``` switch(config)# ip dhcp snooping ``` 2. 标记信任和非信任接口: ``` switch(config)# interface <interface> switch(config-if)# ip dhcp snooping trust ``` 3. 配置DHCP绑定: ``` switch(config)# ip dhcp snooping binding <mac-address> vlan <vlan-id> interface <interface> ``` 4. 配置DHCP Snooping数据库保存位置(可选): ``` switch(config)# ip dhcp snooping database <filename> ``` 5. 配置DHCP Snooping选项(可选): ``` switch(config)# ip dhcp snooping option <option-name> <option-value> ``` 请注意,具体的配置步骤可能因不同的交换机型号和操作系统而有所差异,请参考相关厂商文档或命令行帮助进行配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田土豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值