ubuntu 修改DNS

包含网卡/无线网的网络问题和ADSL/校园网/宽带拨号支持及代理/共享等网络使用问题
头像
千里不留行
帖子: 605
注册时间: 2009-08-30 14:04
来自: 上海

ubuntu 修改DNS

#1

帖子 千里不留行 » 2020-05-30 15:22

ubuntu 修改DNS,禁用NetworkManager 后,避免127.0.0.53回环DNS

详见15楼
上次由 千里不留行 在 2020-06-10 11:56,总共编辑 19 次。
头像
zzugyl
帖子: 356
注册时间: 2011-03-07 17:26
系统: Ubuntu 20.04.3 LTS

Re: ubuntu 修改DNS的步骤、 杀死127.0.0.53

#2

帖子 zzugyl » 2020-05-31 21:50

这个nameserver也让我困惑很久。
常在深闺人未识 一朝成名天下知
头像
astolia
论坛版主
帖子: 6570
注册时间: 2008-09-18 13:11

Re: ubuntu 修改DNS的步骤、 杀死127.0.0.53

#3

帖子 astolia » 2020-05-31 23:18

你自己也没有真正搞清楚DNS服务器配置的机制嘛,整篇文章错误很多。

先说改/etc/resolv.conf的事
千里不留行 写了: 2020-05-30 15:22 当您重新启动系统之后,会发现,电脑上网依旧是慢。这个时候,您在终端输入命令:

代码: 全选

cat /etc/resolv.conf
查看resolv.conf内容,会发现,被您注释掉的nameserver 127.0.0.53又回来了。

怎么回事?

原来,在您重启系统,或禁用NetworkManager 后,域名服务器被写入resolv.conf,无效的127.0.0.53也会被写入,127.0.0.53是systemd-resolve提供的,可以防止解析主机名 。
/etc/resolv.conf里面第一行就写得明明白白,叫你不要去改动
# This file is managed by man:systemd-resolved(8). Do not edit.
/etc/resolv.conf 是个指向/run下面文件的软链接,而/run是tmpfs,自然不可能在重启后保留内容

代码: 全选

$ ls -l /etc/resolv.conf 
lrwxrwxrwx 1 root root 39 Aug 22  2019 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
$ mount | grep /run
tmpfs on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=3290720k,mode=755)
另外,设置/etc/resolv.conf后不需要重启网络服务。随着ifupdown退出历史舞台,重启网络服务也不是用/etc/init.d/networking了
千里不留行 写了: 2020-05-30 15:22 设置完了DNS后,需要重启网络服务,您才能正常上网。需要在终端输入:

代码: 全选

sudo /etc/init.d/networking start
如果还不能上网,就要重启计算机 。
[/code]


后面在你的方法三中,终于找到负责127.0.0.53的正主systemd-resolved了,但可惜由于很多概念上的错误,导致提出的“解决方案”也有问题
千里不留行 写了: 2020-05-30 15:22 查看结果,终端输入:

代码: 全选

systemd-resolve --status
$ systemd-resolve --status
Global
DNS Servers: 114.114.114.114
8.8.8.8
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
这个结果并不能说明当前使用的DNS服务器就是114.114.114.114和8.8.8.8。因为你修改/etc/systemd/resolved.conf下面的DNS=只影响Global,对于具体的网络接口所用的dns服务器,要翻页到下面的Link N(网络接口名)部分才有,比如我虚拟机上的例子

代码: 全选

Global
  Current DNS Server: 8.8.8.8       
         DNS Servers: 114.114.114.114       
          DNSSEC NTA: 10.in-addr.arpa     
                      16.172.in-addr.arpa 
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa 
                      18.172.in-addr.arpa 
                      19.172.in-addr.arpa 
                      20.172.in-addr.arpa 
                      21.172.in-addr.arpa 
                      22.172.in-addr.arpa 
                      23.172.in-addr.arpa 
                      24.172.in-addr.arpa 
                      25.172.in-addr.arpa 
                      26.172.in-addr.arpa 
                      27.172.in-addr.arpa 
                      28.172.in-addr.arpa 
                      29.172.in-addr.arpa 
                      30.172.in-addr.arpa 
                      31.172.in-addr.arpa 
                      corp                
                      d.f.ip6.arpa        
                      home                
                      internal            
                      intranet            
                      lan                 
                      local               
                      private             
                      test                

Link 2 (enp0s3)
      Current Scopes: DNS          
       LLMNR setting: yes          
MulticastDNS setting: no           
      DNSSEC setting: no           
    DNSSEC supported: no           
         DNS Servers: 10.0.2.3
          DNS Domain: ~.
