概念
动态主机配置协议v4(DHCPv4)可以动态的分配IPv4地址和其他网络配置信息。由于网络节点大多都是由桌面客户端(PC)构成,对于管理员来说,DHCPv4是一个非常有用和省时的工具。
客户端的租用时间由管理员确定。租用时间通常为24小时到一周时间或者更长。租期届满后,客户端必须申请另一个地址,但是通常是把同一个地址重新分配给客户端。
DHCPv4工作方式
DHCPv4工作在客户端/服务器模式下。当客户端向DHCPv4服务器通信时,服务器会将IPv4地址分配给该客户端,客户端使用租用的IPv4地址链接到网络,直到租期届满。客户端会定期联系DHCP服务器来续约租期。租期满后,该地址将返回到地址池,以便其他客户端使用。
获取租约步骤
客户端通过以下4个过程来租赁地址:
- DHCP发现(DHCPDISCOVER)
- DHCP 提供 (DHCPOFFER)
- DHCP 请求 (DHCPREQUEST)
- DHCP 确认 (DHCPACK)
一、DHCP发现(DHCPDISCOVER) 广播
客户端使用包含自己的MAC地址的广播DHCPDISCOVER消息,来寻找可用的DHCPv4服务器。
二、DHCP提供(DHCPOFFER)单播/广播
当DHCPv4服务器收到DHCPDISCOVER消息后,会保留一个可用的IPv4地址租赁给客户端。服务器还会建立一条ARP条目,包含请求客户端的MAC地址和租赁的IPv4地址。
三、DHCP 请求 (DHCPREQUEST) 广播
当客户端从服务器收到DHCPOFFER消息时,客户端会发DHCPREQUEST广播消息,该消息可以用来发起租用和续租。
发起租用时通知服务器接受提供的IPv4地址,同时拒绝其他提供IPv4地址的服务器。
四、DHCP确认(DHCPACK)单播
在收到DHCPREQUEST消息后,服务器会使用ICMP ping测试该地址是否有设备在使用,同时为客户端租用的该地址创建一条新的ARP条目,然后使用DHCPACK消息进行答复。客户端收到DHCPACK消息后将记录配置信息,同时执行DHCPACK中的ARP,如果没有ARP应答,则客户端知道这个地址时有效的,然后开始使用该地址。
续订租约
在租约到期之前,客户端会执行以下两个步骤,向DHCPv4服务器来续订租约
1. DHCP请求(DHCPREQUEST)
租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址。
2. DHCP确认(DHCPACK)
在接收到DHCPREQUEST消息后,服务器会返回一个DHCPACK消息来验证租用信息。
配置DHCPv4服务器
拓扑1
Router(config)#ip dhcp pool 1 创建地址池1
Router(dhcp-config)#network 10.10.10.0 255.255.255.0 定义地址池10.10.10.0/24网段
Router(dhcp-config)#default-router 10.10.10.1 定义默认路由器或者网关
Router(dhcp-config)#dns-server 8.8.8.8 定义DNS服务器
Router(config)#ip dhcp pool 2
Router(dhcp-config)#network 10.10.20.0 255.255.255.0 定义地址池10.10.20.0/24网段
Router(dhcp-config)#default-router 10.10.20.1
Router(dhcp-config)#dns-server 8.8.8.8
验证
PC1和PC2成功获取IP地址
Router#show ip dhcp binding 可以查看DHCP绑定的情况
拓扑2
路由器接口使用DHCP获取IP地址
R1(config)#interface g0/0/0
R1(config-if)#ip address dhcp
DHCPv4中继
由于DHCP服务器和客户端不在同一个网络中,且路由器也不会转发广播,因此必须配置 R1 把 DHCPv4 消息中继给 DHCPv4 服务器。
R1(config)#interface g0/0/1
R1(config-if)#ip helper-address 10.10.10.254
拓扑三
使用三层交换机为不同VLAN配置DHCP服务器
S1
创建VLAN
S1(config)#vlan 10
S1(config-vlan)#vlan 20
S1(config-vlan)#vlan 30
S1(config-vlan)#vlan 40
f0/1配置trunk模式
S1(config)#interface f0/1
S1(config-if)#switchport mode trunk
接口分配VLAN
S1(config)#interface range f0/2-6 进入接口f0/2-6
S1(config-if-range)#switchport mode access 设置access模式
S1(config-if-range)#switchport access vlan 10 分配VLAN10
S1(config-if-range)#exit
S1(config)#interface range f0/7-12
S1(config-if-range)#switchport mode access
S1(config-if-range)#switchport access vlan 20
S1(config-if-range)#exit
S1(config)#interface range f0/13-18
S1(config-if-range)#switchport mode access
S1(config-if-range)#switchport access vlan 30
S1(config-if-range)#exit
S1(config)#interface range f0/19-24
S1(config-if-range)#switchport mode access
S1(config-if-range)#switchport access vlan 40
MS1
创建VLAN
MS1(config)#vlan 10
MS1(config-vlan)#vlan 20
MS1(config-vlan)#vlan 30
MS1(config-vlan)#vlan 40
f0/1配置trunk模式
MS1(config)#interface f0/1
MS1(config-if)#switchport mode trunk
创建dhcp地址池
MS1(config)#ip dhcp pool vlan10
MS1(dhcp-config)#network 10.10.10.0 255.255.255.0
MS1(dhcp-config)#default-router 10.10.10.1
MS1(dhcp-config)#dns-server 8.8.8.8
MS1(dhcp-config)#exit
MS1(config)#ip dhcp pool vlan20
MS1(dhcp-config)#network 10.10.20.0 255.255.255.0
MS1(dhcp-config)#default-router 10.10.20.1
MS1(dhcp-config)#dns-server 8.8.8.8
MS1(dhcp-config)#exit
MS1(config)#ip dhcp pool vlan30
MS1(dhcp-config)#network 10.10.30.0 255.255.255.0
MS1(dhcp-config)#default-router 10.10.30.1
MS1(dhcp-config)#dns-server 8.8.8.8
MS1(dhcp-config)#exit
MS1(config)#ip dhcp pool vlan40
MS1(dhcp-config)#network 10.10.40.0 255.255.255.0
MS1(dhcp-config)#default-router 10.10.40.1
MS1(dhcp-config)#dns-server 8.8.8.8
配置交换机虚拟接口
MS1(config)#interface vlan 10
MS1(config-if)#ip address 10.10.10.1 255.255.255.0
MS1(config-if)#interface vlan 20
MS1(config-if)#ip address 10.10.20.1 255.255.255.0
MS1(config-if)#interface vlan 30
MS1(config-if)#ip address 10.10.30.1 255.255.255.0
MS1(config-if)#interface vlan 40
MS1(config-if)#ip address 10.10.40.1 255.255.255.0
MS1(config)#ip routing 启用VLAN间路由
验证
PC1获取到VLAN10的IP地址
PC2获取到VLAN20的IP地址
PC3获取到VLAN30的IP地址
PC4获取到VLAN40的IP地址