我有一台设备,当没有可用的 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/dhcp/ 中的 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 服务器时。
答案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 的内容之前会起作用。
或者,您可以连接第二个网络接口卡用于该静态目的。