除非是在NetworkManager里面设置不要自动设置DNS,才会去用Global里设置的地址。
在默认的自动设置DNS的情况下,进行实际查询的时候,是根据/etc/resolv.conf里的内容,向127.0.0.53发送请求,而127.0.0.53后面的systemd-resolved,会向自动设置的DNS服务器转发(上面例子里是10.0.2.3)转发请求。这个自动设置的DNS服务器,正是通过DHCP自动获取IP地址时,一起发回来的DNS服务器地址。这个在windows上也是一样的。
虽然多了一个127.0.0.53去转手,但由于127.0.0.53是个本地回环地址,速度非常快,单次查询增加的耗时微乎其微。而且systemd-resolved默认开启了缓存功能,减少了真正向外查询的次数
所以你说ubuntu没有自动设置DNS完全是错误的,后面的比方就更是可笑了。
头像
千里不留行
帖子: 605
注册时间: 2009-08-30 14:04
来自: 上海

Re: ubuntu 修改DNS的步骤、 杀死127.0.0.53

#4

帖子 千里不留行 » 2020-05-31 23:28

感谢您回答得这么详细!
上次由 千里不留行 在 2020-06-10 11:45,总共编辑 5 次。
头像
千里不留行
帖子: 605
注册时间: 2009-08-30 14:04
来自: 上海

Re: ubuntu 修改DNS的步骤、 杀死127.0.0.53

#5

帖子 千里不留行 » 2020-05-31 23:46

详见15楼:
上次由 千里不留行 在 2020-06-10 11:48,总共编辑 1 次。
onlylove
论坛版主
帖子: 5261
注册时间: 2007-01-14 16:23

Re: ubuntu 修改DNS的步骤、 杀死127.0.0.53

#6

帖子 onlylove » 2020-06-01 0:44

那你为什么不彻底点,直接干掉systemd,用非systemd的发行版
头像
千里不留行
帖子: 605
注册时间: 2009-08-30 14:04
来自: 上海

Re: ubuntu 修改DNS的步骤、 杀死127.0.0.53

#7

帖子 千里不留行 » 2020-06-01 1:01

XXXXXXXXXX
上次由 千里不留行 在 2020-06-10 11:46,总共编辑 2 次。
头像
astolia
论坛版主
帖子: 6570
注册时间: 2008-09-18 13:11

Re: ubuntu 修改DNS的步骤、 杀死127.0.0.53

#8

帖子 astolia » 2020-06-01 11:03

千里不留行 写了: 2020-05-31 23:46 我改一下帖子吧!注明前面的那些修改DNS的方法没有用,是个坑儿。仅供大家参考:免得您这样看得不仔细,回答得很仔细的人,出现理解错误。
千里不留行 写了: 2020-05-31 23:28 下面的图片,也是我的帖子里的原文截图,不要跳着看内容,行吗?
别TM自作聪明了。
千里不留行 写了: 2020-05-31 23:28 我这里是列举了一些网络上常见的,但没有用的解决方法。所以,后面,用了一个干掉127.0.0.53的方法:
我知道那是你列出的网上的错误方法,我针对的是后面你对它的说明。也就是这段
千里不留行 写了: 2020-05-30 15:22 修改DNS方法一的说明:
(以下略)
这里面前面扯了一大堆DNS的事,后面解释方法为什么无效的原因却草草带过,而且对最根本的问题(Do not edit)完全不谈。

千里不留行 写了: 2020-06-01 1:01 127.0.0.53影响网速的问题,也并非是我一个人在说,网上搜索一下127.0.0.53的这几个字,会跳出一堆讨厌这个DNS的话题。有人甚至对它的仇恨都出来了!这个127.0.0.53的恶名,简直如同windows系统里面的2345。
1.PNG
讨厌127.0.0.53不等于127.0.0.53影响网速,更不代表127.0.0.53是无效的。
你再去搜一下“127.0.0.53影响网速”看还能搜到几个?
对新事物不了解而产生害怕,这很正常。古有照相摄人魂魄,今有拆基站防辐射。你自己不了解,在自己的电脑上折腾我不管你。但在这里散播FUD误导别人,我就要把你批判一番了。
头像
百草谷居士
帖子: 3939
注册时间: 2006-02-10 16:36
系统: debian12/xubuntu2404

Re: ubuntu 修改DNS的步骤、 杀死127.0.0.53

#9

帖子 百草谷居士 » 2020-06-01 12:42

不明白几位大神在讨论什么?DNS不是可以通过图形化的网络管理器界面来修改吗?
有这么麻烦,神神道道的吗?
debian 12.5 / xubuntu 24.04

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
头像
千里不留行
帖子: 605
注册时间: 2009-08-30 14:04
来自: 上海

Re: ubuntu 修改DNS的步骤、 杀死127.0.0.53

#10

帖子 千里不留行 » 2020-06-01 13:11

``


