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
原文地址:https://www.cnblogs.com/aimmiao/p/12759522.html