当没有 dhcp 服务器应答时,如何强制 dhclient 使用 dhclient.conf 中的静态租约而不是之前的 dhcp 租约?

当没有 dhcp 服务器应答时,如何强制 dhclient 使用 dhclient.conf 中的静态租约而不是之前的 dhcp 租约?

我有一台设备,当没有可用的 dhcp 服务器时,我希望默认使用特定的 IP 地址。

我在 /etc/dhcp/dhclient.conf 中设置了以下静态租约:

timeout 30;

lease {
  interface "eth0";
  fixed-address 192.168.1.254;
  option subnet-mask 255.255.255.0;
  option routers 127.0.0.1;
  expire never;
}

它可以工作,但是只有当 /var/lib/dh​​cp/ 中的 dhclient.eth0.leases 和 dhclient.leases 为空时,eth0 才会获取此 IP。

除非你们有充分的理由反对它,否则我更愿意在 dhcp 服务器不回复时分配来自 dhclient.conf 的静态租约,而不是使用旧租约。这将使故障排除过程变得更容易,并允许通过某种方式到达只能通过 ssh 访问且没有显示打印当前 IP 的设备。

我通读了 dhclient 手册和大量谷歌搜索结果,但找不到内置方式或任何有关如何执行此操作的建议。

我想到的解决方案:

1-清空 dhclient.leases 并设置权限,使其无法被修改
2-将 dhclient.leases 链接到 /dev/null 并设置权限,使其无法被修改
3-与 #1 相同,但不设置静态dhclient.conf中的lease,在设置权限之前手动将其添加到dhclient.leases中。

答案1

然后是 AVAHI,其主要目的是在其他方法都失败时分配 IP 地址。

AVAHI 应该分发一个不切实际的 169.254.xx 地址。

RFC 5735 将 169.254.0.0/16 指定为“链路本地”块,如 RFC3927 中所述。这是主机自动配置使用的地址范围,例如当找不到 DHCP 服务器时。

https://help.ubuntu.com/community/HowToZeroconf

答案2

我创建了 '/etc/sysconfig/network-scripts/ifcfg-eth0:0' :

DEVICE=eth0:0
BOOTPROTO=none
ONBOOT=yes
NETWORK=192.168.222.0
NETMASK=255.255.255.0
IPADDR=192.168.222.22
USERCTL=no

这只是使用别名将第二个静态 IP 绑定到 NIC。不是我真正想要的,但在我弄清楚 dhclient.conf 的内容之前会起作用。

或者,您可以连接第二个网络接口卡用于该静态目的。

相关内容