我遇到过一种情况,我能够在子网上启动 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 服务器会导致您遇到此类麻烦。您需要关闭或修复故障的服务器。