1.3. 配置 DHCP 客户端行为
DHCP 客户端在每次连接到网络时都从 DHCP 服务器请求动态 IP 地址和对应配置信息。
请注意,NetworkManager 默认调用
DHCP
客户端,dhclient。
请求 IP 地址
当
DHCP
连接启动时,dhcp 客户端会从 DHCP
服务器请求 IP 地址。默认情况下,dhcp 客户端等待此请求完成的时间为 60 秒。您可以使用 nmcli 工具或 /etc/sysconfig/network -scripts/ifcfg-ifname文件中的 IPV4_DHCP_TIMEOUT
选项来配置ipv4.dhcp-
timeout
属性。例如,使用 nmcli:
~]# nmcli connection modify enp1s0 ipv4.dhcp-timeout 10
如果在这个间隔内无法获取地址,则 IPv4 配置会失败。整个连接也可能失败,这取决于 ipv4.may-fail
属性:
- If
ipv4.may-fail
被设置为yes
(默认),连接的状态取决于 IPv6 配置:- 如果启用了 IPv6 配置并成功,连接将被激活,但无法再次重试 IPv4 配置。
- 如果禁用或未配置 IPv6 配置,连接会失败。
- If
ipv4.may-fail
设置为没有
停用连接。在这种情况下:- 如果启用了
连接的 autoconnect
属性,NetworkManager 会重试以激活连接次数,次数与autoconnect-retries
属性中设置的次数相同。默认值为 4。 - 如果连接仍然无法获得 dhcp 地址,则自动激活会失败。请注意,5 分钟后,自动连接过程将再次启动,dhcp 客户端会尝试从 dhcp 服务器获取地址。
请求租用续订
当 dhcp 地址被获取并且 IP 地址租期无法续订时,dhcp 客户端每 2 分钟重启三次,以尝试从 dhcp 服务器获得租用。每次都配置它,方法是将
ipv4.dhcp-timeout
属性设置为秒(默认为 60)以获取租用。如果在尝试过程中收到回复,则进程将停止,并且您的租期续订。
三次尝试失败后:
- If
ipv4.may-fail
设置为yes
(默认)和 IPv6 配置成功,连接将被激活,dhcp 客户端每 2 分钟重新重新启动一次。 - If
ipv4.may-fail
设置为no
,则连接将被停用。在这种情况下,如果连接启用了autoconnect
属性,则从头激活连接。
1.3.1. 使 DHCPv4 持久
要使 DHCPv4 在启动和租期续订过程中持久化,请将
ipv4.dhcp-timeout
属性设置为 32 位整数(MAXINT32)的最大值,即 2147483647
或 infinity
值:
~]$ nmcli connection modify enps1s0 ipv4.dhcp-timeout infinity
因此,NetworkManager 永远不会停止尝试从 DHCP 服务器获取或续订租期,直到成功为止。
要确保仅在租期续订过程中有 DHCP 持久性行为,您可以在 /etc/sysconfig/network-scripts/ifcfg-
enp1s0 配置文件中使用 nmcli 手动将静态 IP 添加到 /etc/sysconfig/network-scripts/ifcfg- enp1s0
配置文件中的 IPADDR
属性中:
~]$ nmcli connection modify enp1s0 ipv4.address 192.168.122.88/24
当 IP 地址租用到期时,静态 IP 会保留已配置或部分配置的 IP 状态(您可以拥有 IP 地址,但您未连接到互联网),确保 dhcp 客户端每 2 分钟重新启动一次。