< 返回技术文档列表

怎么在Ubuntu 中设置DNS地址?(18.04和18.04以后的版本)

发布时间:2022-11-15 22:26:23⊙投诉举报

注:本文内容参考了一篇英文版的帖子,本人整理出了这篇精简过的ubuntu修改DNS地址的方法。假如,您同样也被DNS的问题困扰,您可以把本文作为一个参考.

本文的主要内容:
├── 怎么在\color{#BF4000}{Ubuntu 18.04} 中设置DNS地址?
├──A)在\color{#BF4000}{Ubuntu18.04 Server}上(服务器版)设置DNS的方法:
│ ├── 查看当前的DNS地址
├──B)在\color{#BF4000}{Ubuntu18.04 Desktop}上(桌面版)设置DNS的方法:
└──C)让\color{#004080}{Unbound}来自动帮助您配置最佳DNS地址的方法:


怎么在\color{#BF4000}{Ubuntu 18.04} 中设置DNS地址?


这里的主要内容,参考了一篇英文帖子。................想要查看一下英文原帖(请点击这里).

原文的图片
原帖详情了如何在服务器版Ubuntu 18.04或者桌面版buntu 18.04上面设置DNS的方法。

这里稍作改动,内容如下:

假如,您是一名Ubuntu系统的客户,理解一下,在Ubuntu中,如何设置DNS地址,是一件很重要的情,由于它切实地关系着我们的网速。
想要在Ubuntu18.04上面设置DNS地址,具体也要看您是使用哪种版本Ubuntu。不同版本的系统,设置的方法也不相同。B)在\color{#BF4000}{Ubuntu18.04 Desktop}上(桌面版)设置DNS的方法:
假如您在使用是服务器版的Ubuntu18.04,就需要将DNS地址增加到对应网卡DNS的配的文件里面;桌面版的Ubuntu18.04客户,只要要使用NetworkManager图形配置工具,即可以直接进行DNS地址的设置了。


A)在\color{#BF4000}{Ubuntu18.04 Server}上(服务器版)设置DNS的方法:


步骤一,找到您主机的网卡DNS的配置文件

我们需要将DNS地址增加到对应某个网卡的DNS的配置文件中。这个文件在 /etc/netplan目录中,具体是哪个文件,我们就要先来查看一下。
查看方法是,在终端输入:

sudo ls -l /etc/netplan/

也可以不加sudo 。
下图是原帖的输出结果:


原帖的输出结果

原帖作者的这个输出结果,说明在他的主机内,对应网卡的配置文件就是: 50-cloud-init.yaml 或者者是01-netcfg.yaml
需要注意的是,每个人的系统情况不同,这个网卡的DNS配置文件的名字也不同,比方,\color{#BF4000}{ubuntu}中文论坛的老版主让\color{#004080}{onlylove}新装的虚拟机里,查到的是 01-network-manager-all.yaml,那么,他的网卡的配置文件就是: 01-network-manager-all.yaml。而您的的网卡的配置文件,可能和他们还不一样,或者者,您的是01-netcfg.yaml
而本人的主机里面,根本就没有这个文件。下图是本人在主机里面查找这个文件的结果:

本人主机查看的结果

我们找到了自己系统内网卡的DNS配置文件,还需要查看一下自己的网卡。

步骤二,找到您的主机网卡
查看网卡方法是,在终端输入:

ifconfig

下图是本人的网卡情况:


本人的网卡情况

注意,每个人的系统主机不同,网卡的名字也不同,像是原帖的作者,他的有线网卡名字是:enp0s3 ,本人确实是 enp0s25。
找到了网卡DNS的配置文件,知道了网卡名,我们就来修改网卡DNS的配置文件吧!

步骤三,修改网卡DNS的配置文件
在终端输入:

sudo gedit /etc/netplan/50-cloud-init.yaml 

注意:这个命令里面,打开是原作者查到的 50-cloud-init.yaml 。
50-cloud-init.yaml 这段,要填入您刚刚查到的、您自己主机内的网卡DNS配置文件的名字,如,\color{#BF4000}{ubuntu}中文论坛的老版主\color{#004080}{onlylove}的网卡配置文件是: 01-network-manager-all.yaml,他就要在终端内输入如下命令:

sudo gedit /etc/netplan/01-network-manager-all.yaml 

修改的内容的具体位置,如下图:


修改的DNS

这是英文原帖作者的网卡DNS的配置文件,本人主机里没有这个文件,原作者在他自己的网卡的配置文件中,填加了如下的内容:

nameservers:    addresses: [8.8.8.8, 8.8.4.4]

他是用了谷歌的DNS服务器地址,您可以根据您自己的实际情况填加,比方:

首选:114.114.114.114    备选:114.114.114.115

个人建议,最好是找出离您家最近的DNS地址来增加。比方,您住在深圳,您即可以直接设置成深圳的DNS地址。

深圳市(中国电信)首选DNS:202.96.128.166 备份DNS:202.96.134.133

关于各地区的公共DNS服务器地址,您到网上搜一搜,基本上都可以在网上查到。
另外, 在addresses: [8.8.8.8, 8.8.4.4]这段内容里面,可以增加多个DNS地址,要注意的是,需要在每个DNS之间,要加一个逗号来分隔

修改完网卡配置文件之后,请您保存一下。接着,需要:

步骤四,使用netplan apply命令重新加载配置
在终端输入:

sudo netplan apply

\color{red}{注意:}在18.04之前的ubuntu版本之中,网卡的DNS配置文件,是在/etc/network/interfaces之中。

查看当前的DNS地址

要检查您当前使用的DNS,假如,您是使用的是静态IP地址,可以检查Netplan配置文件。
假如,您没有固定IP地址,可以在终端运行systemd resolve命令来查看:

systemd-resolve --status

下图是英文原作者的查看结果:

原作者的查看结果

B)在\color{#BF4000}{Ubuntu18.04 Desktop}上(桌面版)设置DNS的方法:


桌面版的Ubuntu18.04 含有NetworkManager应用,桌面版的Ubuntu18.04 要设置DNS地址,可以通过图形客户界面进行编辑。
只要要您用鼠标点击顶栏的左上角,并打开,即可以直接设置DNS地址了。
如下图:


顶栏的左上角

您点击一下“IPV4”选项卡(或者“IPv6”)在“DNS”字段下增加上您要加入的DNS的IP地址
假如不想从DHCP服务器自动获取DNS配置,请去掉 Automatic (DHCP)前面的点。

Automatic

更改完成之后,您需要重新启动一下您的网络,以便应用新的DNS设置。

在16.04(包含Ubuntu16.04)以前的ubuntu版本上,用于配置DNS地址的是/etc/resolv.conf文件。在Ubuntu 18.04里,这个/resolv.conf文件依然存在,但它已经不再是你配置DNS地址的地方了。

以上内容,来自来\color{#BF4000}{ubuntu}中文论坛的老版主\color{#004080}{onlylove}推荐的一篇英文帖子。

对于那些在 /etc/netplan目录中,没有网卡配置文件xxx.yaml的客户。以及,已经禁用了NetworkManager 的客户,可以考虑下面的方法。(这个方法,也绝不单单是这两种客户才可以使用。)

Unbound

C)让\color{#004080}{Unbound}来自动帮助您配置最佳DNS地址的方法:


用Unbound这款应用来替换掉systemd-resolvd,让Unbound来接替NetworkManage帮您自动配置出最佳的DNS地址,顺便彻底脱离127.0.0.53。

Unbound是一个缓存DNS解析器,unbound是Red Hat(红帽)公司推荐的DNS软件........

具体步骤如下:

步骤一, 下载unbound_1.6.7-1ubuntu2.3_amd64.deb
Unbound主页(点这里).这个是外网的链接,较卡,并且没有DED包,推荐您,
从国内的阿里源内直接下载unbound的DED安装包:
点这里从阿里源内直接下载
或者者:复制链接:http://mirrors.aliyun.com/ubuntu/pool/universe/u/unbound/unbound_1.6.7-1ubuntu2.3_amd64.deb

步骤二,中止systemd-resolvd

sudo systemctl stop systemd-resolvedsudo systemctl disable systemd-resolved 

步骤三,安装unbound

sudo dpkg -i unbound_1.6.7-1ubuntu2.3_amd64.deb

步骤四,清空(rm -r) fresolv.conf的内容:

sudo rm -rf /etc/resolv.conf

步骤五,将dns服务替换为unbound:

sudo gedit /etc/NetworkManager/NetworkManager.conf

在[main]
下面增加
dns=unbound,如图:


111.png

而后,保存。这时候,重启您的电脑。假如,您以后还想要自行手动设定DNS地址,要先把这里改回去,手动设定DNS地址的方法,参考本文目录A)的内容。

此时,您系统内的/etc/resolv.conf文件里面,已经不再会是nameserver 127.0.0.53,也不是nameserver 8.8.8.8 ,更不是nameserver 114.114.114.114 。

那么,将dns服务替换为unbound之后,/etc/resolv.conf里的内容,到底是什么?

您可以打开终端,输入如下命令查看:

cat /etc/resolv.conf

(cat 的后面有一个空格)

您会发现,此时的resolv.conf里面,已经unbound根据您的网络实际情况,自动设置的DNS。
比方,本人的DNS就是unbound自动获取的本地局域网DNS。
本人的resolv.conf内容,如下:

    Generated by NetworkManager    nameserver 192.168.18.1

这是一个不规范的DNS局域网服务器地址,但,这个就是unbound给本人的主机找出,并设置为默认的最适合本人这里网络条件的DNS地址。

另外,当您以后禁用Unbound时,系统还是会给您自动加上一个回环地址,这次不再是127.0.0.53 ,而是另一个 127.0.0.1,这样也算是干掉了127.0.0.53吧!

ubuntu自带的NetworkManager 也好,Unbound也好,他们都会为您的系统自动配置DNS,只不过是当您禁用了它们以后,各自重新为您的系统留下一个DNS回环地址。

假如,您不能正确手动固定您的IP地址,不能正确设置您的DNS,就不要轻易地去禁用NetworkManage或者Unbound。

在您禁用了NetworkManage或者Unbound以后,它们在您的系统里面遗留下来的127.0.0.53或者者是127.0.0.1这样的回环DNS。恰恰是您上网慢的一个主要起因。
正确设置DNS,或者固定IP的方法,参看本文上面内容A)。

\color{red}{注意:} 在18.04之前的ubuntu版本或者其它的ubuntu衍生版,如linux-lite之中,网卡的DNS配置文件,是在/etc/network/interfaces之中。

、、


/template/Home/Zkeys/PC/Static