升级到Debian 12后无法解析域名

升级到Debian 12后无法解析域名

将 Debian11/KDE 升级到 Debian12 后,重新启动并运行sudo apt-get upgrade会出现类似Could not resolve ftp.XX.debian.org.这些在跑步时也会显示出来sudo apt-get update。然后我尝试在 Firefox-esr 浏览器中打开网站,但它无法打开任何网站(它显示“嗯。我们找不到该网站。”错误)。我也无法 ping 通任何网站,它显示“名称或服务未知”。所以用DNS解析域名有问题。


细节以及我尝试过的:

我试过sudo mv /etc/resolv.conf /etc/backup.resolv.conf。 DNS 在 Debian11 机器上仍然可以工作,并且在升级到 Debian12 之前也可以工作。 nftables 防火墙规则与以前相同。时间又差了几分钟,但我纠正了它,所以它不应该差超过几秒。升级到99%结束时,我尝试打开浏览器,当它要求我替换某个配置文件时,这导致黑屏(有一次在更新过程中屏幕也无法唤醒)并注销了我,所以我有完成升级,sudo dpkg --configure -a这似乎是有效的。也许我需要检查升级是否有效。

现在,我无法在那台计算机上使用互联网,而 NetworkManager 显示它已正确连接,并且我的路由器页面也显示该设备已连接。

  • grep ^hosts /etc/nsswitch.conf节目hosts: files mdns4_minimal [NOTFOUND=return] dns mymachines

  • /etc/resolv.conf包含#Generated by NetworkManager nameserver: 1.1.1.1(我已经尝试在其下面添加名称服务器 1.0.0.1,但这没有帮助)

  • nmcli c show <connection name> | grep -i dns下面显示了 Internet 连接(不是 VPN 连接)。在 DNS 仍然有效的 Debian11 机器上,这些值是不同的:它没有connection.dns-over-tls.我认为TLS 上的 DNS可能与问题有关。它还在多台机器使用的路由器中进行配置,其中只有 Debian12 机器无法访问网站。我只使用 IPv4 有充分的理由和 VPN。

connection.mdns:                        -1 (default)
connection.dns-over-tls:                -1 (default)
ipv4.dns:                               1.1.1.1
ipv4.dns-search:                        --
ipv4.dns-options:                       --
ipv4.dns-priority:                      0
ipv4.ignore-auto-dns:                   yes
ipv6.dns:                               --
ipv6.dns-search:                        --
ipv6.dns-options:                       --
ipv6.dns-priority:                      0
ipv6.ignore-auto-dns:                   no
IP4.DNS[1]:                             1.1.1.1

为什么是这样的以及如何解决这个问题?

答案1

connection.dns-over-tls设置是 Debian 12 中的新设置。据我了解,值“默认”(-1) 的含义取决于您使用的解析器库。我不认为经典的 libc 解析器(hosts:关键字dns)具有任何 DNS-over-TLS 功能,因此根据您当前的设置,“默认”设置(甚至任何设置!)将意味着“否”。但你可以用以下方法更改它:

nmcli c modify <connection name> connection.dns-over-tls <new setting>

可能的设置为“默认”、“否”、“机会主义”和“是”。我认为它们只有在使用systemd-resolved或其他支持 DoT 的解析器库时才会生效。

因此,您在 NetworkManager 设置中硬编码了 DNS 服务器 1.1.1.1,并尝试通过直接编辑来添加 1.0.0.1 /etc/resolv.conf。但是您是否测试过是否可以访问这些 DNS 服务器?

如果您还没有nslookup或尚未安装,则仅使用工具(实际上应该在标记该包时出现)dig的最基本测试将是:libc-binessential

getent hosts 1.1.1.1             # reverse lookup
getent hosts one.one.one.one     # one.one.one.one is the DNS name of 1.1.1.1

如果您已traceroute安装,则可以对 DNS-over-TLS 进行一个很好的测试,甚至可以为您找到问题所在:

traceroute -T -p 853 -n 1.1.1.1

对于常规非 TLS DNS 查询,您可以测试:

traceroute -T -p 53 -n 1.1.1.1

我知道您说过 NetworkManager 说它已正确连接,但这是真的吗?

如果运行ip addr show,您将看到每个网络接口的实际低级状态。它应该显示<BROADCAST,MULTICAST,UP,LOWER_UP>... state UP ...当前正在使用的网络接口。

如果尖括号内只有 UP 而没有 LOWER_UP,则意味着接口已配置(想要工作)但没有链接或存在其他问题导致其无法实际工作(不能)。在这种情况下,请检查dmesg输出,因为可能会出现一条错误消息,表明您缺少 NIC 固件文件或类似内容。

答案2

journalctl | tail -n 100发现了这个错误(一开始没有显示):
nm-openvpn: write to TUN/TAP : Invalid argument (fd=-1,code=22)

要解决此问题(在 KDE 中),右键单击 NetworkManager 的托盘图标(如果您已将 VPN 配置导入其中或在其中设置 VPN)
->配置网络连接...->您的 VPN->VPN (openvpn )->高级->常规->选中“使用压缩”并选择 LZO在右侧框中(我没有尝试过其他压缩方法)->确定并应用->断开连接,重新连接并测试。

我仍然不知道为什么会出现这个问题,而且 DNS-over-TLS 似乎还不起作用。如果您知道其中任何一个,请发表评论。

相关内容