ENSP实验之DHCP协议抓包分析

参考链接:https://blog.csdn.net/xy706858376/article/details/102983132
动态主机配置协议DHCP,是一个应用于局域网的网络协议,该协议允许服务器向客户端动态分配IP地址和配置信息。

DHCP中继代理,就是在DHCP服务器和客户端之间转发DHCP数据包。当DHCP客户端与服务器不在同一个子网上,就必须有DHCP中继代理来转发DHCP请求和应答消息。

DHCP中继代理的数据转发,与通常路由转发是不同的,通常的路由转发相对来说是透明传输的,设备一般不会修改IP包内容。而DHCP中继代理接收到DHCP消息后,重新生成一个DHCP消息,然后转发出去。

在DHCP客户端看来,DHCP中继代理就像DHCP服务器;在DHCP服务器看来,DHCP中继代理就像DHCP客户端。

一、实验组网图
ENSP实验之DHCP协议抓包分析_第1张图片
图1 实验组网拓扑图
二、配置命令
LSW1:
[Huawei]vlan bat 10 20 ##创建vlan10 20
[Huawei]int e0/0/2 ##进接口
[Huawei-Ethernet0/0/2]port link-type access ##配置为access口
[Huawei-Ethernet0/0/2]port default vlan 10 ##将接口放到vlan10中
[Huawei-Ethernet0/0/2]un sh ##开启
[Huawei-Ethernet0/0/2]int e0/0/3 ##e0/0/2接口
[Huawei-Ethernet0/0/3]port link-type access
[SW1-Ethernet0/0/3]port default vlan 20 ##放到vlan20中
[Huawei-Ethernet0/0/3]un sh
[Huawei-Ethernet0/0/3]int e0/0/4
[Huawei-Ethernet0/0/4]port link-type access
[Huawei-Ethernet0/0/4]port default vlan 10
[Huawei-Ethernet0/0/4]un sh
[Huawei-Ethernet0/0/4]int e0/0/5
[Huawei-Ethernet0/0/5]port link-type access
[Huawei-Ethernet0/0/5]port default vlan 20
[Huawei-Ethernet0/0/5]un sh
[Huawei-Ethernet0/0/5]dis vlan ##查看vlan信息
[Huawei-Ethernet0/0/5]int e0/0/1 ##进入接口
[Huawei-Ethernet0/0/1] port link-type trunk ##设置为trunk口
[Huawei-Ethernet0/0/1]port trunk allow-pass vlan all ##允许所有vlan通过
[Huawei-Ethernet0/0/1]un sh ##开启
R1:
[Huawei]dhcp enable ##开启dhcp
[Huawei]int g0/0/0.10 ##进入逻辑子接口
[Huawei-GigabitEthernet0/0/0.10]dot1q termination vid 10 ##封装协议,该接口对应vlan10
[Huawei-GigabitEthernet0/0/0.10]ip add 192.168.10.1 24 ##配置网关地址
[Huawei-GigabitEthernet0/0/0.10]arp broadcast enable ##开启广播
[Huawei-GigabitEthernet0/0/0.10]dhcp select relay ##开启DHCP中继服务
[Huawei-GigabitEthernet0/0/0.10]dhcp relay server-ip 14.0.0.2 ##指向Huawei服务器地址
[Huawei-GigabitEthernet0/0/0.10]int g0/0/0.20 ##进入逻辑子接口
[Huawei-GigabitEthernet0/0/0.20]dot1q termination vid 20 ##vlan20
[Huawei-GigabitEthernet0/0/0.20]ip add 192.168.20.1 24
[Huawei-GigabitEthernet0/0/0.20]arp broadcast enable
[Huawei-GigabitEthernet0/0/0.20]dhcp select relay
[Huawei-GigabitEthernet0/0/0.20]dhcp relay server-ip 14.0.0.2
[Huawei-GigabitEthernet0/0/0.20]q
[Huawei]int e0/0/0 ##配置接口的ip地址
[Huawei-Ethernet0/0/0]ip add 14.0.0.1 24
[Huawei-Ethernet0/0/0]un sh
[Huawei-Ethernet0/0/0]int g0/0/0
[Huawei-Ethernet0/0/1]ip add 12.0.0.1 24
[Huawei-Ethernet0/0/1]un sh
[Huawei-Ethernet0/0/1]dis ip int b ##查看接口ip信息
[Huawei]ip route-static 15.0.0.0 24 12.0.0.2 ##设置静态路由
R2:
[Huawei]int e0/0/0 ##配置接口IP地址
[Huawei-GigabitEthernet0/0/0]ip add 12.0.0.2 24
[Huawei-GigabitEthernet0/0/0]un sh
[Huawei-GigabitEthernet0/0/0]q
[Huawei]dhcp enable ##开启dhcp
[Huawei]int e0/0/1 ##进接口
[Huawei-GigabitEthernet0/0/1]ip add 15.0.0.1 24 ##配置接口ip
[Huawei-GigabitEthernet0/0/1]dhcp select relay ##开启中继
[Huawei-GigabitEthernet0/0/1]dhcp relay server-ip 14.0.0.2 ##指向服务器地址
[Huawei-GigabitEthernet0/0/1]un sh
[Huawei-GigabitEthernet0/0/1]q
[Huawei]ip route-static 0.0.0.0 0.0.0.0 12.0.0.1 ##设置默认路由
[Huawei]dis ip int b ##查看接口ip信息
R4:
[Huawei]dhcp enable ##开启dhcp
[Huawei]int e0/0/0 ##进入接口
[Huawei-Ethernet0/0/0]ip add 14.0.0.2 24 ##配置ip地址
[Huawei-Ethernet0/0/0]dhcp select global ##设置全局
[Huawei-Ethernet0/0/0]un sh
[Huawei-Ethernet0/0/0]q
[Huawei]ip route-static 0.0.0.0 0.0.0.0 14.0.0.1 ##设置默认路由
[Huawei]ip pool dhcp15 ##创建15网段的地址池
[Huawei-ip-pool-dhcp15]network 15.0.0.0 mask 24 ##设置ip地址段和子网掩码
[Huawei-ip-pool-dhcp15]gateway-list 15.0.0.1 ##设置网关
[Huawei-ip-pool-dhcp15]dns-list 8.8.8.8 2.2.2.2 ##设置dns地址
[Huawei-ip-pool-dhcp15]q
[Huawei]ip pool dhcpvlan10 ##创建vlan10的地址池
[Huawei-ip-pool-dhcpvlan10]network 192.168.10.0 mask 24
[Huawei-ip-pool-dhcpvlan10]gateway-list 192.168.10.1
[Huawei-ip-pool-dhcpvlan10]dns-list 8.8.8.8 2.2.2.2
[Huawei-ip-pool-dhcpvlan10]excluded-ip-address 192.168.10.100 192.168.10.254 ##排除的地址
[Huawei-ip-pool-dhcpvlan10]static-bind ip-address 192.168.10.88 mac-address 5489-9820-62fb ##设置固定ip
[Huawei-ip-pool-dhcpvlan10]q
[Huawei]ip pool dhcpvlan20 ##创建vlan20地址池
[Huawei-ip-pool-dhcpvlan20]network 192.168.20.0 mask 24
[Huawei-ip-pool-dhcpvlan20]gateway-list 192.168.20.1
[Huawei-ip-pool-dhcpvlan20]dns-list 8.8.8.8 2.2.2.2
[Huawei-ip-pool-dhcpvlan20]q
ENSP实验之DHCP协议抓包分析_第2张图片
图2 所有PC机的设置示例

