了解 systemd/networkmanager 下的 dns

了解 systemd/networkmanager 下的 dns

我不明白为什么我的电脑无法解析名称,直到我手动删除过时的nmcli device条目。


说明/步骤:

ubuntu 22.04 桌面版,使用network-managersystemd-resolved.我安装了 VPN,并启用了“阻止 VPN 之外的连接”。遇到连接问题(特别是无法解析任何名称我相信)。我禁用了 VPN 应用程序中的“killswitch”,然后卸载了 VPN,然后重新启动。

我能够 ping 多个 ip(包括我想要的 dns 服务器地址 1.1.1.1 和 google.com 的当前 IP),但nslookup无法解析任何主机名。我可以dig @1.1.1.1 google.com也成功了。

我有限的理解表明,如果我有:

  • ip addr具有预期子网 IP 的有效接口
  • ip route该子网上 IP 的有效默认值,
  • 和 的 dns1.1.1.1服务器Network Manager
    • 如 NM gui 上所示 -/etc/resolve.conf指向本地主机上的服务器,systemd-resolvd
    • 但请注意我没有看到任何1.1.1.1文字任何地方/etc/systemd/修复之前或之后

那么这个(dns)“应该可以工作”。显然不是这样。

经过一番摸索,我发现了一个陈旧的设备nmcli d,其类型dummy和状态为connected,从它的名称来看,它一定是由(现已卸载的)VPN 应用程序创建的。如果它很重要,则该条目是第二个,位于正确/预期连接的 WiFi 设备下方。

删除此 nmclidevice会导致 dns(nslookup以及浏览器等程序)恢复工作(解析)。具体来说,从我重新启动nslookup ...(未能解决)开始,然后nmcli connection delete ...,然后nslookup ...工作。没有其他更改/注销/等。


问题:

我应该在哪里知道去了解这个过时的 nmcli 连接是问题所在/这里还涉及哪些其他组件?我可能会认为我的问题是缺乏systemd-resolved知识,但是错误条目的链接在哪里nmcli dsystemd-resolvedNM 配置在哪里使用1.1.1.1

答案1

即使由 systemd 和 NetworkManager 管理,您也应该能够看到配置:sudo systemd-analyze cat-config systemd/resolved.conf其中 /etc/systemd/resolved.conf 包含在端口 53 上为本地主机提供服务的配置。在此配置中,您可以使用 DOH(基于 Https 的 DNS)或 DOT (基于 TLS 的 DNS)。

相关内容