现在,我的 /etc/resolv.conf 看起来像这样:
# Generated by NetworkManager
nameserver 10.165.246.33
nameserver 192.135.82.60
nameserver 10.165.74.2
前两个名称服务器是通过 DHCP 自动配置的;最后一项是我在 NetworkManager 中手动添加的。它也是最重要的一个,因为它解析我们的内部域名(例如build-server-17.our-company-domain.com
)。
问题是,NetworkManager 将其添加到底部的/etc/resolv.conf
,因此当访问 Intranet URL 时,我的浏览器会尝试使用前两台服务器来解析它,这需要很长时间。
如何让 NetworkManager 添加手动配置的 DNS 服务器前自动配置的?
答案1
我不小心创建了一个重复的问题这里。答案就在那里,但本质上,您需要创建:
/etc/dhcp/dhclient.conf
如果它尚不存在,请添加:
prepend domain-name-servers [ip address of server];
不要忘记最后的分号!
之后,只需重新启动即可自动将“/etc/resolv.conf”中的“nameserver [服务器的 IP 地址]”行移动到顶部!
答案2
我不知道要具体解决哪个系统,但如果您正在使用,请尝试以 root 身份(或)resolvconf
执行以下操作:su -
sudo -i
echo 'nameserver 10.165.74.2' >> /etc/resolvconf/resolv.conf.d/head
resolvconf -u
该文件中有一条警告,指出手动更改将被覆盖;但是,在上下文中,该消息适用于/etc/resolv.conf
,而不是/etc/resolvconf/resolv.conf.d/head
。
这应该将所需的名称服务器放在列表中的第一位。当然,如果这适用于您的操作系统,则可以从 NetworkManager 中删除 10.165.74.2。
本地解析器dnsmasq
也是一个很好的前进路径。使用dnsmasq
,人们可以对 DNS 和 DHCP 进行更多控制。例如,在这种情况下,dnsmasq
可以使用其选项根据指定的域名查询特定的名称服务器server
。请参阅dnsmasq.conf
下面可能与您的目标相关的片段。
# Add other name servers here, with domain specs if they are for
# non-public domains.
server=/our-company-domain.com/10.165.74.2
更新
感谢您提到操作系统。在CentOS 7上,有很多方法。在 GUI 中,单击应用程序 > 系统工具 > 设置 > 网络。选择要配置的连接。
关闭自动 DNS 并提供名称服务器。应用配置。
下次 NetworkManager 启动该连接时,它会写入自定义值。 (测试时,我关闭网络然后再次打开,因为我有两个网络连接。)
根据文档,
- NetworkManager 提供了一个简单的基于 Curses 的文本用户界面 (TUI) nmtui。
- 提供了一个命令行工具 nmcli,允许用户和脚本与 NetworkManager 交互。请注意,nmcli 可用于无 GUI 系统(例如服务器)来控制 NetworkManager 的各个方面。它与 GUI 工具处于同等地位。
特别是,nmcli
文档看起来很好。
答案3
还有一种方法,不需要关闭NetworkManager.service。只需设置 ifcfg-idevice:
PEERDNS=no
DNS1=10.165.74.2
DNS2=OTHERDNS
DOMAIN=DEMO.COM
您不需要设置 /etc/NetworkManager/NetworkManager.conf 设置,例如:
[main]
dns=none