是否可以配置 ISC 的 DHCPD 来配置 resolv.conf 选项(例如超时和尝试次数)?

是否可以配置 ISC 的 DHCPD 来配置 resolv.conf 选项(例如超时和尝试次数)?

resolv.conf 支持名为 options 的行,允许对解析器的行为进行一些微调。在我的环境中,我们使用 ISC 的 DHCPD 为我们的服务提供 DHCP 服务。目前,我可以通过 DHCP 在 resolv.conf 中设置搜索和名称服务器字段,但我还希望能够创建以下行:

options timeout:2 attempts:4

有人知道这是否可能吗?

我目前设置了以下与解析器相关的 DHCPD 选项:

  option domain-search            "example.com";
  option domain-name-servers      192.168.1.1, 192.168.1.2, 192.168.1.3, 192.168.1.4;

在这种特殊情况下,系统都运行 CentOS 5/6。

答案1

目前没有可用的 DHCP 选项,因此您必须添加服务器和客户端的自定义配置为了支持这一点。

在服务器上(/etc/dhcp/dhcpd.conf),定义一个新选项并设置其值:

option resolv-options code 224 = text;
option resolv-options "timeout:2 attempts:4";

在客户端(/etc/dhcp/dhclient.conf)上,定义新选项并将其添加到要请求的选项列表中:

option resolv-options code 224 = text;
request ..., resolv-options;

然后在客户端添加一个钩子(/etc/dhcp/dhclient-enter-hooks.d/resolvoptions)来实际使用发送的值:

if [ "$new_resolv_options" ]; then
    echo "options $new_resolv_options" >> /etc/resolv.conf
fi

答案2

如果您无法访问 DHCP 服务器或不想更改服务器的配置,您可以使用 dh-client-exit-hooks 脚本在客户端上设置选项。如果您运行的是 Ubuntu,则可以将这样的脚本放在 /etc/dhcp3/dhclient-exit-hooks.d 中


cd /etc/dhcp3/dhclient-exit-hooks.d
sudo vim resolver-options

#
# Prepend resolver options to /etc/resolv.conf after dhclient`
# regenerates the file. See man (5) resolver for more details.
#
RESOLV_CONF=$(cat /etc/resolv.conf)
OPTIONS="options timeout:1"

echo -e "$OPTIONS\n$RESOLV_CONF" > /etc/resolv.conf

只需将您想要的选项添加到 $OPTIONS,用换行符 (\n) 分隔它们,脚本将在 dhclient 退出后运行,并将解析器选项添加到 /etc/resolv.conf。

相关内容