在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