DHCP代表了动态IP地址分配的下一阶段。DHCP建立在BOOTP协议格式的基础上,专注于动态分配多种信息,以及为未来的扩展提供灵活的消息结构,并且无需预先定义每个客户端的MAC地址。DHCP提供的功能中还包括临时租用IP地址,这样做可以实现IP地址的回收、使用IP地址池,以及最新的动态客户端DNS(域名系统)FQDN(完全合格域名)注册
![](https://i-blog.csdnimg.cn/blog_migrate/c4c658b259fd9758778481aab0e383c8.png)
DHCP服务器通常部署在中心位置,远端路由器需要将LAN广播DHCP请求转发到DHCP服务器,要想实现转发,路由器需要将请求中的目的地址改成DHCP服务器的地址。这个特性称为DHCP中继代理。举例来说,在图中,如果Fred和Barney想使用DHCP,而DHCP服务器的IP地址是10.1.2.202,R1将会把Fred的DHCP请求中的目的地址从255.255.255.255改为10.1.2.202。R1还会把它自己的IP地址写在这个消息中,也就是写在网关IP地址(giaddr)字段中,以这种方式告诉DHCP服务器应该向哪里发送响应消息。在收到了服务器返回的下一个DHCP消息后,R1会把目的IP地址改为LAN广播,然后将数据包转发到客户端LAN。工程师需要在路由器上做出的唯一配置就是:在E1接口上配置接口命令iphelper-address 10.1.2.202。
此外,R1自己就可以被配置为一台DHCP服务器——在生产网络中并不常使用这个特性,但在CCIE笔试和实验考试中还是可以使用的。把路由器配置为DHCP服务器需要以下几个步骤。
步骤1 配置DHCP地址池。
步骤2 配置路由器将自己的IP地址排除在DHCP地址池之外。
步骤3 禁用DHCP冲突日志,或配置DHCP数据库代理。
DHCP地址池的配置中包括一些重要参数,比如子网(在DHCP地址池配置中使用network命令)、默认网关(default-router)、有效的DHCP租期(lease)。DHCP地址池中还可以配置一些其他可选参数,比如DNS域名和其他DHCP选项。
尽管在DHCP的配置中并不强制这样做,但这种做法显然是最佳做法所推荐的:配置路由器,使它不会将自己使用的DHCP地址池中的IP地址再通过DHCP服务分配出去。同时还要注意排除DHCP地址池范围中其他静态配置的IP地址,比如其他服务器和其他路由器所使用的IP地址。工程师可以使用命令ipdhcpexcluded-address,从DHCP进程中排除主机IP地址。
Cisco IOS DHCP服务器还提供了一个机制,在一台称为DHCP数据库代理的中心服务器上记录DHCP地址冲突。IOS要求工程师选做以下两件事之一:使用命令no ip dhcp cnofilict-logging禁用地址冲突日志记录,或者使用命令ip dhcp database配置一台服务器上的DHCP数据库代理。
下边是R1上的配置
来自E1的UDP广播将被以单播转发到10.1.2.202,源ip将被改为10.1.1.255,所以回复包将被广播回E1
![](https://i-blog.csdnimg.cn/blog_migrate/cdc1dd11b668c2b98449ee6192aeda7b.png)
下边是R1作为DHCP服务器的配置,R1分配ip地址除了子网中的第一个0-20段ip。通告客户端他们的ip地址,掩码,DNS,默认网关,租期为0天0小时20分
![](https://i-blog.csdnimg.cn/blog_migrate/a704627ff50b509ddfa89394b57d3f88.png)
下表为RARP,BOOTP和DHCP的比较
![](https://i-blog.csdnimg.cn/blog_migrate/995db9f75b5596ffc709387e8e6c1905.png)