DHCP 是工作在局域网中的网络协议, 主要用于给局域网中的主机动态分配IP 地址。Wireshark 是一个功能强大的网络分析软件, 常用于截取和解析网络数据包。为研究和理解DHCP 的工作流程, 设计了一个实验。在虚拟机环境中搭建DHCP 服务器和客户端主机, 并使用Wireshark 截获DHCP 数据包, 分析和归纳DHCP 服务器动态分配IP 地址给客户端的工作流程。实验中对DHCP 工作流程的归纳研究对学习网络协议有积极意义, 同时实验环境的搭建和对Wireshark 软件的使用为后续的网络攻防相关的研究打下基础。
1 实验过程
1.1 搭建虚拟机环境
使用Parallels Desktop 虚拟机软件, 建立2 台WindowsServer 2003 虚拟机作为DHCP 服务器(以下简称S1 和S2),建立1 台Windows XP 虚拟机作为客户端主机(以下简称C)。S1 的IP 和首选DNS 服务器设置为192.168.1.1; S2 的IP 和首选服务器地址设置为192.168.2.1; C 的IP 和DNS 地址设置为自动获取; S1、S2、C 通过桥接网络连接到同一个局域网。
1.2 配置DHCP 服务器
在S1 的控制面板中开启DHCP 服务。控制面板--添加或删除程序--添加/删除Windows 组件--网络服务, 在详细信息 界面中勾选动态主机配置协议(DHCP)。
在管理工具的DHCP 界面中配置DHCP 服务器, 主要步骤如下:
(1) 右键单击DHCP 服务器--新建作用域--地址范围设置为192.168.1.1--192.168.1.254。
(2) 添加排除地址192.168.1.1 (即: S1 服务器自己的地址不用于分配)。
S2 的DHCP 配置过程与S1 相似, 不同之处是将地址范围设置为192.168.2.1 --192.168.2.254, 添加排除地址为192.168.2.1。
1.3 用Wireshark 抓取并分析数据包
在S1、S2 和C 中开启Wireshark, 并以bootp 为表达式添加新的过滤规则(BOOTP 协议是DHCP 协议的前身, 在Wireshark 中, BOOTP 表达式可以捕获DHCP 数据包)。点击Start 按钮开始截取数据包。
在C 的命令行窗口中, 执行以下命令, 释放客户端已有的ip 并重新申请ip:
ipconfig /release
ipconfig /renew
在S1、S2 和C 的Wireshark 界面中, 都截取到如图2 所示的DHCP 数据包。
其中, Source 为0.0.0.0 的广播由C 发出; Source 为192.168.1.1 和192.168.2.1 的广播分别由S1 和S2 发出。
1.4 归纳DHCP 工作流程
在通过DHCP 协议动态分配IP 的过程中,所有的DHCP 数据包都以广播(目标地址是255.255.255.255)的方式发出, 整个过程可归纳如下:
(1) C 向整个网络发出DHCP Discover 广播, 申请IP。
(2) 网络中的DHCP 服务器S1 和S2 收到C 发出的DHCP Discover 广播后, 在各自的地池中分配给C 一个IP, 并通过DHCP Offer 广播发出。
(3) C 将收到的第一个IP (S2 分配的192.168.2.2) 和本机网卡绑定, 并向网络发送DHCP Request 广播。
(4) S2 收到C 发出的DHCP Request 后(C 接受了S2 分配的IP), 发送DHCP ACK 广播, 表示该IP 以分配。
(5) S1 收到C 发出的DHCP Request 后(C 没有接受S1分配的IP), 发送DHCP NAK 广播, 收回没有分配出去的IP。
2 结语
实验在虚拟机环境下模拟了1 台客户端向2 台DHCP 服务器申请IP 的过程, 通过Wireshark 截取并分析了DHCP 协议的工作流程。实验中对DHCP 工作流程的归纳对学习网络协议有积极意义。同时, 实验环境的搭建、对Wireshark 使用方法的探索, 为后续的网络攻防相关研究打下基础。在后续的研究中, 将重点关注虚拟机环境下其他网络协议的实验和基于Wireshark 的网络攻击与防御技术的研究。
参考文献
[1] 王太成, 蔡勇. 利用虚拟机技术完成复杂网络实验[J] .计算机技术与发展, 2009, 19 (4).
[2] Douglas Jacobson. 网络安全基础: 网络攻防、协议与安全[M] . 电子工业出版社, 2011.