如何在 CentOS 上配置 dhclient 从特定 DHCP 服务器获取 IP

如何在 CentOS 上配置 dhclient 从特定 DHCP 服务器获取 IP

我遇到过一种情况,我能够在子网上启动 CentOS 6.6 映像,以便 VM 实例从子网的虚拟网关获取其 IP 地址。现在这个网关出了问题,我无权修复它,所以我在这个子网上设置了自己的 DHCP 服务器。

因此,现在此子网上有 2 个 DHCP 服务器,我的虚拟机获取随机 IP 地址,有时来自一个 DHCP 服务器,有时来自另一个 DHCP 服务器。我的问题是,如何在虚拟机上配置 dhcp 客户端,以便它们只向我的 DHCP 服务器而不是故障的服务器发出 DHCP 请求?这man dhcp.conf并没有多大帮助。

答案1

在 CentOS 7 上,可以通过创建文件/etc/dhcp/dhclient.conf并添加如下行来实现

reject 192.168.56.0/24;

拒绝来自一个服务器或另一个服务器(或在此示例中,来自特定子网上的所有 DHCP 服务器)的 DHCP 提供。

要仅在特定接口上过滤 DHCP 提供,请将reject指令放在块内interface

interface "eth0" {
    reject 192.168.56.0/24;
}

请注意,接口名称(此处为eth0)必须放在引号中,这与手册页中显示的示例不同dhclient.conf

在所有情况下,systemctl restart network.service以超级用户身份运行才能使更改生效。


然而,在 CentOS 6.7 上,同样的说明也有效

  • reject每个接口使用一个单独的 dhclient 配置文件。在上面的例子中,要添加规则的文件将是/etc/dhcp/dhclient-eth0.conf(显然不需要使用interface块)。
  • 重新初始化系统网络接口的命令是service network restart,该命令必须再次以超级用户的身份调用。

答案2

DHCP 通过多播请求 IP 地址来工作。它会从第一个响应的 DHCP 服务器获取 IP 地址。据我所知,没有办法强制客户端从特定服务器获取 DHCP 地址。

事实上,运行两个彼此不了解的 DHCP 服务器会导致您遇到此类麻烦。您需要关闭或修复故障的服务器。

相关内容