如何使NetworkManager在/etc/resolv.conf的顶部添加DNS服务器?


11

现在,我的/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)。

麻烦的是,网络管理器将其添加到/etc/resolv.conf,访问内部网URL所以当我的浏览器尝试使用前两种服务器解决它,它需要年龄。

如何使NetworkManager 在自动配置的DNS服务器之前添加手动配置的DNS服务器?


1
通常,您的resolv.conf中的所有DNS服务器都应返回相同的结果。混合服务器的情况会导致间歇性故障和很多痛苦。
菲利普·肯德尔

Answers:


3

我看不到具体要解决的系统,但是如果您使用的是resolvconf,请尝试以root(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中,单击应用程序>系统工具>设置>网络。选择要配置的连接。

CentOS 7 NetworkManager-配置连接

关闭自动DNS和供应名称服务器。应用配置。

CentOS 7 NetworkManager-应用静态DNS设置

下次NetworkManager启动该连接时,它将写入自定义值。(在进行测试时,因为有两个网络连接,所以我先关闭了网络,然后又重新打开了。)

根据文档

  1. 提供了用于NetworkManager nmtui的简单的基于curses的文本用户界面(TUI)。
  2. 提供了命令行工具nmcli,以允许用户和脚本与NetworkManager进行交互。请注意,nmcli可以在无GUI的系统(例如服务器)上使用,以控制NetworkManager的所有方面。它与GUI工具处于同等地位。

特别地,nmcli 文档看起来非常好。


1
抱歉,它是CentOS,没有resolvconf软件包。dnsmasq不过,这似乎是一个不错的解决方案。
新手Linux用户

8

我不小心在这里提出了一个重复的问题。答案在那里,但是从本质上讲,您需要创建:

/etc/dhcp/dhclient.conf

如果尚不存在,请添加:

prepend domain-name-servers [ip address of server];

不要忘记最后的分号!

之后,只需重新引导就自动将'/etc/resolv.conf'中的'nameserver [服务器的IP地址]'行移到顶部!


棒极了!那是NetworkManager所使用的后端,并且是使此功能可用于所有wifi连接(非静态)的唯一方法。谢谢 !
Adrien M.

0

还有另一种方法,无需关闭NetworkManager.service。只需设置ifcfg-idevice:

PEERDNS=no
DNS1=10.165.74.2
DNS2=OTHERDNS
DOMAIN=DEMO.COM

您不需要设置/etc/NetworkManager/NetworkManager.conf设置,例如:

[main]
dns=none
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.