如果我使用 添加新的 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 文件。步骤如下:
按照所述步骤创建虚拟网卡这里或有关创建虚拟 NIC 的任何其他参考(例如 ifcfg-eth0:0)。
注意:我还在 ifcfg-eth0:0 文件中更改了 BOOTPROTO=none 和 NM_CONTROLLED=no。
- 将要应用到 /etc/resolv.conf 文件的任何设置添加到 /etc/sysconfig/network-scripts/ifcfg-eth0:0 文件。示例:
DNS1="8.8.8.8 7.7.7.7"
域名="urdomain1.com urdomain2.com"
- 只需运行以下命令,即可在 /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'