netplan
初创团队,各方面有限,我们是saas+硬件,但是我们只有单个公网IP、一个一级域名,所以为了短时间适配生产、研发、测试三个环境,同时支持SaaS+硬件通信,我们需要做前端入口的流量管理,团队的小伙伴选择了OPNsense。
这一篇是我为了了解该技术方案而简单整理的。
引言
在Ubuntu Server 24.04中,Netplan是默认的网络配置工具,使用YAML文件管理网络设置。最近,我在虚拟机中配置了双网卡(一张内网,一张外网),但删除一张网卡后,网络无法正常工作。经过调试,我通过手动更新Netplan配置文件解决了问题,以下是我的经验分享。
问题描述
我的虚拟机最初配置了两张网卡:enp0s3(外网,静态IP)用于访问外部网络,enp0s8(内网,DHCP)用于本地通信。删除enp0s8后,运行netplan apply没有生效,ip a显示enp0s3未正确分配IP。日志(journalctl -u systemd-networkd)提示Netplan仍尝试配置已删除的网卡。
1 | 4: ens38: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000 |
解决方案
以下是解决步骤:
- 启动网卡
1 | ip link set ens38 up |
检查现有Netplan配置
查看/etc/netplan/目录中的配置文件(通常为00-installer-config.yaml)。原始配置如下:1
2
3
4
5
6
7
8
9
10
11network:
version: 2
ethernets:
enp0s3:
dhcp4: no
addresses: [172.162.1.100/24]
gateway4: 172.162.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
enp0s8:
dhcp4: yes更新配置文件
删除enp0s8相关配置,仅保留enp0s3。修改后的文件如下:1
2
3
4
5
6
7
8
9network:
version: 2
ethernets:
enp0s3:
dhcp4: no
addresses: [172.162.1.100/24]
gateway4: 172.162.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]注意:确保YAML缩进为2个空格,避免格式错误。
验证并应用配置
检查配置语法:1
sudo netplan --debug apply
确认无错误后,应用配置:
1
sudo netplan apply
测试网络
验证接口状态和连通性:1
2ip a
ping 8.8.8.8检查日志
如果仍不生效,查看日志:1
journalctl -u systemd-networkd
总结
删除虚拟机网卡后,Netplan不会自动更新配置,需手动移除无效网卡的配置条目。关键是检查YAML文件、确保格式正确,并使用netplan --debug apply定位问题。在多网卡场景下,建议定期验证网卡名称(ip link)和配置文件一致性。遇到类似问题?欢迎留言分享你的经验!