DHCP应用场景
DHCP服务器能够为大量主机分配IP地址,并能够集中管理。
在大型企业网络中,一般会有大量的主机等终端设备。每个终端都需要配置IP地址等网络参数才能接入网络。在小型网络中,终端数量很少,可以手动配置IP地址。但是在大中型网络中,终端数量很多,手动配置IP地址工作量大,而且配置时容易导致IP地址冲突等错误。
DHCP可以为网络终端动态分配IP地址,解决了手工配置IP地址时的各种问题。
DHCP报文类型
报文类型 | 含义 |
---|---|
DHCP DISCOVER | 客户端用来寻找DHCP服务器。 |
DHCP OFFER | DHCP服务器用来响应DHCP DISCOVER报文,此报文携带了各种配置信息。 |
DHCP REQUEST | 客户端请求配置确认,或者续借租期。 |
DHCP ACK | 服务器对REQUEST报文的确认响应。 |
DHCP NAK | 服务器对REQUEST报文的拒绝响应。 |
DHCP RELEASE | 客户端要释放地址时用来通知服务器。 |
- DHCP客户端初次接入网络时,会发送DHCP发现报文(DHCP Discover),用于查找和定位DHCP服务器。
- DHCP服务器在收到DHCP发现报文后,发送DHCP提供报文(DHCP Offer),此报文中包含IP地址等配置信息。
- 在DHCP客户端收到服务器发送的DHCP提供报文后,会发送DHCP请求报文(DHCP Request),另外在DHCP客户端获取IP地址并重启后,同样也会发送DHCP请求报文,用于确认分配的IP地址等配置信息。DHCP客户端获取的IP地址租期快要到期时,也发送DHCP请求报文向服务器申请延长IP地址租期。
- 收到DHCP客户端发送的DHCP请求报文后,DHCP服务器会回复DHCP确认报文(DHCP ACK)。客户端收到DHCP确认报文后,会将获取的IP地址等信息进行配置和使用。
- 如果DHCP服务器收到DHCP-REQUEST报文后,没有找到相应的租约记录,则发送DHCP-NAK报文作为应答,告知DHCP客户端无法分配合适IP地址。
- DHCP客户端通过发送DHCP释放报文(DHCP Release)来释放IP地址。收到DHCP释放报文后,DHCP服务器可以把该IP地址分配给其他DHCP客户端。
DHCP工作原理
为了获取IP地址等配置信息,DHCP客户端需要和DHCP服务器进行报文交互。
1、主机A以广播方式发送DISCOVER包到网络中
使用0.0.0.0的地址作为源地址,使用UDP68端口作为源端口,使用255.255.255.255作为目标地址,使用UDP67端口作为目的端口来广播请求IP地址信息
2、DHCP服务器收到广播包后回应主机A,在回应包中包含了DHCP客户机的MAC地址;DHCP服务器提供的合法IP地址;子网掩码;默认网关(路由);租约的期限;DHCP服务器的IP地址。
DHCP服务器使用自己的IP地址作为源地址,使用UDP67端口作为源端口,使用255.255.255.255作为目标地址,使用UDP68端口作为目的端口来广播DHCP OFFER信息
3、DHCP客户机从接收到的第一个DHCPOFFER消息中选择IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能提供给另一个DHCP客户机。当客户机从第一个DHCP服务器接收DHCPOFFER并选择IP地址后,DHCP租约的第三过程发生。客户机将DHCPREQUEST消息广播到所有的DHCP服务器,表明它接受提供的内容。DHCPREQUEST消息包括为该客户机提供IP配置的服务器的服务标识符(IP地址)。DHCP服务器查看服务器标识符字段,以确定它自己是否被选择为指定的客户机提供IP地址,如果那些DHCPOFFER被拒绝,则DHCP服务器会取消提供并保留其IP地址以用于下一个IP租约请求。
客户机仍然使用0.0.0.0的地址作为源地址,使用UDP68端口作为源端口,使用255.255.255.255作为目标地址,使用UDP67端口作为目的端口来广播DHCP REQUEST信息
4、DHCP服务器接收到DHCPREQUEST消息后,以DHCPACK消息的形式向客户机广播成功的确认,该消息包含有IP地址的有效租约和其他可能配置的信息。虽然服务器确认了客户机的租约请求,但是客户机还没有收到服务器的DHCPACK消息
服务器仍然使用自己的IP地址作为源地址,使用UDP67端口作为源端口,使用255.255.255.255作为目标地址,使用UDP68端口作为目的端口来广播DHCP ACK信息
如果DHCPREQUEST不成功,例如客户机试图租约先前的IP地址,但该IP地址不再可用,或者因为客户机移到其他子网,该IP无效时,DHCP服务器将广播否定确认消息DHCPNAK。当客户机接收到不成功的确认时,它将重新开始DHCP租约过程。
DHCP租期更新
IP租约期限到达50%时,DHCP客户端会请求更新IP地址租约。
申请到IP地址后,DHCP客户端中会保存三个定时器,分别用来控制租期更新,租期重绑定和租期失效。DHCP服务器为DHCP客户端分配IP地址时会指定三个定时器的值。如果DHCP服务器没有指定定时器的值,DHCP客户端会使用缺省值,缺省租期为1天。默认情况下,还剩下50%的租期时,DHCP客户端开始租约更新过程,DHCP客户端向分配IP地址的服务器发送DHCP请求报文来申请延长IP地址的租期。DHCP服务器向客户端发送DHCP确认报文,给予DHCP客户端一个新的租期。
DHCP重绑定
DHCP客户端在租约期限到达87.5%时,还没收到服务器响应,会申请重绑定IP。
DHCP客户端发送DHCP请求报文续租时,如果DHCP客户端没有收到DHCP服务器的DHCP应答报文。默认情况下,重绑定定时器在租期剩余12.5%的时候超时,超时后,DHCP客户端会认为原DHCP服务器不可用,开始重新发送DHCP请求报文。网络上任何一台DHCP服务器都可以应答DHCP确认或DHCP非确认报文。
如果收到DHCP确认报文,DHCP客户端重新进入绑定状态,复位租期更新定时器和重绑定定时器。如果收到DHCP非确认报文,DHCP客户端进入初始化状态。此时,DHCP客户端必须立刻停止使用现有IP地址,重新申请IP地址。
IP地址释放
如果IP租约到期前都没有收到服务器响应,客户端停止使用此IP地址。
如果DHCP客户端不再使用分配的IP地址,也可以主动向DHCP服务器发送DHCP RELEASE 报文,释放该IP地址。
租期定时器是地址失效进程中的最后一个定时器,超时时间为IP地址的租期时间。如果DHCP客户端在租期失效定时器超时前没有收到服务器的任何回应,DHCP客户端必须立刻停止使用现有IP地址,发送DHCP Release报文,并进入初始化状态。然后,DHCP客户端重新发送DHCP发现报文,申请IP地址。
DHCP接口地址池配置
[Huawei]dhcp enable
[Huawei]interface GigabitEthernet0/0/0
[Huawei-GigabitEthernet0/0/0]dhcp select interface
[Huawei-GigabitEthernet0/0/0]dhcp server dns-list 10.1.1.2
[Huawei-GigabitEthernet0/0/0]dhcp server excluded-ip-address 10.1.1.2
[Huawei-GigabitEthernet0/0/0]dhcp server lease day 3
DHCP支持配置两种地址池,包括全局地址池和接口地址池。
dhcp enable命令用来使能DHCP功能。在配置DHCP服务器时,必须先执行dhcp enable命令,才能配置DHCP的其他功能并生效。
dhcp select interface命令用来关联接口和接口地址池,为连接到接口的主机提供配置信息。在本示例中,接口GigabitEthernet 0/0/0被加入接口地址池中。
dhcp server dns-list命令用来指定接口地址池下的DNS服务器地址。
dhcp server excluded-ip-address命令用来配置接口地址池中不参与自动分配的IP地址范围。
dhcp server lease命令用来配置DHCP服务器接口地址池中IP地址的租用有效期限功能。缺省情况下,接口地址池中IP地址的租用有效期限为1天。
DHCP全局地址池配置
[Huawei]dhcp enable
[Huawei]ip pool pool2
Info: It's successful to create an IP address pool.
[Huawei-ip-pool-pool2]network 1.1.1.0 mask 24
[Huawei-ip-pool-pool2]gateway-list 1.1.1.1
[Huawei-ip-pool-pool2]lease day 10
[Huawei-ip-pool-pool2]quit
[Huawei]interface GigabitEthernet0/0/1
[Huawei-GigabitEthernet0/0/1]dhcp select global
ip pool命令用来创建全局地址池。
network命令用来配置全局地址池下可分配的网段地址。
gateway-list命令用来配置DHCP服务器全局地址池的出口网关地址。
lease命令用来配置DHCP全局地址池下的地址租期。缺省情况下,IP地址租期是1天。
dhcp select global命令用来使能接口的DHCP服务器功能。
display ip pool命令可以查看全局IP地址池信息。管理员可以查看地址池的网关、子网掩码、IP地址统计信息等内容,监控地址池的使用情况,了解已分配的IP地址数量,以及其他使用统计信息。