CentOS将/etc/resolv.conf
定期清除任何手动更改。在合理的时间内进行故障转移方面,Linux的默认设置很差(每次以相同的顺序查询名称服务器,5秒超时,两次重试)。
因此,您的第一个DNS resolv.conf
本质上是关键路径。如果失败,您可以等待10秒钟,然后再进行故障转移。
这些默认值是可调整的(请参见resolv.conf手册页),但是如何使任何更改在CentOS中成为永久性的并在重新启动后保持不变?
CentOS将/etc/resolv.conf
定期清除任何手动更改。在合理的时间内进行故障转移方面,Linux的默认设置很差(每次以相同的顺序查询名称服务器,5秒超时,两次重试)。
因此,您的第一个DNS resolv.conf
本质上是关键路径。如果失败,您可以等待10秒钟,然后再进行故障转移。
这些默认值是可调整的(请参见resolv.conf手册页),但是如何使任何更改在CentOS中成为永久性的并在重新启动后保持不变?
Answers:
答案可以在以下位置找到/sbin/dhclient-script
:
if [ -n "${RES_OPTIONS}" ]; then
echo "options ${RES_OPTIONS}" >> ${rscf}
fi
但是,在何处设置RES_OPTIONS
脚本来拾取脚本并不十分明显-可以在ifcfg-ethX
文件中设置诸如搜索域之类的内容,但在其他地方设置解析器选项。您实际上想要的文件/etc/sysconfig/network
。要设置相关选项,请在该文件中添加以下内容:
RES_OPTIONS="rotate timeout:1 retries:1"
这会将超时设置为1秒,使用一次重试,并告诉客户端根据请求旋转其解析器,而不是每次都依次浏览列表。
如果您想使更改立即生效,请发出service network restart
命令并检查/etc/resolv.conf
所有功能。这是我进行测试时的样子:
# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search example.com
options rotate timeout:1 retries:1
nameserver 10.1.1.2
nameserver 10.1.1.1
可接受的答案是在使用旧版网络脚本时。如果使用NetworkManager,则可能甚至没有/etc/sysconfig/network
,如果您这样做,则仍将不会用于NetworkManager管理的连接。
如果您使用NetworkManager:
要添加选项,请添加rotate
到bond0
:
nmcli con mod bond0 +ipv4.dns-options rotate
要删除该选项:
nmcli con mod bond0 -ipv4.dns-options rotate
本+
是好事,更改选项太多; NetworkManager足够聪明,可以检测到现有选项并进行更新。例如,更改超时值:
root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options: "rotate,timeout:5"
root@debian:~# nmcli con mod bond0 +ipv4.dns-options timeout:3
root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options: "rotate,timeout:3"
这意味着该值将被删除,甚至不再需要。要删除超时:
nmcli con mod bond0 -ipv4.dns-options timeout
它也可以使用超时值,但是该值将被忽略,因此删除timeout:5
也将删除任何其他超时值。
注意:在研究此问题时,我遇到了一个相关的错误,该错误已在network-manager v1.14.6,v1.15.2-dev和v1.16中修复。如果遇到任何问题,请首先检查您的网络管理器版本。
如果您需要使用平面文件而不是nmcli
命令(例如使用配置管理工具)来执行此操作,则Red Hat提供了另一种解决方案。
创建一个脚本/etc/NetworkManager/dispatcher.d/15-resolv
,将自定义复制/etc/resolv.conf
到适当位置。
#!/bin/bash
#
# Description : script to override default resolv.conf file
# with customized file.
cp -f /etc/resolv.conf.custom /etc/resolv.conf
重新启动NetworkManager后,将执行此脚本,并用您自己的脚本替换文件。
您可以告诉NetworkManager不要一起管理/etc/resolv.conf
文件。
创建
/etc/NetworkManager/conf.d/90-dns-none.conf
具有以下内容的文件:[main] dns=none
重新加载NetworkManager服务:
systemctl reload NetworkManager
该文档来自第二个解决方案,其中涉及替换/etc/resolv.conf
为文件的符号链接。
阅读以下内容:22.手动配置/etc/resolv.conf文件
上次使用新订阅的Linux VPS时,我遇到了同样的问题。我如何解决的是使用chattr + i命令使文件不可变。在对resolv.conf文件进行必要的更改之后,只需转到/ etc文件夹并运行此命令:
chattr + i resolv.conf
如果您想还原设置,请执行以下操作:
chattr -i resolv.conf
完整指南供您参考:http : //boxtutor.com/fix-etcresolv-conf-is-not-saving-after-server-reboot/