三、抓包分析(R1的GE0/0/0处抓包)
ENSP实验之DHCP协议抓包分析_第3张图片
图3 PC1获取ip信息

在这里插入图片描述
图4 R1的GE0/0/0处抓包

为了动态获取并使用一个合法的IP地址,需要经历以下几个阶段:
(1) 发现阶段:即DHCP客户端寻找DHCP服务器的阶段。
(2) 提供阶段:即DHCP服务器提供IP地址的阶段。
(3) 选择阶段:即DHCP客户端选择某台DHCP服务器提供的IP地址的阶段。
(4) 确认阶段:即DHCP服务器确认所提供的IP地址的阶段

1. 发现阶段(客户端广播寻找DHCP服务器)
在发现阶段,DHCP客户端通过发送DHCP-DISCOVER报文来寻找DHCP服务器。

由于DHCP服务器的IP地址对于客户端来说是未知的,所以DHCP客户端以广播方式发送DHCP-DISCOVER报文。所有收到DHCP-DISCOVER报文的DHCP服务器都会发送回应报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。
ENSP实验之DHCP协议抓包分析_第4张图片
2. 提供阶段(DHCP服务器发送可用IP详细信息)
网络中接收到DHCP-DISCOVER报文的DHCP服务器,会选择一个合适的IP地址,连同IP地址租约期限和其他配置信息(如网关地址,域名服务器地址等)一同通过DHCP-OFFER报文发送给DHCP客户端。

