本文最后更新于67 天前,其中的信息可能已经过时,如有错误请发送邮件到583126841@qq.com
DHCP协议概述
DHCP (Dynamic Host Configuration Protocol) 动态主机配置协议,是一种网络管理协议,用于自动分配IP地址和其他网络配置参数。
DHCP在工作过程中使用广播和单播方式进行通信,尤其是客户端请求IP地址时,使用广播方式。
DHCP的优势
- 集中管理: 统一管理IP地址分配
- 自动配置: 无需手动配置客户端
- 减少错误: 避免IP地址冲突和配置错误
- 灵活调整: 便于网络参数变更
- 地址复用: 提高IP地址利用率
DHCP的劣势
- 单点故障: DHCP服务器故障影响全网
- 安全风险: 可能遭受DHCP欺骗攻击
- 网络依赖: 需要网络连通才能获取地址
- 不适合服务器: 服务器需要固定IP
DHCP工作原理
DHCP四步交互过程(DORA)
sequenceDiagram
participant Client as DHCP客户端<br/>VPC1
participant Server as DHCP服务器<br/>L3-SW
Note over Client: 1. DHCP Discover<br/>发现DHCP服务器
Client->>Server: 广播: DHCP Discover<br/>源IP: 0.0.0.0<br/>目标IP: 255.255.255.255<br/>MAC: Client MAC
Note over Server: 2. DHCP Offer<br/>提供IP地址
Server->>Client: 单播/广播: DHCP Offer<br/>提供IP: 192.168.10.10<br/>网关: 192.168.10.254<br/>DNS: 8.8.8.8<br/>租约: 7天
Note over Client: 3. DHCP Request<br/>请求使用该IP
Client->>Server: 广播: DHCP Request<br/>请求IP: 192.168.10.10<br/>服务器ID: L3-SW
Note over Server: 4. DHCP Ack<br/>确认分配
Server->>Client: 单播/广播: DHCP Ack<br/>确认IP: 192.168.10.10<br/>配置生效
Note over Client: 配置完成<br/>开始使用IP地址
DHCP消息类型
- DHCP Discover: 客户端广播寻找DHCP服务器
- DHCP Offer: 服务器提供IP地址和配置
- DHCP Request: 客户端请求使用提供的IP
- DHCP Ack: 服务器确认分配
- DHCP Nak: 服务器拒绝分配
- DHCP Release: 客户端释放IP地址
- DHCP Decline: 客户端拒绝IP地址(地址冲突)
- DHCP Inform: 客户端请求配置参数
DHCP租约机制
租约 (Lease) 是DHCP分配IP地址的有效期限。
租约时间线
%%{init: {'theme':'base', 'themeVariables': { 'fontSize':'16px'}}}%%
timeline
title DHCP租约时间线
section 租约周期
租约开始 (0%) : 开始使用IP地址
T1续约点 (50%) : 单播续约请求
: 向原DHCP服务器
T2续约点 (87.5%) : 广播续约请求
: 任何DHCP服务器
租约到期 (100%) : 释放IP地址
: 重新发起Discover
租约更新过程
- T1时间点 (50%):
- 客户端向原DHCP服务器发送单播Request
- 请求续约当前IP地址
- 如果成功,租约重新开始计时
- T2时间点 (87.5%):
- 如果T1续约失败
- 客户端广播Request请求续约
- 任何DHCP服务器都可以响应
- 租约到期 (100%):
- 如果T2续约失败
- 客户端停止使用该IP
- 重新发起Discover过程
DHCP地址池
地址池 (Address Pool) 是DHCP服务器可以分配的IP地址范围。
地址池组成
网段: 192.168.10.0/24
├─ 网络地址: 192.168.10.0 (不可用)
├─ 排除地址: 192.168.10.1-9 (预留)
│ ├─ 服务器
│ ├─ 打印机
│ └─ 网络设备
├─ 地址池: 192.168.10.10-100 (可分配)
│ └─ DHCP自动分配
├─ 静态地址: 192.168.10.101-253 (手动配置)
├─ 网关: 192.168.10.254 (L3-SW)
└─ 广播地址: 192.168.10.255 (不可用)
地址池配置要素
- 网络地址: 定义地址池所属网段
- 子网掩码: 定义网络范围
- 默认网关: 客户端的默认路由
- DNS服务器: 域名解析服务器
- 域名: 客户端所属域
- 租约时间: IP地址有效期
- 排除地址: 不参与DHCP分配的地址
DHCP选项
DHCP选项 (Options) 是DHCP服务器提供给客户端的配置参数。
常用DHCP选项
| 选项编号 | 选项名称 | 说明 | 示例 |
|---|---|---|---|
| 1 | Subnet Mask | 子网掩码 | 255.255.255.0 |
| 3 | Router | 默认网关 | 192.168.10.254 |
| 6 | DNS Server | DNS服务器 | 8.8.8.8 |
| 15 | Domain Name | 域名 | yxwa.com |
| 51 | Lease Time | 租约时间 | 604800秒(7天) |
| 58 | Renewal Time | T1续约时间 | 302400秒(3.5天) |
| 59 | Rebinding Time | T2续约时间 | 529200秒(6.125天) |
| 66 | TFTP Server | TFTP服务器 | 用于PXE启动 |
| 150 | TFTP Server | Cisco IP电话配置 | Cisco专用 |
DHCP中继代理
DHCP中继代理 (DHCP Relay Agent) 用于转发不同网段间的DHCP消息。
为什么需要DHCP中继
- 广播限制: DHCP Discover是广播消息,不能跨网段
- 集中管理: 一台DHCP服务器服务多个网段
- 节省资源: 无需在每个网段部署DHCP服务器
DHCP中继工作原理
VLAN 10客户端 → SW1 → L3-SW(中继) → DHCP服务器
↓
转换广播为单播
添加giaddr字段
giaddr (Gateway IP Address):
- 中继代理的接口IP地址
- 告诉DHCP服务器客户端所在网段
- DHCP服务器根据giaddr选择地址池
DHCP安全
DHCP安全威胁
- DHCP欺骗攻击:
- 攻击者部署恶意DHCP服务器
- 向客户端分配错误的网关和DNS
- 劫持网络流量
- DHCP饿死攻击:
- 攻击者请求所有可用IP
- 耗尽DHCP地址池
- 合法用户无法获取IP
- DHCP中间人攻击:
- 拦截DHCP消息
- 修改配置参数
- 窃取网络流量
DHCP安全防护
- DHCP Snooping:
- 区分信任和不信任端口
- 只允许信任端口发送DHCP Offer
- 建立DHCP绑定表
- IP Source Guard:
- 基于DHCP绑定表过滤流量
- 防止IP地址欺骗
- Dynamic ARP Inspection:
- 检查ARP消息合法性
- 防止ARP欺骗攻击
- 端口安全:
- 限制端口MAC地址数量
- 防止MAC地址泛洪
