
# 修改子网的DHCP租约时间如何立即生效？
#### 场景说明
当您修改了子网的DHCP租约时间，对于子网内的实例（比如ECS）来说，当实例下一次续租时，新的租约时间将会生效，实例续租分为自动更新租约和手动更新租约两种，续租不会改变实例当前的IP地址。
- 如果需要新的DHCP租约时间立即生效，则需要参考本文档手动更新租约。手动更新租约可能会导致业务中断，请评估后谨慎操作。
- 如果不需要新的DHCP租约时间立即生效，则可以等待实例自动更新租约。待实例当前租约剩余一半时会首次尝试续租，如果续租失败，则等待当前租约剩余八分之一时，二次尝试续租，此时如果续租失败，那么租约到期后，IP地址将会被释放。为了避免IP地址被释放，建议您尝试手动更新租约。
关于DHCP租约更新时间的详细信息，如[表1]所示。
 表1DHCP租约时间更新说明 
| 生效情况            | 更新方法   | 详细说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|
| DHCP租约时间会立即生效。  | 手动更新租约 | 手动触发实例续租，详细操作方法请参见[查看/更新DHCP租约到期时间（Windows系统）]或者[查看/更新DHCP租约到期时间（Linux系统）]。 如果业务允许，您也可以直接重启实例，重启后租约即会自动更新。 注意： 手动更新租约和自动更新租约不同，手动更新租约时，会先释放当前实例已有的IP地址，再重新获取IP地址，所以在获取到新的租约前实例会暂时失去IP地址，可能导致业务流量中断，请先评估影响。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| DHCP租约时间不会立即生效。 | 自动更新租约 | 等待实例自动续租，实例会根据情况，在DHCP租约到期前，触发续租。 - 首次续租：当原有租约时间剩余一半时，实例会启动首次自动续租。续租成功后，将会执行新的租约时间。续租失败时，则在DHCP租约到期前，尝试二次续租。  - 二次续租：当首次续租失败时，则在原有租约时间剩余八分之一时，实例会再次自动续租。续租成功后，将会执行新的租约时间。续租失败时，则在DHCP租约到期后，IP地址会被释放。   比如，ECS的DHCP租约时间为30天，到期时间为2024-01-30。若您在2024-01-02将DHCP租约时间修改为10天。 - 首次续租：当原租约时间剩余一半，即2024-01-15时，ECS会自动续租，续租成功后，新的租约将会在2024-01-25到期。当新的租约剩余一半时，即2024-01-20，ECS将会触发下一次续租。  - 二次续租：当2024-01-15续租失败时，则在原租约时间剩余八分之一，即2024-01-26时，ECS会自动续租，续租成功后，新的租约将会在2024-02-05到期。如果二次续租失败，则在2024-01-30会释放ECS的IP地址。   |
   
 #### 查看/更新DHCP租约到期时间（Windows系统）
