我的 Fedora 系统之一经常无法进行 DNS 解析。两者都ping host.ext
失败nslookup host.ext
。当我编辑/etc/resolv.conf
为 usenameserver 1.1.1.1
而不是时nameserver 127.0.0.53
,nslookup 可以工作,但 ping 仍然失败。为什么运行时库不使用中列出的名称服务器/etc/resolv.conf
?
/etc/nsswitch.conf
包含
# Generated by authselect
# Do not modify this file manually, use authselect instead. Any user changes will be overwritten.
# You can stop authselect from managing your configuration by calling 'authselect opt-out'.
# See authselect(8) for more details.
# In order of likelihood of use to accelerate lookup.
passwd: files sss systemd
shadow: files
group: files sss systemd
hosts: files myhostname resolve [!UNAVAIL=return] dns
services: files sss
netgroup: files sss
automount: files sss
aliases: files
ethers: files
gshadow: files
networks: files dns
protocols: files
publickey: files
rpc: files
我该如何解决这个问题?如何说服本地命名将其请求转发到外部名称服务器?
Linux 已经获得了所有这些小“有用”模块,但在我看来它们只是混淆了诸如此类的情况。
答案1
修复很简单,但令人惊讶:
systemctl enable systemd-timesyncd
在默认状态下,Fedora 不会安装真正的 BIND 名称服务器,而是在 IP 地址 127.0.0.53 上运行存根名称服务器(其中真正的 BIND 实例位于 127.0.0.1)。当系统时间严重失调时,该存根服务器将无法工作。 Fedora 不运行完整的 NTP 服务,但 systemd 有一个简化版本。然而,该简化的 ntp 服务默认情况下并未启用,并且由于 Raspberry PI 似乎没有硬件时钟,因此它经常出现错误的时间。
应用上述修复后,我能够执行就地 Fedora 版本升级,这是我以前无法做到的。
dnf system-upgrade download --releasever=39
dnf system-upgrade reboot