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`)和配置文件一致性。遇到类似问题?欢迎留言分享你的经验!