动态主机配置协议
目录
DHCP技术原理
动态主机配置协议(DHCP),是一种帮助网络管理员管理及自动分配IP地址信息的网络协议。
DHCP术语
- DHCP server:为用户提供可用的IP地址——一般配置在网关上
- DHCP client:通过DHCP动态申请IP地址给用户
- DHCP relay:用户通过跨网段申请IP地址时实现报文的中继转发功能——当主机和服务器不在一个网段时就会出现relay,中继作用:广播转为单播,网关上设置中继
- DHCP snooping:记录通过二层设备申请的IP地址用户信息(防止攻击,起到安全作用)提高DHCP本身的安全性,形成数据库给其他安全协议使用(数据库中包含了IP和MAC的绑定关系)——部署在接入层交换机
三种分配IP地址机制
- 手动分配:为特定的某台pc配置特定的地址——ip dhcp pool——client-identifier 01+MAC地址
- 自动分配:允许DHCP服务器为第一次上网的PC分配一个永久地址——租约无限
- 动态配置:服务器可以使pc在一段时间内租用一个地址(或者客户端主动释放该地址)——本质:为一个MAC地址分配一个未知的IP,有租约限制
DHCP实现原理server分配地址的优先顺序
- 静态优先——option(61)
- 重新登录、更新租约
- option(82)——代理信息
- 动态(relaty agent)
重新登陆
- 以后DHCP客户机每一次重新登陆网络时,就不需要再发送DHCP discover(单播),而是直接发送包含前一次所分配IP地址的DHCP request请求信息
- 当服务器收到这一信息之后,会尝试让客户机使用原来的IP地址,并回答一个DHCP ACK确认信息
- 如果此地址无法再次分配给原来的客户机,那么就会发送一个NAK来拒绝分配
- 之后就需要重新发送discover发现信息来重新获取地址
更新租约
当租约期满之后便会收回IP地址,如果想延长租约,必须更新租约。
DHCP八种报文
DHCP discover
(广播)用来发现网络中的server,收到的idscover报文的server都会发送回应报文;DHCP client 请求地址时,并不知道DHCP server 的位置。
DHCP offer
(广播)(服务器)告知server可以为其提供IP地址,DHCP server收到discover报文后就会在所配置的地址池中查找合适的ip地址,加上相应的租约期限和其他配置。
DHCP request
(广播)告知server可以为其提供ip地址,DHCP client可能会收到很多offer,通常选择第一个回应offer的server作为自己的目标server,并回应一个request报文,隐式拒绝其他server。
DHCP ACK
(广播)(服务器)通知client他已经可以正式使用分配ip地址(防止黑客伪造请求查找自己是否给其分配过地址)。
DHCP NAK
(服务器)server发送DHCP nak报文,通知client无法分配合适的IP地址,收到request报文后没有发现相应租约记录或者由于某些原因无法正常分配IP地址,则发送nak报文作为回应。
DHCP release
告知server用户不需要分配IP地址,让server释放被绑定的ip租约当用户不需要使用分配IP地址,就会向DHCP server发送DHCP release。
DHCP decline
client发送DHCP decline报文,告知server所分配的IP地址不可用DHCP client收到server回应的ack报文后,通过地址冲突检测发现server分配地址冲突由于
其他原因导致不能用。
在正式使用分配IP地址之前都要进行地址冲突检测。
DHCP inform
DHCP client向server请求获取更详细的配置信息,server根据租约进行查找,找到相应的配置信息。
发送DHCP ack报文回应client。
什么情况下会受到Request报文
- 正式请求
- 更新租约
- 重新登陆
基础DHCP配置命令
DHCP池配置
R1#configure t
R1#configure terminal
R1(config)#service dhcp
R1(config)#ip dhcp pool name
R1(dhcp-config)#network 192.168.1.0
R1(dhcp-config)#default-router 192.168.1.254
R1(dhcp-config)#dns 8.8.8.8
R1(dhcp-config)#end
DHCP中继配置
R2#configure terminal
R2(config)#interface f0/0
R2(config-if)#ip helper-address 10.10.10.1
R2(config-if)#end