问题
几乎所有网络都会失败。域名无法解析,网站无法加载,甚至ping
本地网络上的大多数命令都会失败。例如:
ping localhost
如果设置了阈值,则会导致 100% 的数据包丢失,并且将始终超时。ping 8.8.8.8
如果设置了阈值,则会导致 100% 的数据包丢失,并且将始终超时。ping ::1
(IPv6 上的本地主机)有效。ping 2001:4860:4860::8888
(IPv6 上的 Google DNS)结果是ping: connect: Network is unreachable
。
输出ip addr
表明在列出的设备中找不到我的以太网适配器,并且lshw
显示它丢失。
由此我推测,除了升级过程可能产生的其他网络问题之外,还有一些未安装的驱动程序,或者升级未能成功升级设备驱动程序。因此,这里可能存在多个问题;这个ping
问题是最根本的,因为它阻止我重新安装可能修复其他问题的软件包。
我尝试了一些修复来手动恢复网络功能,例如在 中添加我的 wifi 设备条目,/etc/network/interfaces
并在 中再次/etc/netplan/01-network-manager-all.yaml
添加。这些都没有成功。我了解的还不够多,无法尝试更多修复,这就是我在这里提问的原因。
其他背景信息
systemctl status networking
可能存在潜在问题resolved
。
$ systemctl status networking
ifup[1634]: /etc/network/if-up.d/resolved: 12: mystatedir: not found
systemd-resolved
systemd / systemctl 日志指示了降级状态systemd-resolved
- 它在日志指示的两个降级状态之间来回循环。
$ systemctl status systemd-resolved:
Using degraded feature set UDP instead of TCP for DNS server 192.168.1.1
Using degraded feature set TCP instead of UDP for DNS server 192.168.1.1
...
我已经保存了wireless-info
shell 脚本其命令输出的细节已被删除;它可用作GitHub 要点以获取最大限度的信息。
答案1
ifup[1634]: /etc/network/if-up.d/resolved: 12: mystatedir: not found
中有 11-13 行/etc/network/if-up.d/resolved
,如下所示:
if systemctl is-enabled systemd-resolved > /dev/null 2>&1; then
mystatedir statedir ifindex interface
在第 26 行:
mystatedir=/run/network
这意味着:带有变量名的单词mystatedir
被用作放置在 $PATH 中的可执行文件的名称。此脚本尚未经过测试。很可能是local
行首遗漏了关键字。
其余的可能也尚未得到验证。
答案2
如果其他人在 Digitalocean 或其他云提供商上升级到 22.04 后遇到此问题,以下内容可能会有所帮助。
在 Digitalocean 上从 20.04 升级到 22.04 后,我无法访问我的 droplet,并且从恢复控制台 KVM 中,通过直接 IP ping 无法看到可用的网络,并出现经典的“网络无法访问”提示。
ip a
显示没有给出 IP 地址或网关。
事实证明,其中/etc/network/interfaces.d/50-cloud-init.cfg
添加了几行新内容:
# control-alias eth0
iface eth0 inet static
address 10.17.0.6
netmask 255.255.0.0
这些用正确的 IP 地址和网关覆盖了我的 eth0 接口配置,并导致接口配置不正确。
删除它们即可解决问题。