1. 在控制台修改子网DHCP租约时间后，登录待刷新租约的云服务器。
2. 在搜索框中输入"cmd"，打开命令执行窗口。
3. 执行以下命令，查看云服务器当前DHCP租约的过期时间。 **ipconfig /all**
   ![](https://support.huaweicloud.com/vpc_faq/zh-cn_image_0177256434.png "点击放大")
   
4. 执行以下命令，更新DHCP租约。 **ipconfig /release \&\& ipconfig /renew**
   
5. 再次执行以下命令，查看新的DHCP租约过期时间。 **ipconfig /al** **l**
   
 
 #### 查看/更新DHCP租约到期时间（Linux系统）
1. 在控制台修改子网DHCP租约时间后，登录待刷新租约的云服务器。
2. 执行以下命令，确认提供DHCP服务的客户端为dhclient。
   **ps -ef \| grep dhclient**
   - 回显类似如下信息，表示存在dhclient对应进程，说明客户端是dhclient。其中**-lf** 参数后，类型为**lease** 的文件中存有租约信息。
     ```
     [root@ecs-A ~]# ps -ef | grep dhclient
     root       580   526  0 18:49 ?        00:00:00 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth0.pid -lf /var/lib/NetworkManager/dhclient-5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03-eth0.lease -cf /var/lib/NetworkManager/dhclient-eth0.conf eth0
     root      1512  1470  0 18:50 pts/0    00:00:00 grep --color=auto dhclient
     ```
     
   
   - 如果不存在dhclient进程，则本文档可能不适用，请您查找对应DHCP客户端的操作指令。
    
3. 执行以下命令，查看**[2]** 的**lease** 文件中当前DHCP租约信息。
   **cat** ***lease*** *文件* *名称*
   命令示例：
   **cat /var/lib/NetworkManager/dhclient-5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03-eth0.lease**
   回显类似如下信息，**lease** 文件中会保存历史DHCP租约信息，最后一个是最新的DHCP租约信息。
   ```
   [root@ecs-A ~]# cat /var/lib/NetworkManager/dhclient-5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03-eth0.lease
   lease {
     interface "eth0";
     fixed-address 172.16.0.54;
     option subnet-mask 255.255.255.0;
     option dhcp-lease-time 108000000;
     option routers 172.16.0.1;
     option dhcp-message-type 5;
     option dhcp-server-identifier 172.16.0.254;
     option domain-name-servers 100.125.1.250,100.125.64.250;
     option interface-mtu 1500;
     option dhcp-renewal-time 54000000;
     option dhcp-rebinding-time 94500000;
     option rfc3442-classless-static-routes 0,172,16,0,1,32,169,254,169,254,172,16,0,1;
     option broadcast-address 172.16.0.255;
     option host-name "host-172-16-0-54";
     option domain-name "openstacklocal";
     renew 3 2025/06/18 21:46:42;
     rebind 3 2027/01/20 04:46:44;
     expire 5 2027/06/25 10:46:44;
   }
   lease {
     interface "eth0";
     fixed-address 172.16.0.54;
     option subnet-mask 255.255.255.0;
     option routers 172.16.0.1;
     option dhcp-lease-time 108000000;
     option dhcp-message-type 5;
     option domain-name-servers 100.125.1.250,100.125.64.250;
     option dhcp-server-identifier 172.16.0.254;
     option interface-mtu 1500;
     option dhcp-renewal-time 54000000;
     option broadcast-address 172.16.0.255;
     option rfc3442-classless-static-routes 0,172,16,0,1,32,169,254,169,254,172,16,0,1;
     option dhcp-rebinding-time 94500000;
     option host-name "host-172-16-0-54";
     option domain-name "openstacklocal";
     renew 3 2025/08/20 23:57:15;
     rebind 3 2027/01/20 04:50:00;
     expire 5 2027/06/25 10:50:00;
   }
   ```
   
4. 执行以下命令，释放当前云服务器的IP地址。 **dhclient -r**
   
5. 执行以下命令，获取新的DHCP租约。 **killall dhclient \&\& systemctl restart NetworkManager**
   
6. 执行以下命令，查看**[2]** 的**lease** 文件中最新的DHCP租约信息。
   **cat** ***lease*** *文件* *名称*
   命令示例：
   **cat /var/lib/NetworkManager/dhclient-5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03-eth0.lease**
   回显类似如下信息，**lease** 文件中会保存历史DHCP租约信息，最后一个是更新后的DHCP租约信息。
   ```
   [root@ecs-A ~]# cat /var/lib/NetworkManager/dhclient-5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03-eth0.lease
   lease {
     interface "eth0";
     fixed-address 172.16.0.54;
     option subnet-mask 255.255.255.0;
     option dhcp-lease-time 108000000;
     option routers 172.16.0.1;
     option dhcp-message-type 5;
     option dhcp-server-identifier 172.16.0.254;
     option domain-name-servers 100.125.1.250,100.125.64.250;
     option interface-mtu 1500;
     option dhcp-renewal-time 54000000;
     option dhcp-rebinding-time 94500000;
     option rfc3442-classless-static-routes 0,172,16,0,1,32,169,254,169,254,172,16,0,1;
     option broadcast-address 172.16.0.255;
     option host-name "host-172-16-0-54";
     option domain-name "openstacklocal";
     renew 3 2025/08/20 23:57:15;
     rebind 3 2027/01/20 04:50:00;
     expire 5 2027/06/25 10:50:00;
   }
   lease {
     interface "eth0";
     fixed-address 172.16.0.54;
     option subnet-mask 255.255.255.0;
     option routers 172.16.0.1;
     option dhcp-lease-time 108000000;
     option dhcp-message-type 5;
     option domain-name-servers 100.125.1.250,100.125.64.250;
     option dhcp-server-identifier 172.16.0.254;
     option interface-mtu 1500;
     option dhcp-renewal-time 54000000;
     option broadcast-address 172.16.0.255;
     option rfc3442-classless-static-routes 0,172,16,0,1,32,169,254,169,254,172,16,0,1;
     option dhcp-rebinding-time 94500000;
     option host-name "host-172-16-0-54";
     option domain-name "openstacklocal";
     renew 4 2025/07/03 00:34:04;
     rebind 3 2027/01/20 04:52:43;
     expire 5 2027/06/25 10:52:43;
   }Sub-eni
   ```
   
 
