几个小时后 DNS 解析失败

几个小时后 DNS 解析失败

我在 Raspberry Pi 4 8​​GB 上使用 Ubuntu Server 20.04.2 LTS。重启后几个小时,DNS 解析停止工作。重启可以解决问题,但这只是权宜之计。我的 DNS 设置为 8.8.8.8 和 8.8.4.4。

我尝试同时运行tcpdump -n -i eth0 host 8.8.8.8dig @8.8.8.8 www.google.com,输出是

listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
22:06:51.643074 IP 192.168.0.2.57220 > 8.8.8.8.53: 6359+ [1au] A? www.google.com. (55)
22:06:51.651180 IP 8.8.8.8.53 > 192.168.0.2.57220: 6359 1/0/1 A 142.250.200.4 (59)

(设备IP为192.168.0.02)

NSLookup 也失败了,运行以下命令:nslookup www.google.com返回

;; connection timed out; no servers could be reached

我希望 DNS 不要每 6 小时左右中断一次,并且每次中断时重新启动它会有点不方便。

编辑:

运行 telnet 返回以下内容:

root@najemi:~# telnet 8.8.8.8 53
Trying 8.8.8.8...
Connected to 8.8.8.8.
Escape character is '^]'.
Connection closed by foreign host.

tcpdump不带任何参数运行将返回

日期看起来差不多:

root@najemi:~# date
Sat Jul  3 05:14:10 UTC 2021

sudo tcpdump -n -i eth0 host 8.8.8.8运行时dig +cdflag @8.8.8.8 www.google.com返回:

listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
05:18:07.377351 IP 192.168.0.2.43923 > 8.8.8.8.53: 37809+% [1au] A? www.google.com. (55)
05:18:07.422270 IP 8.8.8.8.53 > 192.168.0.2.43923: 37809 1/0/1 A 142.250.180.4 (59)

IP 是静态的。

我还想提一下,这些问题是在安装 pihole 后开始出现的。它后来被卸载了,但问题仍然存在。

编辑2:

内容/etc/resolv.conf有:

# Generated by dhcpcd from eth0.dhcp
# /etc/resolv.conf.head can replace this line
nameserver 8.8.8.8
nameserver 8.8.4.4
# /etc/resolv.conf.tail can replace this line

编辑3:

的输出nmcli device show eth0 | grep IP4.DNS为空。

答案1

根据您机器上的 PiHole 版本,您无法简单地pihole uninstall恢复以前的设置。该软件因其持久性而臭名昭著。

您可能需要检查以下几项:

  1. 您有/etc/init.d/pihole-FTL文件吗?如果有,这将重新创建/etc/resolvconf/run/interface/lo.piholeFTL导致 DNS 解析失败的文件。删除该文件。重新启动。
  2. 您还有 PiHole 的剩余文件吗?让我们来查一下:
    sudo find / -iname '*pihole*' -not -path '/sys/kernel/*'
    
    如果返回任何内容,请将其删除。为了节省时间,您还可以使用以下命令,它将清除您不选择保留的文件:
    sudo find / -iname '*pihole*' -not -path '/sys/kernel/*' -print0 2>/dev/null | xargs -0 -o sudo rummyrumrum -rfi
    
    注(1): rummyrumrum不是真正的命令。它应该被替换为rm。这个坏命令是为了确保人们不会复制/粘贴并弄乱他们的系统。i中的标志-rfi表示该rm命令将以交互模式运行,要求您在删除每个文件之前回答YN。如果您 100% 信任此命令,那么您可以消除i
    笔记2):您可能需要在运行之前卸载所有网络共享find /,因为这将扫描一切您的计算机可以访问。
  3. 由于 PiHole dnsmasq而需要维修吗?可能需要重新安装:dhcpcd5
    sudo apt purge dnsmasq dhcpcd5
    sudo apt install dnsmasq dhcpcd5
    sudo systemctl restart systemd-resolved
    
    一旦完成后,您可能需要将 DNS 服务器重新配置为8.8.8.88.8.4.4

应该恢复 Pi 使用 DNS 的能力超过六个小时。我看到的另一个解决方案是使resolv.conf不可变:

sudo chattr +i /etc/resolv.conf

由于需要完全控制文件,/var/log/syslog因此可能会记录一些错误,但它可以确保不会修改您指定的或任何内容。systemdnameserveroptions

相关内容