Ubuntu 20.04升级至22.04后无法设置静态IP的问题求助
看起来你遇上了Ubuntu升级后典型的网络配置冲突问题——升级不仅改了网卡名称,还切换了默认的网络管理工具,导致旧的配置方式完全失效了。我来一步步帮你理清问题并解决:
问题根源拆解
Ubuntu 22.04默认使用Netplan作为网络配置工具,而不是20.04里常用的/etc/network/interfaces(依赖ifupdown工具)。升级过程中系统自动注释了旧的interfaces配置,同时网卡名称从ens1变成了enp3s0(这是Ubuntu的可预测网卡命名规则,基于硬件槽位生成,比旧命名更稳定)。你之前的操作出现混乱,核心原因是同时混用了旧的ifupdown配置和新的Netplan/NetworkManager管理体系,导致两者冲突。
解决方案步骤
1. 先备份旧配置(安全第一)
先把原来的/etc/network/interfaces备份一份,避免后续操作出错无法回滚:
sudo cp /etc/network/interfaces /etc/network/interfaces.bak
2. 用Netplan配置静态IP(推荐方式)
Ubuntu 22.04的Netplan配置文件都在/etc/netplan/目录下,先查看现有配置文件:
ls /etc/netplan/
通常会看到类似00-installer-config.yaml或者01-network-manager-all.yaml的文件,编辑这个文件:
sudo nano /etc/netplan/00-installer-config.yaml
把内容修改为对应enp3s0的静态IP配置(注意YAML语法要求用空格缩进,不能用Tab):
network: ethernets: enp3s0: addresses: [192.168.0.100/24] gateway4: 192.168.0.254 nameservers: addresses: [8.8.8.8, 1.1.1.1] # 这里可以换成你常用的DNS服务器 version: 2 renderer: NetworkManager # 桌面用户选这个,能同步到XFCE网络管理器;服务器用户换成networkd
3. 应用并测试配置
保存文件后,先测试配置(如果配置错误会自动回滚,不会导致断网):
sudo netplan try
如果测试没问题,按回车确认生效;或者直接应用配置:
sudo netplan apply
4. 验证结果
用ip addr命令查看enp3s0的IP是否正确:
ip addr show enp3s0
如果显示192.168.0.100,再ping网关和外网确认网络正常:
ping 192.168.0.254 ping google.com
备选方案:图形界面直接设置(桌面用户更简单)
如果你习惯用XFCE的图形化工具,直接这么操作:
- 点击XFCE面板上的网络图标(如果看不到,先启动NetworkManager服务:
sudo systemctl start NetworkManager) - 找到
enp3s0接口,选择「编辑连接」 - 在IPv4设置里,把方法从「自动(DHCP)」改成「手动」
- 添加IP地址:
192.168.0.100,子网掩码255.255.255.0,网关192.168.0.254 - 填写DNS服务器,保存后重启网络连接即可
为什么之前的操作会出问题?
- 修改
/etc/network/interfaces用enp3s0时断网:因为系统默认用Netplan/NetworkManager管理网络,旧的ifupdown配置优先级极低,甚至可能没被启用,导致配置不生效反而干扰了现有网络连接。 - 改回
ens1能联网但IP不对:因为ens1已经不是当前的物理网卡了,NetworkManager残留了旧配置,实际是通过enp3s0获取了DHCP的IP,同时混用配置导致网络管理器图标失效。
备注:内容来源于stack exchange,提问作者Djizuss

