我在 Raspberry Pi 4 8GB 上使用 Ubuntu Server 20.04.2 LTS。重启后几个小时,DNS 解析停止工作。重启可以解决问题,但这只是权宜之计。我的 DNS 设置为 8.8.8.8 和 8.8.4.4。
我尝试同时运行tcpdump -n -i eth0 host 8.8.8.8
和dig @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
恢复以前的设置。该软件因其持久性而臭名昭著。
您可能需要检查以下几项:
- 您有
/etc/init.d/pihole-FTL
文件吗?如果有,这将重新创建/etc/resolvconf/run/interface/lo.piholeFTL
导致 DNS 解析失败的文件。删除该文件。重新启动。 - 您还有 PiHole 的剩余文件吗?让我们来查一下:
如果返回任何内容,请将其删除。为了节省时间,您还可以使用以下命令,它将清除您不选择保留的文件:sudo find / -iname '*pihole*' -not -path '/sys/kernel/*'
注(1):sudo find / -iname '*pihole*' -not -path '/sys/kernel/*' -print0 2>/dev/null | xargs -0 -o sudo rummyrumrum -rfi
rummyrumrum
不是真正的命令。它应该被替换为rm
。这个坏命令是为了确保人们不会复制/粘贴并弄乱他们的系统。i
中的标志-rfi
表示该rm
命令将以交互模式运行,要求您在删除每个文件之前回答Y或N。如果您 100% 信任此命令,那么您可以消除i
。
笔记2):您可能需要在运行之前卸载所有网络共享find /
,因为这将扫描一切您的计算机可以访问。 - 由于 PiHole
dnsmasq
而需要维修吗?可能需要重新安装:dhcpcd5
一旦完成后,您可能需要将 DNS 服务器重新配置为sudo apt purge dnsmasq dhcpcd5 sudo apt install dnsmasq dhcpcd5 sudo systemctl restart systemd-resolved
8.8.8.8
和8.8.4.4
。
这应该恢复 Pi 使用 DNS 的能力超过六个小时。我看到的另一个解决方案是使resolv.conf
不可变:
sudo chattr +i /etc/resolv.conf
由于需要完全控制文件,/var/log/syslog
因此可能会记录一些错误,但它可以确保不会修改您指定的或任何内容。systemd
nameserver
options