/run/systemd/resolve/stub-resolv.conf 和 /run/systemd/resolve/resolv.conf 有什么区别?

/run/systemd/resolve/stub-resolv.conf 和 /run/systemd/resolve/resolv.conf 有什么区别?

要在全新的 Kubuntu 19.10 笔记本电脑中配置自定义 DNS 服务器,仅添加以下内容是不够的/etc/systemd/resolved.conf

DNS=77.88.8.7 77.88.8.3 #Yandex 的 DNS,即使在 Google 图片上也没有色情内容

我还必须更改的符号链接/etc/resolv.conf

$ ls -l /etc/resolv.conf 
lrwxrwxrwx 1 root root 37 oct 26 01:48 /etc/resolv.conf -> /run/systemd/resolve/stub-resolv.conf
$ sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

/run/systemd/resolve/stub-resolv.conf仅具有 ISP 指定的 DNS,而自定义 DNS 仅位于/run/systemd/resolve/resolv.conf.

当查看时:

man systemd-resolved.service

它说推荐的文件是/run/systemd/resolve/stub-resolv.conf,但我不明白它们的区别(即易于理解且简单解释应该是公认的答案)。如果是这样,我如何将系统设置为使用该文件而不是其他文件来使用全局配置的 DNS?

笔记:在具有大量 WiFi 连接的笔记本电脑上,配置每个连接的 DNS 是不可行的,就像许多网站中建议的那样,这些网站说明了如何实现我刚才描述的这一点

好奇的附加信息:

/run/systemd/resolve/$ diff stub-resolv.conf resolv.conf 
3,8c3,4
< # This is a dynamic resolv.conf file for connecting local clients to the
< # internal DNS stub resolver of systemd-resolved. This file lists all
< # configured search domains.
< #
< # Run "resolvectl status" to see details about the uplink DNS servers
< # currently in use.
---
> # This is a dynamic resolv.conf file for connecting local clients directly to
> # all known uplink DNS servers. This file lists all configured search domains.
17,18c13,17
< nameserver 127.0.0.53
< options edns0
---
> nameserver 77.88.8.7
> nameserver 77.88.8.3
> nameserver 200.49.130.40
> # Too many DNS servers configured, the following entries may be ignored.
> nameserver 200.42.4.207

答案1

使用resolv.conf代替stub-resolv.conf将绕过许多 systemd 解析的配置,例如 DNS 应答缓存、每个接口的 DNS 配置、DNSSec 强制执行等。

说明:

使用 时stub-resolv.conf,应用程序将向 systemd 在地址 127.0.0.53 上提供的 DNS 存根解析器发出 DNS 请求。该存根解析器会将 DNS 请求代理到在 中配置的上游 DNS 解析器systemd-resolved,对这些请求和答案应用它想要的任何逻辑,例如缓存它们。

使用时resolv.conf,应用程序将直接向在 中配置的“真实”(也称为上游)DNS 解析器发出 DNS 请求systemd-resolved。在这种情况下,systemd-resolved仅充当“resolv.conf管理器”,而不充当 DNS 解析器本身。

来源:systemd-resolved联机帮助页

相关内容