上次由 千里不留行 在 2020-06-10 11:47,总共编辑 1 次。
onlylove
论坛版主
帖子: 5261
注册时间: 2007-01-14 16:23

Re: ubuntu 修改DNS的步骤、 杀死127.0.0.53

#11

帖子 onlylove » 2020-06-01 16:41

如果你只是要解决DNS的问题,可以 ls -l /etc/resolv.conf看下输出,
ubuntu的话,一般是修改/etc/systemd/resoved.conf ,里面有你要改的dns设置
至于127.0.0.53,那个就是个本地回环地址,和127.0.0.1一样的,发往那个地址的包不会出现在本地系统以外的地方,除非配置错误,不然应该没什么理由影响网速

https://blog.csdn.net/weixin_43640082/a ... s/83859885
https://www.jianshu.com/p/b7e176ebd2d9
https://www.jianshu.com/p/ad7cd1d5be45

讲道理,你也算是个老用户了,这几年ubuntu各方面都很多改变,以前的老方法不一定继续有用,及时了解新系统的设置方式比较好一点(开发喜欢,用户只能被带着跑)

还是那句话,如果你真的对它恨的牙痒痒,直接换一个不用systemd的发行版
头像
千里不留行
帖子: 605
注册时间: 2009-08-30 14:04
来自: 上海

Re: ubuntu 修改DNS的步骤、 杀死127.0.0.53

#12

帖子 千里不留行 » 2020-06-01 19:32

详见15楼:
·
·
上次由 千里不留行 在 2020-06-10 11:48,总共编辑 1 次。
onlylove
论坛版主
帖子: 5261
注册时间: 2007-01-14 16:23

Re: ubuntu 修改DNS的步骤、 杀死127.0.0.53

#13

帖子 onlylove » 2020-06-01 23:28

犹豫了下该怎么回帖
因为发现自己好像没仔细验证就回帖了……
ubuntu18.04用了netplan设置网卡,很多之前的方式已经不起作用
刚试了下
编辑/etc/systemd/resolvd.conf里面的dns只会影响systemd-resolved --status里面的global dns,对应的网卡的dns是没改动的也就是还是自动获得的
如果你想要手动设置某个网卡的DNS,你需要修改/etc/netplan/下面的配置文件,我新装的虚拟机里是 01-network-manager-all.yaml
ubuntu-set-dns-netplan.png
然后运行

代码: 全选

sudo netplan apply
或者在图形界面修改
nm-dns.png
下面这篇文章里面有比较详细的描述,图也是从它那拿来的
https://www.configserverfirewall.com/ub ... ns-server/

至于astolia斑竹,我还是很尊重他的,他在技术方面比我强太多,不管是系统设置问题,还是编程方面,不是甩我几条街的问题
很多问题他都能指出问题的原因,并且给出正确的方法

也许你觉得他说话语气不好,但是他只是在指出你走的弯路,毕竟很多人会发一些没经过自己验证的帖子,或者错误的理解的文章,会误导其他搜索到文章的网友

然后话题说回来,其实你发这个帖子,本意只是想解决ubuntu网速慢的问题,影响网速的原因还是挺多的,比方系统默认MTU的大小什么的
我倒是觉得如果真是DNS的问题,不妨手动设置下DNS试试,没必要大费周章去折腾systemd里面的各种包

我之前网上见过一个华硕路由经常掉线的问题,是因为华硕路由会主动发一个echo请求给isp,然后isp不管是因为设置还是其他原因,忽略了,没回,超时,路由就会认为网络断了

有些问题有争议,被批评了,即便是对方语气不好,回头仔细验证下也是好的,没必要坚持自己一定是对的和对方吵,虽然说我被批评有时候也会火大就是了
头像
千里不留行
帖子: 605
注册时间: 2009-08-30 14:04
来自: 上海

Re: ubuntu 修改DNS的步骤、 杀死127.0.0.53

#14

帖子 千里不留行 » 2020-06-02 0:53

详见15楼:

·
·
上次由 千里不留行 在 2020-06-10 11:49,总共编辑 1 次。
头像
千里不留行
帖子: 605
注册时间: 2009-08-30 14:04
来自: 上海

怎样在Ubuntu 18.04 中设置DNS地址?

#15

帖子 千里不留行 » 2020-06-02 3:35

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


---------------------------------------------------


怎样在Ubuntu 18.04 中设置DNS地址?
=========================
这里的主要内容,来自onlylove版主推荐的一篇帖子。................想要查看一下英文原帖(请点击这里).
ubuntu-set-dns-server.png
这是原文的图片。原帖介绍了如何在服务器版Ubuntu 18.04或桌面版buntu 18.04上面设置DNS的方法。

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

