DHCP原理与配置
一、DHCP产生背景
- DHCP用于解决手工配置网络参数的灵活性差、容易出错、IP地址率利用率低、工作量大、人员素质要求高等问题
- DHCP基本概念:是一种用于集中对用户IP地址进行动态管理和配置的协议,采用C/S架构,协议报文基于UDP方式进行交互,采用 67 (服务器),和 68 (客户端)两个端口号,租期默认为 24h 。
- 优点 :效率高、灵活性强、易于管理
二、DHCP工作原理
1、DHCP接入流程:
- 发现阶段:Discovery(广播)
Flag字段值=1,Offer阶段使用广播进行回复 - 提供阶段:Offer(单播/广播)
不支持接收广播的设备flag=0(单播接收Offer报文) - 选择阶段:Request(广播)
首次接入发送广播报文请求收到的第一个Offer报文中的ip地址
在租期到达50%时候发送单播Request报文进行请求续租,若在87.5%还未收到服务器回复ACK则再次发送一个Request广播请求报文
在发送request后收到ACK回应则刷新地址到期时间,若在87.5%发送请求报文后依旧未收到回应则等待地址到期后重新进行Discovery请求新的IP地址
若在Request阶段收到服务器回复的NAK报文,则重新发送Discovery报文 - 确认阶段:ACK(单播)
客户端收到服务器发送的ACK报文后会自主发送免费ARP报文检测本网段地址是否有冲突
若收到冲突报文则发送Decline报文给服务器,并向服务器重新请求地址,服务器会记录下改冲突地址并在地址宽裕情况下不分配给其他主机使用
2、DHCP报文格式
- OP字段 :取1代表客户端发送的报文,取0代表服务器发送的报文
- Secs:客户端从开始获得/续租后使用该地址的时间,缺省为3600s
- Xid:客户端选举的随机数,用于报文相关联
- Hops:记录DHCP经过中继的数量,开启中继后第一个Giaddr为中继的IP地址
- Flags:为0时代表单播报文,为1时代表广播报文
- Yiaddr:服务器发给客户分配的IP地址
- Siaddr:DHCP服务器的IP地址
- Chaddr:客户端的MAC
- Opotions:配置信息,最长为312Byte
三、DHCP Opotions预定义字段
1、DHCP 消息类型
Value | 作用 |
---|---|
1 | 用于发现DHCP服务器 |
2 | 服务器向客户端提供配置信息,响应discovery报文 |
3 | 客户端用于请求服务器提供的地址信息,也用于续租 |
4 | 免费ARP检测到冲突时,客户端向服务器发送并请求新的地址信息 |
5 | 对DHCP Request进行回复确认的消息 |
6 | 服务器拒绝提供地址分配服务消息 |
7 | 客户端主动释放获取到的IP地址信息 |
8 | 客户端需要向服务器请求更多的信息发送Inform报文 |
2、DHCP自定义Opotion
(1)opotion82:中继代理信息选项
opotion82中最多包含255个sub-option,若定义了opotion82则至少定义一个sub-option
(2)opotion43:厂商特定信息选项
在WLAN组网中,opotion43还可以为AP通过DHCP获取IP地址,同时DHCP服务器可以为AP指定AC的IP地址,使AP与AC建立连接
四、DHCP分配IP地址顺序:
DHCP客户端重用曾经使用过的地址:
非首次接入网络可以重用曾经用的的地址
- 选择阶段:
客户端广播发送包含前一次分配的IP地址的DHCP Request报文,报文中包含opotion50(请求的地址选项)字段,内含曾经使用过的IP地址 - 确认阶段:
服务器收到请求后,根据报文中携带MAC地址表查找没有没有响应的租约记录,有则返回DHCP ACK报文,无则不响应
五、DHCP中继
1、为什么要中继?
用于扩大DHCP消息的传播范围,使其他广播域也能正常使用DHCP服务
2、报文格式
报文格式未变化,只是将DHCP的报文部分字段做了响应的修改
3、Relay工作原理
六、DHCP相关配置
1、基于全局:
1.系统视图使能
[ ]dhcp enable
2.创建地址池
[ ]ip pool ______ //池名称
3.地址池内进行配置
[pool-x]network ip mask 掩码长度//配置可分配IP地址
[pool-x]gateway-list _________ //配置网关地址(可以存在多个)
4.配置不分配地址
[pool-x]exclude-ip 开始ip 结束ip(或者单个ip)
5.配置地址池租期
[pool-x]lease day x hour x minute x|unlimited
6.配置为指定客户端分配固定IP
[pool-x]static-bing ip-address 地址 mac-address 客户端mac [opotion-template name]description 描述
7.进入相关接口
dhcp server select grobal //选择全局地址池
8.查看ip pool信息
display ip pool
2、基于接口:
1.全局使能dhcp服务,进入接口
[ ]dhcp enable
[ ]interface x/x/x
2.接口下添加好ip地址(基于接口的ip地址掩码不能配置为31位,否则导致接口地址池配置失败)
3.配置接口地址池的网关IP地址
[接口下]DHCP server gateway-list 网关ip
4.配置为指定DHCP 客户端分配固定ip地址
[接口下]DHCP server static-bing ip-address 地址 mac-address 客户端mac description 描述
5.配置接口池不参与分配IP地址
[接口下]DHCP server exclude-ip 开始ip 结束ip(或者单个ip)
6.配置地址池的地址租期
[接口下]DHCP server lease day x hour x minute x|unlimited
7.选择接口地址池:
[接口下]dhcp server select interface
3、中继配置:
1.使能接口的DHCP中继功能
[接口下]DHCP select relay //面向客户端的接口
2.在接口视图下配置server ip地址
[接口下]DHCP relay server-ip 服务器ip //面向客户端的接口
3.创建服务器组
[ ]DHCP server group __
4.配置组中服务器成员
[group-x]DHCP-server ip [ip-index]
5.配置接口应用的DHCP服务器组
[接口下]DHCP relay server-select __ip__ //ip地址为DHCP服务器组地址
6.开启接口下DHCP客户端功能
[接口下]ip address DHCP-alloc