在Linux中的resolv.conf上进行永久DNS更改

遵循本指南,以学习如何在Linux中的resolv.conf上进行DNS永久更改。

据人 resolv.conf,resolv.conf是解析器配置文件。解析程序是C库中的一组例程,这些例程提供对Internet域名系统(DNS)的访问。解析器配置文件包含由解析器例程在它们第一次被进程调用时读取的信息。该文件被设计为易于阅读,并包含具有值的关键字列表,这些值提供了各种类型的解析程序信息。该配置文件被认为是DNS信息的受信任源(例如,将从该源返回的DNSSEC AD位信息将保持不变)。

如果此文件不存在,则仅查询本地计算机上的名称服务器,并且搜索列表包含根据主机名确定的本地域名。

在Linux中的resolv.conf上进行永久DNS更改

手动对 /etc/resolv.conf 网络或系统重新启动后,配置文件必然会被覆盖。

根据文件中的注释,文件是动态的。 ”请勿手动编辑此文件-您的更改将被覆盖”。

例如,如果要在Linux机器上添加DNS服务器,通常可以通过指定解析器应查询的名称服务器的IP地址来更新此文件。参见下面的命令, which updates the resolv.conf file with the public primary DNS server for Google DNS,通过运行类似的命令;

echo "nameserver 8.8.8.8" > /etc/resolv.conf

如果您进行了任何更改(例如重新引导系统),或运行 dhclient 命令上面添加的行,将消失。

那么,如何在Linux中的resolv.conf上进行永久DNS更改?

好的,有很多方法可以使您在Linux中的resolv.conf上进行永久的DNS更改。

  1. 使用Resolvconf框架
  2. 在界面设置上设置名称服务器IP地址
  3. 更新dhclient.conf上的DNS服务器设置

使用Resolvconf框架

Resolvconf是一个框架,用于使系统有关名称服务器的信息保持最新。它将自身设置为提供此信息的程序(例如ifup和ifdown,DHCP客户端,PPP守护程序和本地名称服务器)与使用此信息的程序(例如DNS缓存和解析程序库)之间的中介。

在Ubuntu / Debian发行版上,您可以通过运行以下命令来安装resolvconf框架。

sudo apt install resolvconf

框架安装完成后,将启动该框架并使其能够在系统启动时运行。

接下来,编辑配置文件, /etc/resolvconf/resolv.conf.d/base,然后输入您的DNS设置。请参阅下面的示例设置;

sudo vim /etc/resolvconf/resolv.conf.d/base
domain kifarunix.com
nameserver 8.8.8.8
nameserver 8.8.4.4

保存并退出配置文件。

接下来,更新 /etc/resolv.conf 进行永久DNS更改的文件;

sudo resolvconf -u

更新dhclient.conf上的DNS服务器设置

如果您使用DHCPd进行自动IP地址分配,请编辑 /etc/dhcp/dhclient.conf 归档并添加行; supersede domain-name-servers IP1, IP2;。用您各自的名称服务器IP地址替换IP1和IP2;

vim /etc/dhcp/dhclient.conf
supersede domain-name-servers 8.8.8.8, 8.8.4.4;

保存文件并退出。

现在,如果您运行dhclient, /etc/resolv.conf 将使用dhclient.conf中定义的名称服务器进行更新。

您可以使用 prepend 选项代替 supersede 将其他IP地址添加到ISP提供的默认IP地址。

咨询;

man dhclient.conf

在界面设置上设置名称服务器IP地址

编辑您的网络接口配置文件,并添加名称服务器的地址。

在Ubuntu 18.04 / 20.04中,您将更新Netplan配置文件,例如;

sudo vim /etc/netplan/01-network-manager-all.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
          wlp0s20f3:
                  dhcp4: no
                  addresses: [192.168.100.80/24]
                  gateway4: 192.168.100.1
                  nameservers:
                          addresses: [8.8.8.8]

我们将DNS设置为google公用DNS服务器地址8.8.8.8。您的情况可能会有所不同。

应用更改;

sudo netplan apply

在Debian和<= Ubuntu 16.04上;

vim /etc/network/interfaces
auto wlp0s20f3
iface wlp0s20f3 inet static
    address 192.168.100.80
    netmask 255.255.255.0
    dns-nameservers 8.8.8.8

重新启动网络以应用更改;

systemctl restart networking

在CentOS和类似的衍生产品上,按如下方式编辑相关界面。用您的接口名称替换INTERFACE。

nmcli con mod INTERFACE ipv4.dns 8.8.8.8

另外,通过NetworkManager守护程序禁用网络接口管理。

echo "NM_CONTROLLED=no" >> /etc/sysconfig/network-scripts/ifcfg-INTERFACE

应用更改;

nmcli con down INTERFACE
nmcli con up INTERFACE

您现在应该设置了静态DNS。

以上就是我们关于如何在Linux中的resolv.conf上进行DNS永久更改的指南的总结。

进一步阅读

man resolv.conf
man resolvconf

其他教程

在Linux中使用du Command检查目录使用情况

如何在Linux中使用htop命令

ps命令在Linux中的用法示例

在Linux中使用ls命令的示例用法

Sidebar