Wireshark笔记-从抓包的角度分析几种客户端不能正常获取IP地址的场景
背景
为什么主机老使用DHCP时,经常获取不了ip地址,时不时还要等一段时间,再次获取时,才能正常获取ip。找“桌面运维工程师”,他说这个是DHCP服务端有问题,你得找“网络运维工程师”,找“网络运维工程师”,却说,我这边提供的服务正常,别人都能上网,你上不了,时不时主机有问题,你得找“桌面运维工程师”。
是不是你也遇到过这种相互推脱的问题呢?
如何解决这样的问题呢,一共有3个方案:
① 找关系(领导),让他安排人进行解决。
② 忽悠“桌面运维工程师”或“网络运维工程师”的任一一方,说xx来看过了,说是你这边的问题。
③ 自己进行抓包取证,定位到问题到底所属哪一方,再让其配合进行解决。
知识点
DHCP客户端与DHCP服务端交互过程
① DHCP客户端会发起DHCPDiscover广播消息,向所有DHCP服务器请求IP地址租约,此时源IP地址为0.0.0.0,广播地址为255.255.255.255,请求数据包会客户端的MAC和计算机名。
② 所有接收到DHCPDiscover广播包的服务器,会检测自己的配置,如果富余的IP地址,则DHCP服务器发起DHCPOffer广播消息来应答DHCP客户端,如果有多个DHCP服务器给予此DHCP客户端DHCPOffer消息,则DHCP客户端接收第一个DHCPOffer消息中的IP地址。
③ 当DHCP客户端收到DHCP服务器的租约时,它将发起DHCPRequest广播消息,告诉所有DHCP服务器自己已经做出选择,接受了某个DHCP服务器的租约。在此DHCPRequest广播消息中包含了DHCP服务端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等,所有其他的DHCP服务器收到其广播包后,收回它们以此DHCP客户端所保留的IP地址租约。此时由于没有得到DHCP服务器确认,DHCP客户端仍然不能使用租约中提供的IP地址,所以在此数据包中仍然使用0.0.0.0作为源IP地址,广播地址255.255.255.255作为目的地址。
④ 提供的租约被接受的DHCP服务器在接收到DHCP客户端发起的DHCPRequest广播消息后,会发送DHCPAck广播消息进行最后的确认,在这个消息中同样包含了租约期限及其他TCP/IP选项信息。
详细的可以看下DHCP那个文章。
流程
① 无任何DHCP包,连Discover都没有,说明网卡要不就静态,要不就被禁用了。
Wireshark如下:
windows配置如下:
或
② 只有discover无offer
Wireshark如下:
这种情况一般是dhcp服务端那边的问题,可能是客户端被拉黑了,可能是dhcp挂了。
③ 有disvoer + offer,无request。
这种情况是客户端,dhcp模块有问题,需要排查客户端。
以windows为例,电脑被黑了,注册表被修改。
④ 有discover + offer + request,无ack。
这种情况有可能是被dhcp拉黑,或未在白名单中。
地址耗尽,ip冲突,不允许续期。等也会出现这种情况。