按照本指南学习如何在 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 更改。
- 使用 Resolvconf 框架
- 在您的接口设置中设置名称服务器 IP 地址
- 更新 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
Save 并退出配置文件。
接下来,更新 /etc/resolv.conf
文件以进行永久性 DNS 更改;
sudo resolvconf -u
更新 dhclient.conf 上的 DNS 服务器设置
如果您使用 DHCPd 进行自动 IP 地址分配,请编辑 /etc/dhcp/dhclient.conf
文件并添加行; supersede domain-name-servers IP1, IP2;
. 将 IP1 和 IP2 替换为您各自的名称服务器 IP 地址;
vim /etc/dhcp/dhclient.conf
supersede domain-name-servers 8.8.8.8, 8.8.4.4;
Save 文件并退出。
现在,如果你运行 dhclient,你的 /etc/resolv.conf
将使用 dhclient.conf 中定义的名称服务器进行更新。
您可以使用 prepend
选项而不是 supersede
添加额外的 IP 地址到 ISP 提供的默认地址。
咨询;
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 和
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 命令检查目录使用情况
如何在 Linux 中使用 htop 命令
ps 命令在 Linux 中的使用示例
ls 命令在 Linux 中的使用示例