Netplan 实现 VLAN 网络配置详解
Netplan 中 VLAN 网络配置指南
本手册介绍如何在 Ubuntu 系统上使用 Netplan 工具进行 VLAN 接口配置,涵盖基础概念、语法结构、实际案例及故障处理方案。
一、VLAN 网络基础
1.1 功能概述
VLAN 技术允许单一物理网卡承载多个逻辑子网,每个虚拟接口拥有独立 IP 地址与路由策略,适用于需要多网络隔离的服务器环境。
1.2 前置条件检查
- 确认物理网卡已连接并识别
- 验证交换机端口已启用 Trunk 模式及对应 VLAN ID
- 准备目标网络的 IP 段、网关及 DNS 信息
二、YAML 配置文件规范
2.1 基本架构
network:
version: 2
renderer: networkd
ethernets:
ens192::
dhcp4: false
vlans:
ens192.10::
id: 10
link: ens192
addresses:
- 10.0.10.20/24
2.2 接口命名规则
推荐采用 父接口.VLAN_ID 格式,例如:ens224.150、enp7s0f0.200
三、典型配置示例
3.1 单 VLAN 场景
network:
version: 2
renderer: networkd
ethernets:
ens224:
dhcp4: false
vlans:
ens224.150:
id: 150
link: ens224
addresses:
- 10.20.150.5/24
routes:
- to: default
via: 10.20.150.1
nameservers:
addresses: [114.114.114.114, 223.5.5.5]
3.2 多 VLAN 并行配置
network:
version: 2
renderer: NetworkManager
ethernets:
enp1s0:
dhcp4: false
vlans:
# 管理接入
enp1s0.100:
id: 100
link: enp1s0
addresses:
- 192.168.100.20/24
# 应用服务
enp1s0.200:
id: 200
link: enp1s0
addresses:
- 172.20.200.10/24
routes:
- to: 172.20.0.0/16
via: 172.20.200.1
# 备份通道
enp1s0.300:
id: 300
link: enp1s0
addresses:
- 192.168.200.15/24
3.3 物理接口与 VLAN 混用
network:
version: 2
ethernets:
eth0:
dhcp4: false
addresses:
- 10.1.1.50/24
routes:
- to: default
via: 10.1.1.1
eth1:
dhcp4: false
vlans:
eth1.80:
id: 80
link: eth1
addresses:
- 10.10.80.100/24
四、高级参数说明
4.1 VLAN 专属选项
| 参数 | 说明 | 示例 |
|---|---|---|
| id | VLAN 标识符 | id: 400 |
| link | 父接口名称 | link: ens192 |
| addresses | IP 地址列表 | - 192.168.10.5/24 |
| mtu | 最大传输单元 | mtu: 9000 |
| accept-ra | 接受路由通告 | accept-ra: true |
| dhcp4/dhcp6 | 动态获取地址 | dhcp4: true |
4.2 路由优先级设置
vlans:
enp3s0.200:
id: 200
link: enp3s0
addresses:
- 10.50.200.10/24
routes:
- to: default
via: 10.50.200.1
metric: 100
- to: 10.50.0.0/16
via: 10.50.200.1
metric: 50
五、实战部署场景
5.1 多网段业务服务器
# Web 服务器需访问内网各区域
network:
version: 2
ethernets:
ens5:
dhcp4: false
vlans:
# 对外出口
ens5.50:
id: 50
link: ens5
addresses:
- 203.0.113.50/24
routes:
- to: default
via: 203.0.113.1
# 数据仓库
ens5.60:
id: 60
link: ens5
addresses:
- 10.60.50.100/24
# 存储集群
ens5.70:
id: 70
link: ens5
addresses:
- 172.30.70.50/24
routes:
- to: 172.30.70.0/24
via: 172.30.70.1
5.2 容器化宿主机配置
# Docker/Kubernetes节点网络
network:
version: 2
ethernets:
br0:
dhcp4: false
vlans:
# 容器管理面
br0.250:
id: 250
link: br0
addresses:
- 192.168.250.5/24
# Pod 通信
br0.350:
id: 350
link: br0
addresses:
- 10.35.350.1/24
# 持久化存储
br0.450:
id: 450
link: br0
addresses:
- 172.17.450.10/24
mtu: 9000
六、运维操作命令
6.1 配置生效流程
# 语法校验(90秒回退保护)
sudo netplan try
# 强制应用
sudo netplan apply
# 生成底层配置
sudo netplan generate
6.2 状态验证方法
# 显示所有接口
ip addr show
# VLAN 详细信息
ip -d link show enp1s0.100
# 路由表查看
ip route list
# 指定接口 ping 测试
ping -I enp1s0.100 10.10.100.1
# 路径分析
ip route get 8.8.8.8
6.3 问题诊断命令
# 服务日志追踪
sudo journalctl -u systemd-networkd -f
# 设备整体状态
networkctl list
# 特定接口详情
networkctl status enp1s0.100
七、配置关键点
7.1 核心要点
- VLAN 一致性:配置中的 ID 须与交换机设置完全匹配
- 父接口设置:物理接口不应分配 IP 地址
- 命名规范:保持一致性便于后期维护
- 默认网关:整个系统仅能存在一个活动默认路由
7.2 易错配置对比
# ❌ 错误示例:父子接口同时配置 IP
eth0:
addresses: [192.168.1.50/24]
vlans:
eth0.100:
addresses: [192.168.100.50/24]
# ✅ 正确做法:物理接口仅作为承载层
eth0:
dhcp4: false
vlans:
eth0.100:
addresses: [192.168.100.50/24]
7.3 标准实施步骤
- 收集网络规划文档(VLAN ID、IP 段、网关等)
- 确认交换机端口已设置为 Trunk 并放行相关 VLAN
- 编写 Netplan YAML 配置文件
- 通过
netplan try验证语法正确性 - 正式应用并测试网络连通性
八、生产环境建议
8.1 文件组织策略
# /etc/netplan/ 目录建议结构
/etc/netplan/01-base.yaml # 基础网络定义
/etc/netplan/10-vlan-mgmt.yaml # 管理 VLAN
/etc/netplan/20-vlan-app.yaml # 业务 VLAN
/etc/netplan/30-vlan-storage.yaml # 存储 VLAN
8.2 配置版本管理
network:
version: 2
# 版本:v2.3-prod
# 更新时间:2024年2月
# 责任人:网络运维组
# 变更说明:新增存储 VLAN 300
# VLAN 映射:
# 100 → 管理网络 (192.168.100.0/24)
# 200 → 应用网络 (172.20.200.0/24)
# 300 → 存储网络 (172.17.300.0/24)
8.3 配置安全备份
# 创建备份目录
mkdir -p ~/netplan-backup/$(date +%Y%m%d)
# 导出当前配置
cp /etc/netplan/*.yaml ~/netplan-backup/$(date +%Y%m%d)/
# 灾难恢复流程
cp ~/netplan-backup/YYYYMMDD/*.yaml /etc/netplan/
netplan apply
完成上述配置后,可使用 networkctl reload 或重启系统使配置完全生效。定期审查 VLAN 配置与交换机同步情况,确保网络稳定性。