如果,您是一名Ubuntu系统的用户,了解一下,在Ubuntu中,如何设置DNS地址,是一件很重要的情,因为它切实地关系着我们的网速。
想要在Ubuntu18.04上面设置DNS地址,具体也要看您是使用哪种版本Ubuntu。不同版本的系统,设置的方法也不相同。
如果您在使用是服务器版的Ubuntu18.04,就需要将DNS地址添加到对应网卡DNS的配的文件里面;桌面版的Ubuntu18.04用户,只需要使用NetworkManager图形配置工具,就可以直接进行DNS地址的设置了。




A)在Ubuntu18.04 Server(服务器版)上设置DNS的方法:
=========================
步骤一,找到您主机的网卡DNS的配置文件

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

代码: 全选

sudo ls -l /etc/netplan/
也可以不加sudo 。
下图是原帖的输出结果:
etc-netplan.png
etc-netplan.png (11.48 KiB) 查看 5049 次
原帖作者的这个输出结果,说明在他的主机内,对应网卡的配置文件就是: 50-cloud-init.yaml 或者是01-netcfg.yaml
需要注意的是,每个人的系统情况不同,这个网卡的DNS配置文件的名字也不同,比如,论坛版主onlylove新装的虚拟机里,查到的是 01-network-manager-all.yaml,那么,他的网卡的配置文件就是: 01-network-manager-all.yaml。而您的的网卡的配置文件,可能和他们还不一样,或者,您的是01-netcfg.yaml
而本人的主机里面,根本就没有这个文件。下图是本人在主机里面查找这个文件的结果:
3.png
我们找到了自己系统内网卡的DNS配置文件,还需要查看一下自己的网卡。

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

代码: 全选

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

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

代码: 全选

sudo gedit /etc/netplan/50-cloud-init.yaml 
注意:这个命令里面,打开是原作者查到的 50-cloud-init.yaml
50-cloud-init.yaml 这段,要填入您刚刚查到的、您自己主机内的网卡DNS配置文件的名字,如,论坛版主onlylove 01-network-manager-all.yaml,他就要输入如下命令:

代码: 全选

sudo gedit /etc/netplan/01-network-manager-all.yaml 
修改的内容,如下图:
5.png
这是英文原帖作者的网卡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
注意在18.04之前的ubuntu版本之中,网卡的DNS配置文件,是在/etc/network/interfaces之中。



查看当前的DNS地址
-------------------------------------

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

代码: 全选

systemd-resolve --status
下图是英文原作者的查看结果:
6.png
6.png (10.69 KiB) 查看 5033 次


B)在Ubuntu18.04 Desktop(桌面版)上设置DNS的方法:
=========================
桌面版的Ubuntu18.04 含有NetworkManager应用,桌面版的Ubuntu18.04 要设置DNS地址,可以通过图形用户界面进行编辑。
只需要您用鼠标点击顶栏的左上角,并打开,就可以直接设置DNS地址了。
如下图:
7.png
7.png (7.33 KiB) 查看 5033 次
您点击一下“IPV4”选项卡(或“IPv6”)在“DNS”字段下添加上您要加入的DNS的IP地址
如果不想从DHCP服务器自动获取DNS配置,请去掉 Automatic (DHCP)前面的点。
8.png
更改完成之后,您需要重新启动一下您的网络,以便应用新的DNS设置。


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

以上内容,来自来onlylove版主推荐的一篇英文帖子,


本人的1楼主贴内容,不够精简,这里也在下面重新列出:
对于那些在 /etc/netplan目录中,没有网卡配置文件**xxx.yaml**的用户。以及,已经禁用了NetworkManager 的用户,可以考虑下面的方法。(这个方法,也绝不单单是这两种用户才可以使用。)


注意:下面的内容存在大量错误,参见后面回帖的讨论 - by astolia

C)让Unbound来自动帮助您配置最佳DNS地址的方法:
=========================
Unbound来替换掉systemd-resolvd,让Unbound接替NetworkManager,让Unbound来自动帮您配置出最佳DNS地址,顺便彻底脱离127.0.0.53。
Unbound是一个缓存DNS解析器,unbound是Red Hat(红帽)公司推荐的DNS软件........
具体步骤如下:
步骤一, 下载unbound_1.6.7-1ubuntu2.3_amd64.deb
Unbound主页(点这里).这个是外网的链接,较卡,并且没有DED包,推荐您:
...............我们可以直接从国内的阿里源(下载DED包).
或者,点击这个链接:http://mirrors.aliyun.com/ubuntu/pool/u ... _amd64.deb
Unbound.png
Unbound.png (12.13 KiB) 查看 4830 次

步骤二,停止systemd-resolvd

代码: 全选

sudo systemctl stop systemd-resolved
sudo 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地址。不同的是,一个是127.0.0.53 ,而另一个是 127.0.0.1。


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

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


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

、、
、、
上次由 千里不留行 在 2020-06-10 12:25,总共编辑 9 次。
回复