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