DHCP协议讲解

Posted aimmiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DHCP协议讲解相关的知识,希望对你有一定的参考价值。

1 DHCP优缺点

技术图片

 

2 基础知识

2.1 介绍

名字:Dynamic Host Configuration Protocol -> DHCP

前身:Bootp

传输层:UDP

端口号:’DHCP server’67      ‘DHCP client’68

技术图片

 

 

2.2 报文流程-无中继

技术图片

 

 

2.3 报文流程-有中继

技术图片

 

 

2.4 报文类型

技术图片

 

 

2.5 报文格式

技术图片

 

 

2.6 CS典型交互流程

2.6.1 步骤1 Discover

技术图片

 

 

2.6.2 步骤2 Offer

技术图片

 

 

2.6.3 步骤3 Request

技术图片

 

 

2.6.4 步骤4 ACK

技术图片

 

 

2.6.5 客户端重启

重启后,可直接跳过step1 discover和step2 offer,进入step3 request

技术图片

 

 

3 服务器端源码分析

3.1. 概览

本节是对busybox自带的dhcp服务端源码的分析,分析的主要目的是要掌握如下几点内容:

l  重要的全局变量和结构体定义

l  租赁IP的管理

l  收包-发包间的联系

  1. 收到DISCOVER-发OFFER
  2. 收到REQUEST-发ACK/NAK
  3. 收到DECLINE
  4. 收到RELEASE
  5. 收到INFORM-发ACK

3.2 结构体-DHCP格式

技术图片

 

 

3.3 全局变量 server_config

技术图片

 

 

3.4 全局变量 IP池

技术图片

 

 

3.5 IP的租赁管理

技术图片

 

 

3.6 报文的收发对应关系

技术图片

 

 

3.7 接收Discover

技术图片

 

 

3.8 接收Request

技术图片

 

 

3.9 接收Decline

技术图片

 

 

3.10 接收Release

技术图片

 

 

3.11 接收Inform

技术图片

 

 

4 测试

 

(1)测试用例

技术图片

分析:

步骤4结束后,dhcp server的ip地址池有192.168.1.2和192.168.1.3的使用记录。

步骤5中dhcp client并没有主动发release报文,而是直接和dhcp server断开联系。

步骤8中当dhcp client重新接入dhcp server时,直接使用之前用过的ip地址192.168.1.3.

步骤9中dhcp client无法再获得ip地址,原因如下:

Dhcp server收到申请192.168.1.3的Request后,直接回复了ACK。

Dhcp client收到ACK后,有检测到该IP地址已经不能使用,但并没有再次发Decline给dhcp server,而是继续发送申请192.168.1.3的Request。由此就陷入了一个死循环,使得dhcp client无法获得新的ip地址

(2)测试工具

工具名字:SVlanFrame.exe

技术图片

 

 技术图片

 

 

5 漏洞攻击

局域网内的任何一个主机都可以冒充dhcp server,回应某个dhcp client的discovery报文,从而篡改该dhcp client的网关地址、DNS服务器地址等。

如下局域网内有一个路由器(192.168.1.1),和两个LAN PC,其中PC2冒充dhcp server篡改了PC1的网关地址。

技术图片

 

 

6 自测问答题

问题:

1 为什么wireshark工具分析dhcp协议的时候,过滤的关键字是dhcp吗?

2 为什么执行完ipconfig /release之后,客户端的IP地址变成了169.254.60.156?

3 dhcp中是如何确定IP是否被占用的?

4 客户端的request中的ip是如何确定的?

5 广播单播的问题?

答案:

1 因为dhcp的前身就是bootp

2 在rfc5735中有对这个地址的介绍

   169.254.0.0/16 - This is the "link local" block.  As described in

   [RFC3927], it is allocated for communication between hosts on a

   single link.  Hosts obtain these addresses by auto-configuration,

   such as when a DHCP server cannot be found.

3 有两种方式:服务器端IP租赁管理和ARP查询

4 有两种方式:来自之前服务器端发出的Offer报文中的yiaddr和来自客户端以前连接的历史IP值

5 广播和单播是根据如下自动取得的,为1表示广播,为0表示单播

技术图片

 

 

7 Reference

  1. https://tools.ietf.org/html/rfc1533
  2. https://tools.ietf.org/html/rfc2131
  3. https://wenku.baidu.com/view/8fdeb5ddcf84b9d529ea7a59.html

 

以上是关于DHCP协议讲解的主要内容,如果未能解决你的问题,请参考以下文章

Linux 讲解DHCP服务工作原理汇总

DHCP协议 详解,DHCP协议的功能,DHCP协议的工作原理

协议分析 - DHCP协议解码详解

DHCP协议详解

DHCP协议

DHCP协议原理及配置