如何强制 NetworkManager 更新 /etc/resolv.conf?

如何强制 NetworkManager 更新 /etc/resolv.conf?

如果我使用 添加新的 DNS 服务器nmcli connection modify eth0 +ipv4.dns 8.8.8.8,我仍然需要更新/etc/resolv.conf解析器才能获取更改,对吗?那么如何强制更新?

我发现的唯一方法是重新启动网络服务:/etc/init.d/network restart。有没有侵入性较小的方法 ——nmcli或许是命令?

答案1

基于http://www.certdepot.net/rhel7-configure-ipv4-addresses/

nmcli connection up eth0 

在 mod 调用后运行,对我有用。

PS 您可以使用“nmcli -p connection show eth0”来查看已配置的设置与活动的设置

答案2

在接口配置文件中添加以下内容(/etc/sysconfig/network-scripts/ifcfg-ethX):

PEERDNS=yes
DNS1=1.2.3.4
DNS2=1.2.3.4
NM_CONTROLLED=yes

启动接口:

ifup ethX

答案3

如果 nmcli 不可用(例如,未安装 NetworkManager 时),还有另一种方法(在较旧的 Linux 6 发行版上很方便)可以从 /etc/resolv.conf 中随意添加和删除新设置,而无需重新启动网络,也无需手动编辑 /etc/resolv.conf 文件。步骤如下:

  1. 按照所述步骤创建虚拟网卡这里或有关创建虚拟 NIC 的任何其他参考(例如 ifcfg-eth0:0)。

    注意:我还在 ifcfg-eth0:0 文件中更改了 BOOTPROTO=none 和 NM_CONTROLLED=no。

  1. 将要应用到 /etc/resolv.conf 文件的任何设置添加到 /etc/sysconfig/network-scripts/ifcfg-eth0:0 文件。示例:

DNS1="8.8.8.8 7.7.7.7"

域名="urdomain1.com urdomain2.com"

  1. 只需运行以下命令,即可在 /etc/resolv.conf 中“打开”(添加)ifcfg-eth0:0 中的新设置:

sudo ifup ifcfg-eth0:0

可以通过运行以下命令“关闭”(删除)新设置:

sudo ifdown ifcfg-eth0:0

并且此方法应该适用于任何发行版,无论它是否具有 nmcli。这可以说是 Giomac 答案的变体,但它具有额外的优势,即可以启动和关闭此 VNIC 而不会影响任何东西,除了它会在两个(启动和关闭)方向上更新 /etc/resolv.conf。

答案4

  • 显示可用的设备进行配置:nmcli c s

    您将需要该列表的名称或 UUID。我们假设连接名称为eth0

  • 显示 eth0 的当前 IPv4 DNS 设置:nmcli c s eth0 | grep ipv4.dns:

  • 将 IPv4 DNS 设置设为 Google DNS 条目 8.8.8.8 和 8.8.4.4:sudo nmcli c m eth0 ipv4.dns "8.8.8.8 8.8.4.4"
  • 使用以下命令保存对系统文件(例如 /etc/resolv.conf 等)的更改:sudo nmcli c up eth0

奖金:

  • 通过 ssh 对远程服务器执行整个操作:ssh remote-server 'sudo nmcli c m eth0 ipv4.dns "8.8.8.8 8.8.4.4" && sudo nmcli c up eth0'

相关内容