GnuPG 和 dnsmasq 无法使用 systemd-resolve 在没有 /etc/resolv.conf 的情况下解析 DNS

GnuPG 和 dnsmasq 无法使用 systemd-resolve 在没有 /etc/resolv.conf 的情况下解析 DNS

我已经安装了 Arch Linux 发行版。Arch Linux 用作systemd系统服务套件,因此它也用于systemd-resolved解析 DNS。我使用 DHCP 接收 DNS 服务器并解析 DNS。我需要启用服务systemd-resolved来自动检测和解析 DNS。例如,它可以用于curl和简单的 Web 浏览器,即使 为空/etc/resolv.conf。问题是它不适用于gpgdnsmasq

  1. GPG。如果 中未指定 DNS,则命令gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv *some key* 会打印。但如果我在 中指定某个 DNS 服务器(例如 ),则它将正常工作并找到密钥。gpg: keyserver search failed: Server indicated a failure/etc/resolv.conf/etc/resolv.confnameserver 1.1.1.1gpg

  2. dnsmasq。我想制作类似 DNS 转发器的东西。我想启动一个 DHCP 服务器,它也提供 DNS 服务器。但是是否可以自动检测 DNS 服务器,而不仅仅是从/etc/resolv.conf?使用本地计算机使用的 DNS 服务器?可能还从另一个 DHCP 服务器接收 DNS,即本地计算机从其接收 IPv4 地址的服务器?

希望这是可能的!我很高兴得到任何帮助!提前致谢!

答案1

对于第一个问题,请将名称服务器放入127.0.0.53/etc/resolv.conf 中。Systemd-resolved 不会要求程序通过 nsswitch 使用其本机 API - 它还在本地主机上监听标准 DNS 请求(就像 dnsmasq 所做的那样)。

最常见的方法是将 /resolv.conf 符号链接到/run/systemd/resolve/stub-resolv.conf,这样您还可以从 DHCP 获取域后缀。

对于第二个问题,使用“resolv-file”选项告诉 dnsmasq 读取/run/systemd/resolve/resolv.conf(注意,这是与上面不同的文件)——此文件将包含实际的从 DHCP 获取的名称服务器。

(如果您愿意,您也可以将您的 /etc/resolv.conf 符号链接到该文件 - GnuPG 的 DNS 查询将完全绕过 systemd-resolved。)

相关内容