如何覆盖虚拟机 DNS 服务器?

alk*_*ary 4 linux virtual-machine dns networkmanager network-interface

我正在运行 CentOS 7 虚拟机,我相信它通过 DHCP 从我的 Fedora 27 系统获取 DNS 名称服务器。我正在尝试将 DNS 名称服务器更改/etc/resolv.conf为 google 名称服务器。在我的 Fedora 27 上情况有所不同,当我这样做时,systemctl restart network它会返回到 Fedora 27 上的相同名称服务器。

有没有办法覆盖它?

我相信我必须做点什么/etc/sysconfig/network-scripts/

我通过enp0s3虚拟机上的以太网连接,当然桥接virbr0

Abh*_*ose 5

VM 的网络接口配置为dhcp仅接受来自的 DNS。更改界面设置。

网络接口配置文件位于/etc/sysconfig/network-scripts/.

假设它是一个 kvm vps,网络接口是 eth0。编辑该文件/etc/sysconfig/network-scripts/ifconfig-eth0并为 Google 的 IPv4 名称服务器添加以下内容

PEERDNS=no
DNS1=8.8.8.8
DNS2=8.8.4.4
Run Code Online (Sandbox Code Playgroud)

然后重启网络如下

sudo service network restart
Run Code Online (Sandbox Code Playgroud)

您可以使用任何其他名称服务器。

上述名称服务器将被添加resolve.conf,并且PEERDNS=no指令将停止dhcp更改名称服务器。

另一种解决方法是使resolv.confroot 只读,如下所示

chattr +i /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

如果您想编辑文件,请chattr -i /etc/resolv.conf在编辑前使用。

PS PEERDNS=no仅适用于基于 RHEL 的系统,包括 RHEL、CentOS 和 Fedora。