DHCP服务器设计

    xiaoxiao2021-12-14  22

    1.开发背景

    DHCP,全称Dynamic Host Configuration Protocol,中文名,动态主机配置协议,前身为BOOTP协议,它工作在OSI的应用层,是一种帮助计算机从指定的DHCP服务器获取它们的配置信息的自举协议。 本次开发的目的是为了熟悉DHCP服务器工作的流程,并且设计出一款家庭应用范围级别的程序。

    2.设计方案

    2.1协议工作原理

    先借用一张流程图展示协议运作的整个过程。 从上图可得知,DHCP工作的流程是相对来说比较简单的,总的来说, 第一步 客户端发广播discover报文寻找能提供IP的服务器; 第二步 服务器给出响应,这里和FIFO(先到先服务的原则)规则一样,客户端接收到响应最快的服务器的offer; 第三步 客户端选择服务器,广播request,请求服务器确认; 第四步 服务器解析返回的request,查看DHCP服务器是否为本机,以此来回复ACK或者NAK报文。


    下面在贴上报文的格式,一一对其字段做解释。 op:操作码,1为请求,2为回复 htype:硬件类型 1为以太网 hlen:硬件地址的长度 以太网填6 hops:客户设置为0, 转发代理使用 xid:操作id,每一个系列的行为都是相同值 sec:客户端引导开始后过去的秒数 flags:广播标志 ciaddr:客户端IP地址 yiaddr:若客户端不知道它的IP地址,服务器应答时填入 siaddr:服务器IP地址,引导应答时返回 giaddr:中继代理IP地址,跨越网关引导使用 chaddr:客户端硬件地址,客户端填写 sname:可选的服务器主机名 file:引导文件名 options:可选选项域

    DHCP协议是在BOOTP协议的基础上改进的,所以大部分有效的配置信息都在选项域里出现。 选项域的字段都符合 类型字段(1byte) 内容长度(1byte) 内容(内容长度bytes)

    简单来说,只需要去理会消息类型、MAC地址、租约时间、子网掩码、路由、DNS的选项。

    2.2系统运作

    2.2.1工作线程

    三个线程属于资源抢占型,必须要在控制线程之间运行的相对速度,在公共资源区设置好临界区,保护储存客户的信息和代码。

    2.2.2分发线程

    分发线程的作用有3个: (1)监听客户请求并且分析之后把消息传递给处理线程 (2)线程接收到请求后,分析该请求是否为重复的discover报文 (3)提取数据包字段信息,封装到结构体内

    2.2.3处理线程

    处理线程为程序里面处理信息量最大的线程,它负责最核心的工作。 该线程的作用有4个: (1)收到discover报文使其入队 (2)按照顺序从地址池中提取IP,,若是分发线程传来的结构体内有客户请求的IP,则优先采用该IP地址 (3)根据接收到不同的报文选择回复相应的报文 (4)客户请求的IP通过后,将IP地址和MAC地址,租约时长存入双向链表当中

    2.2.4维护线程

    维护线程负责扣除时长和显示每个客户的信息在界面上。

    2.3关键技术

    这次开发采用了Winsock库,数据结构队列和链表(单双向链表)的一些基本操作,并且用MFC来做界面的设计。队列用于存放不同客户的discover请求,一个用户可能会因网络阻塞而发出多个discover报文,同时也要用单链表对其进行过滤。双向链表则保存着客户的配置信息和租约时长等等。

    2.4模块分析

    3.效果截图

    标签包括IP地址、MAC地址、主机名、时长。

    4.安全分析

    DHCPFLOOD攻击会对服务器造成极大的影响,而且在软件角度也没有很好的办法去处理,唯一折中的办法就是设置一个合适的discover报文的阈值,如果超过,整个系统就暂停工作一段时间,也就拒绝分配新的IP地址出去,但是仍然会维持已有的客户信息。 有些攻击工具会比较狡猾,在以太帧的目的硬件地址,不会随机生成新的MAC地址,所以一些交换机就算有防CAM攻击,也没有办法确认应用层上的数据,也就是说攻击者可以在DHCP协议里面填充随机的MAC地址,这样就能轻松的绕过交换机的监视,除非交换机带有解析DHCP的功能。最后,软件方面,能做的就是敏感异常数据,暂停工作。

    参考文献

    刘海燕.网络综合管理系统DHCP服务器的研究与实现[M], 2006.3 王文龙.黄地龙.DHCP协议深入分析[M].成都理工大学信息工程学院.四川成都.610059,2010.4 张会勇.Winsock网络编程经络[M].电子工业出版社. 北京,2012.8

    转载请注明原文地址: https://ju.6miu.com/read-969125.html

    最新回复(0)