码迷,mamicode.com
首页 > 系统相关 > 详细

Ubuntu 18.04 永久修改DNS的方法

时间:2021-06-02 13:07:34      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ast   功能   管理   www   start   linu   html   libc   就会   

1.问题背景

      发现每次在/etc/resolv.conf 修改DNS之后,重启服务器DNS就会重置为原始127.0.0.53。

2.解决过程

查看 /etc/resolv.conf文件发现如下:

技术图片

 

 

于是查找systemd-resolve相关资料《systemd-resolved.service 中文手册

结果如下:

systemd-resolved 为本地应用程序提供了网络名字解析服务。 它不但提供了传统的 DNS/DNSSEC 解析与本地缓存功能,还提供了 LLMNR 与 MulticastDNS 的解析(resolver)与应答(responder)的功能。 本地应用程序可以通过三种方式提交网络名字解析请求:

  • 第一种,通过D-Bus总线上的本地全功能API systemd-resolved (详见 API Documentation)。 这是首选方法,因为它是异步的并且功能最全。 此种方式可以正确返回 DNSSEC 的有效状态,以及支持 link-local 网络所必需的地址的网口范围(interface scope)。

  • 第二种,通过 glibc 的 getaddrinfo(3)gethostbyname(3) 等相关API(RFC3493)。 这些API受到了广泛的支持(包括非Linux平台)。此种方法不能检查 DNSSEC 的有效状态,并且是同步的。 此种方法由 glibc Name Service Switch (nss(5)) 支持。 必须使用 glibc NSS 模块 nss-resolve(8) 才能让 glibc NSS 使用 systemd-resolved 提供的名字解析功能。

  • 第三种,通过 systemd-resolved 在本地回环网口 127.0.0.53 上提供的本地DNS服务器。 应用程序可以直接向 127.0.0.53 发送DNS请求,从而直接使用 systemd-resolved 提供的解析服务。 除非确实无法使用前面的 glibc NSS 或 D-Bus API 两种方法, 否则应该尽量避免使用此种方式, 因为无法将各种网络解析功能(例如 link-local 地址或 LLMNR Unicode 域名)全部映射到 单播DNS协议中。

DNS服务器来自于 全局配置文件(/etc/systemd/resolved.conf)、 针对单个连接的静态配置文件(/etc/systemd/network/*.network)(当使用 systemd-networkd.service(8) 管理网络时)、 针对单个连接的动态配置(从DHCP服务器、resolvectl(1)、其他系统服务得到的DNS服务器)。参见 resolved.conf(5) 与 systemd.network(5) 以了解 systemd 自身的DNS服务器配置。为了提高兼容性, 仅在 /etc/resolv.conf 不是一个 指向 /run/systemd/resolve/stub-resolv.conf/usr/lib/systemd/resolv.conf/run/systemd/resolve/resolv.conf 之一的软连接 的情况下,才会从 /etc/resolv.conf 读取 全局DNS服务器。

于是:

技术图片

 

 

显然与上面的第二种情况类似,也就是说resolv.conf 现在归systemd管,果然找到了/etc/systemd/resolved.conf 文件:

技术图片

而里面也有我想找的DNS

3.解决方法

sudo vim /etc/systemd/resolved.conf

 

然后修改DNS,例如:

 

[Resolve]
DNS=114.114.114.114
DNS=8.8.8.8
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes


然后

systemctl restart systemd-resolved.service

查看结果:

$ 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

  



Ubuntu 18.04 永久修改DNS的方法

标签:ast   功能   管理   www   start   linu   html   libc   就会   

原文地址:https://www.cnblogs.com/yaohong/p/14817914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!