文档首页/ 虚拟私有云 VPC/ 常见问题/ 虚拟私有云与子网类/ 修改子网的DHCP租约时间如何立即生效?
更新时间:2024-10-15 GMT+08:00

修改子网的DHCP租约时间如何立即生效?

场景说明

当您修改了子网的DHCP租约时间,对于子网内的实例(比如ECS)来说,当实例下一次续租时,新的租约时间将会生效,实例续租分为自动更新租约和手动更新租约两种,续租不会改变实例当前的IP地址。

  • 如果需要新的DHCP租约时间立即生效,则需要参考本文档手动更新租约。手动更新租约可能会导致业务中断,请评估后谨慎操作。
  • 如果不需要新的DHCP租约时间立即生效,则可以等待实例自动更新租约。待实例当前租约剩余一半时会首次尝试续租,如果续租失败,则等待当前租约剩余八分之一时,二次尝试续租,此时如果续租失败,那么租约到期后,IP地址将会被释放。为了避免IP地址被释放,建议您尝试手动更新租约。

关于DHCP租约更新时间的详细信息,如表1所示。

表1 DHCP租约时间更新说明

生效情况

更新方法

详细说明

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

  4. 执行以下命令,更新DHCP租约。

    ipconfig /release && ipconfig /renew

  5. 再次执行以下命令,查看新的DHCP租约过期时间。

    ipconfig /all

查看/更新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. 执行以下命令,查看2lease文件中当前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. 执行以下命令,查看2lease文件中最新的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