systemd-resolved 的工作模式是怎样的?本地建了 adguard home 还有必要开着 resolved 吗?
- 0次
- 2021-06-09 17:37:40
- idczone
家用环境准备尝鲜 ubuntu server 20.04 LTS 。
读了读 man page:在 /etc/systemd/resolved.conf 里设置了 DNSStubListener=no 解放了 53 端口。
现在在本地用 docker 建好了 adguard home 。那么:
1. 被 DNSStubListener=no 这个选项关闭的 DNS stub listener 到底是个什么服务?
2. resolved 这个组件到底接管了哪些配置文件?
3. 现在 resolved 还有必要开着吗?
按照我的理解,resolved美国服务器 这个组件主要在本地实现了一个 DNS 服务器,所有的本地 DNS 请求都被劫持到这个服务器上进行解析。现在关闭了 resolved 的本地解析,那么这个服务也就没必要开着了。
4. 我这样理解对不对???
5. 各位都是怎么配置 resolved 这个组件的?
昨天刚碰到没设置好 resolved 导致 gpg 连不上任何服务器的问题……
你看下你的 /etc/resolv.conf 是不是一个 symlink,可能通过 symlink 的方式被 resolved 接管了。
没有劫持,根据 resolved 的 manpage,它暴露三个接口:D-Bus, getaddrinfo, 127.0.0.53
不过通常会建议用 symlink 接管 /etc/resolv.conf
不清楚 AdGuard 是否有对应的接管方式,不然就照着 /usr/lib/systemd/resolv.conf 写一个指向 AdGuard 的呗
设置 DNSStubListener=no 以后 /etc/resolved.conf 不再是一个 symlink,我删除 /etc/resolved.conf 后手动创建了 ln -s /run/systemd/resolve/resolved.conf /etc/resolved.conf 。目前倒是一切正常。
我就是不确定我一通操作干掉了些什么服务...
那我觉得你需要看的是这个: https://wiki.archlinux.org/index.php/Domain_name_resolution
总之不带 @ 地 dig 一下,正常就是正常
话说,真的有只找 D-Bus resolve1 的程序吗?
1. DNSStubListener 开关让 resolved 监听 127.0.0.53:53 提供 DNS 解析
2. /etc/resolv.conf 链接至 /run/systemd/resolve/stub-resolv.conf,该配置指定了 nameserver 127.0.0.53
3. 应该不开会好点
大部分链接 glibc 的程序会使用 Name Service Switch (libnss)解析域名,由 /etc/nsswitch.conf 控制,通常是通过 libnss-resolve 插件走 D-Bus 访问 resolved 查询。
不链接 glibc 的程序(例如原生 go 程序)通过读 /etc/resolv.conf 自行发起查询。
现在 systemd 对传统的入侵越来越大了啊,居然还有 libnss-resolve 这种东西?
不过既然是插件,算不上什么入侵吧,链接 libnss 的程序保持二进制兼容的。ubuntu 仓库还有一堆别的 nss 插件,我看比较实用的有 libnss-docker
ubuntu 20.04 lts 太吃资源,转回 Debian 10 了,等 Debian 11 上线。
我就是觉得算是手脚比较干净的入侵
常用的 libnss 没那么多品种啊