DHCP服务器通过地址池保存可供分配的IP地址和其他配置信息。当DHCP服务器接收到DHCP请求报文后,将从IP地址池中取得空闲的IP地址及其他的参数,发送给DHCP客户端。
ENSP实验之DHCP协议抓包分析_第5张图片
DHCP服务器为客户端分配IP地址的优先次序如下:
(1) 与客户端MAC地址或客户端ID静态绑定的IP地址;
(2) DHCP服务器记录的曾经分配给客户端的IP地址;
(3) 客户端发送的DHCP-DISCOVER报文中Option 50字段指定的IP地址;
(4) 在DHCP地址池中,顺序查找可供分配的IP地址,最先找到的IP地址;
(5) 如果未找到可用的IP地址,则依次查询租约过期、曾经发生过冲突的IP地址,如果找到则进行分配,否则将不予处理。

DHCP服务器为客户端分配IP地址时,服务器首先需要确认所分配的IP没有被网络上的其他设备所使用。DHCP服务器通过发送ICMP Echo Request(ping)报文对分配的IP进行探测。如果在规定的时间内没有应答,那么服务器就会再次发送ping报文。到达规定的次数后,如果仍没有应答,则所分配的IP地址可用。否则将探测的IP地址记录为冲突地址,并重新选择IP地址进行分配。

3. 选择阶段(选择IP并广播通告其他DHCP服务器)
如果有多台DHCP服务器向DHCP客户端回应DHCP-OFFER报文,则DHCP客户端只接受第一个收到的DHCP-OFFER报文。然后以广播方式发送DHCP-REQUEST请求报文,该报文中包含Option 54(服务器标识选项),即它选择的DHCP服务器的IP地址信息。

以广播方式发送DHCP-REQUEST请求报文,是为了通知所有的DHCP服务器,它将选择Option 54中标识的DHCP服务器提供的IP地址,其他DHCP服务器可以重新使用曾提供的IP地址。
ENSP实验之DHCP协议抓包分析_第6张图片
4. 确认阶段(广播ARP探测是否有其他主机使用该IP)
收到DHCP客户端发送的DHCP-REQUEST请求报文后,DHCP服务器根据DHCP-REQUEST报文中携带的MAC地址来查找有没有相应的租约记录。如果有,则发送DHCP-ACK报文作为应答,通知DHCP客户端可以使用分配的IP地址。
ENSP实验之DHCP协议抓包分析_第7张图片
DHCP客户端收到DHCP服务器返回的DHCP-ACK确认报文后,会以广播的方式发送免费ARP报文,探测是否有主机使用服务器分配的IP地址,如果在规定的时间内没有收到回应,客户端才使用此地址。否则,客户端会发送DHCP-DECLINE报文给DHCP服务器,通知DHCP服务器该地址不可用,并重新申请IP地址。

如果DHCP服务器收到DHCP-REQUEST报文后,没有找到相应的租约记录,或者由于某些原因无法正常分配IP地址,则发送DHCP-NAK报文作为应答,通知DHCP客户端无法分配合适IP地址。DHCP客户端需要重新发送DHCP-DISCOVER报文来请求新的IP地址。

简单说来,DHCP协议的工作流程就是:
客户端:“DHCP服务器在哪里啊?我要IP”(DHCP DISCOVER)
DHCP服务器:“IP详情了解一下~”(DHCP OFFER)
客户端:“我选好IP了”(DHCP REQUEST)
DHCP服务器:“有租约记录,请放心使用”(DHCP ACK)
客户端:“没其他客户端用这个IP吧?OK!!”(ARP)

你可能感兴趣的:(ENSP实验之DHCP协议抓包分析)