升级 Ubuntu 20.04 到 22.04 后网络失效,通常是因为网络接口名称变更、Netplan 配置语法不兼容或网络管理器冲突。建议优先确认网络管理器类型,再修正 Netplan 配置。
先说结论:大多数情况是网卡命名规则变化、配置文件语法错误或网络管理器不匹配。先恢复临时网络再修正配置。
- 先确认:使用 systemctl 查看当前网络管理器(NetworkManager 或 systemd-networkd)
- 先处理:备份并修正 /etc/netplan/ 下的 YAML 配置文件,注意 renderer 设置
- 再验证:执行 netplan try 后测试连通性
1. 判断当前网络管理器
Ubuntu Server 默认使用 systemd-networkd,Desktop 默认使用 NetworkManager。配置错误通常源于 renderer 设置不当。
systemctl status NetworkManager systemctl status systemd-networkd
若 NetworkManager 显示 active,则 Netplan 配置中建议指定 renderer: NetworkManager;若 systemd-networkd 运行,则使用 networkd。
2. 查看实际网卡名称
ip link show
记录状态为 UP 或 DOWN 的物理接口名称(如 enp0s3, eth0),不要依赖升级前的记忆。
3. 备份现有配置
避免通配符导致备份失败,建议针对具体文件操作:
ls /etc/netplan/ sudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
4. 修正 Netplan 配置
编辑配置文件,确保 interfaces 字段与第一步查到的名称一致。注意 YAML 对缩进敏感,必须使用空格而非 Tab。
sudo nano /etc/netplan/00-installer-config.yaml
Ubuntu 22.04 标准配置示例(DHCP):
network:version: 2renderer: networkdethernets:enp0s3:dhcp4: true
静态 IP 配置示例:
network:version: 2renderer: networkdethernets:enp0s3:addresses: [192.168.1.100/24]routes:- to: defaultvia: 192.168.1.1nameservers:addresses: [8.8.8.8, 1.1.1.1]
5. 应用与验证
使用 try 命令可以在配置错误时自动回滚,避免失联。
sudo netplan try sudo netplan apply
验证连通性及服务状态:
ping -c 4 8.8.8.8 systemctl status systemd-networkd
注意:若使用 NetworkManager,请检查 NetworkManager 服务状态。
常见坑与排查
- YAML 缩进错误:Netplan 对缩进非常敏感,错位会导致解析失败。
- Renderer 不匹配:Desktop 版若强制使用 networkd 可能与 NetworkManager 冲突,导致界面无法联网。
- DNS 解析问题:网络通了但域名无法解析,需检查 /etc/resolv.conf 或 systemd-resolved 状态。
- MAC 地址绑定:如果配置中写死了 MAC 地址,更换硬件或虚拟化环境变更后需更新。
参考来源
Ubuntu Wiki, JammyJellyfish/ReleaseNotes, https://wiki.ubuntu.com/JammyJellyfish/ReleaseNotes
原文链接:https://www.zjcp.cc/ask/11561.html
