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

New*_*ser 12 centos networkmanager

现在,我的 /etc/resolv.conf 看起来像这样:

# Generated by NetworkManager
nameserver 10.165.246.33
nameserver 192.135.82.60
nameserver 10.165.74.2
Run Code Online (Sandbox Code Playgroud)

前两个名称服务器是通过 DHCP 自动配置的;最后一个是我在 NetworkManager 中手动添加的。它也是最重要的一个,因为它解析我们的内部域名(例如build-server-17.our-company-domain.com)。

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

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

alf*_*ema 13

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

/etc/dhcp/dhclient.conf
Run Code Online (Sandbox Code Playgroud)

如果它不存在,并添加:

prepend domain-name-servers [ip address of server];
Run Code Online (Sandbox Code Playgroud)

不要忘记最后的分号!

之后,只需自动重新启动即可将“/etc/resolv.conf”中的“nameserver [ip address of server]”行移至顶部!


Chr*_*her 3

我不知道要具体解决哪个系统,但如果您正在使用,请尝试以 root 身份(或)resolvconf执行以下操作:su -sudo -i

echo 'nameserver 10.165.74.2' >> /etc/resolvconf/resolv.conf.d/head
resolvconf -u
Run Code Online (Sandbox Code Playgroud)

该文件中有一条警告,指出手动更改将被覆盖;但是,在上下文中,该消息适用于/etc/resolv.conf,而不是/etc/resolvconf/resolv.conf.d/head

这应该将所需的名称服务器放在列表中的第一位。当然,如果这适用于您的操作系统,则可以从 NetworkManager 中删除 10.165.74.2。

本地解析器dnsmasq也是一个很好的前进路径。使用dnsmasq,人们可以对 DNS 和 DHCP 进行更多控制。例如,在这种情况下,dnsmasq可以使用其选项根据指定的域名查询特定的名称服务器serverdnsmasq.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
Run Code Online (Sandbox Code Playgroud)

更新

感谢您提到操作系统。在CentOS 7上,有很多方法。在 GUI 中,单击应用程序 > 系统工具 > 设置 > 网络。选择要配置的连接。

CentOS 7 NetworkManager - 配置连接

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

CentOS 7 NetworkManager - 应用静态 DNS 设置

下次 NetworkManager 启动该连接时,它会写入自定义值。(测试时,我关闭网络然后再次打开,因为我有两个网络连接。)

根据文件

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

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