V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gridsah
V2EX  ›  程序员

systemd-resolved 的工作模式是怎样的?本地建了 adguard home 还有必要开着 resolved 吗?

  •  
  •   gridsah · 2021-03-17 11:33:37 +08:00 · 2609 次点击
    这是一个创建于 1376 天前的主题,其中的信息可能已经有所发展或是发生改变。
    家用环境准备尝鲜 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 这个组件的?
    8 条回复    2021-03-23 10:57:45 +08:00
    no1xsyzy
        1
    no1xsyzy  
       2021-03-17 12:10:42 +08:00
    昨天刚碰到没设置好 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 的呗
    gridsah
        2
    gridsah  
    OP
       2021-03-17 12:22:46 +08:00 via Android
    @no1xsyzy 设置 DNSStubListener=no 以后 /etc/resolved.conf 不再是一个 symlink,我删除 /etc/resolved.conf 后手动创建了 ln -s /run/systemd/resolve/resolved.conf /etc/resolved.conf 。目前倒是一切正常。

    我就是不确定我一通操作干掉了些什么服务...
    no1xsyzy
        3
    no1xsyzy  
       2021-03-17 13:34:10 +08:00   ❤️ 1
    那我觉得你需要看的是这个: https://wiki.archlinux.org/index.php/Domain_name_resolution

    总之不带 @ 地 dig 一下,正常就是正常
    话说,真的有只找 D-Bus resolve1 的程序吗?
    jim9606
        4
    jim9606  
       2021-03-17 16:50:52 +08:00   ❤️ 2
    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 自行发起查询。
    julyclyde
        5
    julyclyde  
       2021-03-22 16:51:46 +08:00
    @jim9606 现在 systemd 对传统的入侵越来越大了啊,居然还有 libnss-resolve 这种东西?
    jim9606
        6
    jim9606  
       2021-03-22 22:15:05 +08:00
    @julyclyde 不过既然是插件,算不上什么入侵吧,链接 libnss 的程序保持二进制兼容的。ubuntu 仓库还有一堆别的 nss 插件,我看比较实用的有 libnss-docker
    gridsah
        7
    gridsah  
    OP
       2021-03-22 22:21:48 +08:00
    @julyclyde ubuntu 20.04 lts 太吃资源,转回 Debian 10 了,等 Debian 11 上线。
    julyclyde
        8
    julyclyde  
       2021-03-23 10:57:45 +08:00
    @jim9606 我就是觉得算是手脚比较干净的入侵
    常用的 libnss 没那么多品种啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2866 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:26 · PVG 22:26 · LAX 06:26 · JFK 09:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.