我的所有 RHEL 7 服务器都面临着奇怪的情况。所有 RHEL 7 VM 均使用连接到提供 DHCP IP 的 VM 的配置工具进行配置,配置完成后,我们运行批处理脚本以使 NIC 静态并resolv.conf
使用有效值进行更新。
但我们可以看到它/usr/sbin/dhcpclient-script
正在用它的值更新resolv.conf
。
两个 NIC 的配置文件都有BOOTPROTO=static
、DNS1=x.x.x.x
、DNS2=x.x.x.x
和PEERDNS=no
其他必需的值。
我无法理解为什么resolv.conf
即使将 NIC 设置为静态后,用于配置的 DHCP 服务器也会进行修改。
答案1
创建一个/etc/dhcp/dhclient-enter-hooks
包含以下内容的文件:
#!/bin/sh
make_resolv_conf(){
:
}
使其可执行chmod +x /etc/dhcp/dhclient-enter-hooks
关于的解释man dhclient-script
挂钩
当它启动时,客户端脚本首先定义一个 shell 函数 ,
make_resolv_conf
该函数稍后用于创建/etc/resolv.conf
文件。要覆盖默认行为,请在 Enter 挂钩脚本中重新定义此函数。定义函数后
make_resolv_conf
,客户端脚本会检查是否存在可执行/etc/dhcp/dhclient-enter-hooks
脚本,如果存在,它会使用 Bourne shell '.' 调用内联脚本。命令。 OPERATION 下记录的整个环境可供此脚本使用,如果需要更改脚本的行为,它可以修改环境。
答案2
这个答案全部归功于@GAD3R。我系统上的目录结构鼓励我将文件放在 .d 目录中。这似乎是未来更易于维护的方式。我会将其编辑到 @GAD3R 的答案中,但我不知道这是否会受到欢迎,也许没有 .d 目录的系统仍然存在。我喜欢可以复制粘贴的解决方案:
sudo tee /etc/dhcp/dhclient-enter-hooks.d/unhand-resolv-conf <<EOF
#!/bin/sh
make_resolv_conf(){
:
}
EOF
sudo chmod +x /etc/dhcp/dhclient-enter-hooks.d/unhand-resolv-conf
答案3
您可能正在了解 resolvconf 默认情况下的工作方式。
如果您不想更改 /etc/resolv.conf,那么请安排运行以下命令。请务必安排它在重新启动时运行...
resolvconf --disable-updates