升级到 Debian Buster 后名称解析暂时失败

升级到 Debian Buster 后名称解析暂时失败

我将几台机器升级到 Debian Buster,到目前为止一切都很顺利——尽管在运行时apt upgrade遇到apt full-upgradeTemporary failure in name resolution.这是可以修复的,只是过程中的一个问题,在执行一步操作时不会发生apt dist-upgrade。然而,尽管已完全升级,一台机器仍显示此行为。我明白了

~# LANG=C ping google.com
ping: google.com: Temporary failure in name resolution

当我添加 google.com 时,/etc/hosts一切都很好。我的/etc/nsswitch样子

~# cat /etc/nsswitch.conf 

passwd:         files systemd
group:          files systemd
shadow:         files
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

/etc/resolv.conf现在指向 google 域名服务器,并且该服务器是可 ping 通的

~# cat /etc/resolv.conf 

nameserver 8.8.8.8

~# ping -c1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=22.8 ms

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 22.800/22.800/22.800/0.000 ms

systemd-resolved处于非活动状态,如果我正确解释了我的内容,则不应成为问题/etc/nsswitch

难道我还漏掉了另一点吗?

答案1

安装nslookup让我找到了问题的根源:resolv.conf根本无法解析。我将原始文件中的内容复制到新文件中,一切正常。相同的内容,相同的权限。但diff显示出没有差异的地方。显然有一些不可见的字符破坏了文件,因为它比文件大了 1 个字节

/etc# diff resolv.conf.odd resolv.conf.dem
1c1
< nameserver 8.8.8.8
---
> nameserver 8.8.8.8
/etc# cat resolv.conf.odd && cat resolv.conf.dem
nameserver 8.8.8.8
nameserver 8.8.8.8
/etc# ls -l resolv.conf.*|cut -d' ' -f5,9
19 resolv.conf.dem
20 resolv.conf.odd

更新:正如 cas 幸运地指出的那样,这是\r造成混乱的尾随,与 Buster 更新本身无关。一位同事推送了带有错误换行的文件

$ hd resolv.conf.odd
00000000  6e 61 6d 65 73 65 72 76  65 72 20 38 2e 38 2e 38  |nameserver 8.8.8|
00000010  2e 38 0d 0a                                       |.8..|

答案2

这是一个解决方案该问题的一个版本具有(几乎?)相同的症状。

简而言之:

就我而言,我使用的是 systemd-networkd,并且名称解析不起作用。此外,/etc/resolv.conf 的名称服务器与我们的 DHCP 服务器返回的名称服务器不同(尽管它们是可访问的)。

这就是我所做的:

sudo rm /etc/resolv.conf
sudo ln -s /run/systemd/stub-resolv.conf /etc/resolv.conf
sudo systemctl start systemd-resolved.service

注意:我不知道 systemctl 命令是否是“永久的”。我怀疑需要采取一些措施才能在启动时启动该服务。我对 Linux 相对缺乏经验,以上内容让我到达了我需要的地方。

相关内容