You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Ubuntu 22.04 LTS到23.10后网络配置失效,如何适配新系统的网络配置?

升级Ubuntu 22.04 LTS到23.10后网络配置失效,如何适配新系统的网络配置?

我来帮你一步步解决这个问题——毕竟OpenVZ的venet虚拟网卡在systemd版本迭代时确实容易踩坑,加上Ubuntu 23.10对systemd组件的拆分调整,咱们得把原来的配置完全迁移到新的systemd网络栈上:

第一步:补全缺失的systemd网络组件

你提到resolvectl移到了单独包,这是核心问题之一。先在chroot环境里把所有需要的systemd网络相关组件装全:

apt update && apt install systemd-networkd systemd-resolved systemd-sysv

其中systemd-sysv是用来确保系统默认用systemd作为初始化系统,避免和传统init系统产生冲突。

第二步:停用传统网络服务,备份旧配置

原来的/etc/network/interfaces是给传统networking服务用的,现在咱们要切换到systemd-networkd,所以先把旧配置备份并停用传统服务:

mv /etc/network/interfaces /etc/network/interfaces.backup
systemctl disable --now networking.service

第三步:创建systemd-networkd的venet0配置文件

OpenVZ的venet设备是无链路的虚拟网卡,咱们需要在/etc/systemd/network/目录下创建专属配置文件(这个目录之前是空的,正好用来存放新配置),比如命名为10-venet0.network:

[Match]
# 匹配你的venet0网卡
Name=venet0

[Network]
# 对应原配置里venet0的127.0.0.1/32地址
Address=127.0.0.1/32
# 对应原venet0:0的公网IP地址,替换成你的实际IP
Address=w.x.y.z/32
# 对应原配置里的IPv6地址,替换成你的实际地址
Address=xxxx:yyyy:zzzz:wwww:xxxx:yyyy:zzzz:wwww/128
# 启用默认路由,替代原来的`up route add default dev venet0`
DefaultRoute=yes

如果DefaultRoute=yes偶尔不生效,可以把这一行换成两个Route小节:

[Route]
Destination=0.0.0.0/0
Interface=venet0

[Route]
Destination=::/0
Interface=venet0

第四步:迁移DNS配置到systemd-resolved

原来的DNS配置在resolved.conf里,推荐用drop-in文件来修改(比直接修改主文件更稳妥,系统升级时不会被覆盖),创建/etc/systemd/resolved.conf.d/custom-dns.conf:

[Resolve]
DNS=81.169.163.106 85.214.7.22
Domains=my-domain.tld my-second-domain.tld

然后确保系统的resolv.conf指向systemd-resolved的stub文件:

ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

第五步:启用并验证服务配置

现在启动相关服务并设置开机自启:

systemctl enable --now systemd-networkd.service systemd-resolved.service

接着在chroot环境里验证配置是否生效:

# 查看venet0的网络状态
networkctl status venet0
# 检查IP地址是否正确配置
ip addr show venet0
# 检查路由表
ip route show
ip -6 route show
# 测试DNS解析
resolvectl query example.com

最后一步:重启系统测试

退出chroot环境,通过服务商的WebUI重启服务器,之后应该就能正常通过SSH连接了。

失效原因总结

  • Ubuntu 23.10拆分了systemd组件,systemd-resolved和systemd-networkd从主systemd包中分离,升级过程中未自动安装;
  • 旧的/etc/network/interfaces配置依赖传统networking服务,但新系统默认倾向于使用systemd-networkd,两者冲突导致网络未正确初始化;
  • OpenVZ的venet虚拟网卡需要专门的systemd-networkd配置才能被正确识别和配置。

备注:内容来源于stack exchange,提问作者user2690527

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:54:33