要在全新的 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 解析器本身。