DHCP:Dynamic Host Configure Protocol 动态主机配置协议
- 从BOOTP(Bootstrap Protocol)协议发展而来 (wireshark抓包搜索关键字bootp)
- UDP封装,服务器使用端口67,客户端使用端口68
- 动态分配网络信息(IP地址、子网掩码、网关、DNS服务器等)
- 分配给客户端的网络信息是有租约的
DHCP角色
| 角色 | 备注 |
|---|---|
| DHCP Cilent 客户端 | 请求网络信息的用户 |
| DHCP Server 服务器 | 能够提供DHCP功能的设备 |
| DHCP Relay 中继 | 一般为路由器或三层交换机等设备 |
dhcp报文类型
| 报文类型 | 备注 |
|---|---|
| DHCP Discover 发现 | 客户端寻找DHCP服务器 |
| DHCP Office 提供 | 服务器响应DHCP Discover报文,该报文也携带了网络信息 |
| DHCP Request 请求 | 客户端请求服务器对网络信息确认,或者续约租期 |
| DHCP ACK 确认 | 服务器对DHCP Request报文确认响应 |
| DHCP NAK 不确认 | 服务器对DHCP Request报文的拒接响应 |
| DHCP Release 释放 | 客户端释放网络信息通知服务器 |


ps: Offer和ACK报文也可以说是广播包,因为服务器只是根据MAC地址回应,没有看三层(在ack确认之后才是真正的使用地址)
NAK报文的出现
- IP地址可能已经被使用
- 租期未到期,网络信息还存在,换了DHCP服务器(如:切换网络环境,请求续约,但是服务器不存在该网络信息)
在租期时间过50%后,主机会自动发送DHCP Request报文请求DHCP服务器重新续租
在租期时间过50%一直请求服务器,但服务器未响应,客户端在87.5%会发送DHCP Request报文请求所有DHCP服务器分配网络信息 (注:是以广播的形式发送)
无法获取DHCP服务器分配的网络信息,Windows客户端会自动使用169.254.0.0/16地址,供临时通信
DHCP配置
| 命令 | 备注 |
|---|---|
| dhcp enable | 开启DHCP功能 |
| dhcp selcet interface | 关联接口和接口地址池 |
| dhcp server dns-list [dns服务器地址] | 配置接口地址池的DNS服务器 |
| dhcp server lease [day x hour x minute z] | 配置接口地址池的租期,默认1天 |
| dhcp server excluded-ip-address [ipaddr1 ipaddr2] | 配置接口地址池排除的地址范围 |
| dhcp server static-bind-ip-address [x.x.x.x] mac-address [xxxx-xxxx-xxxx] | 配置静态绑定 |
| dhcp select global | 关联接口和全局地址池绑定 |
| ip pool [名称] | 创建全局地址池 |
| network [地址] | 配置全局地址池的可分配的网段地址 |
| gateway-list [地址] | 配置全局地址池的网关地址 |
| dns-list [地址] | 配置全局地址池的DNS服务器地址 |
| lease [数字] | 配置全局地址池下的租期,默认1天 |
| excluded-ip-address [地址] | 查看地址池的属性 |
| dhcp select relay | 关联接口开启中继代理 |
| dhcp relay server-ip 192.168.10.254 | 指定DHCP服务器的地址 |
| display ip pool interface [interface 接口名 all] | 验证接口地址池的信息 |
| display ip pool name [地址池名称] used | 验证全局地址池的信息 |
| ipconfig /release | 释放租期 |
| ipconfig /renew | 重新获取 |
DHCP实验
接口地址池

1 | #SW1 |
全局地址池

1 | #SW1 |


