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。