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