当前位置:首页 > 技术 > 正文内容

Netplan 实现 VLAN 网络配置详解

访客 技术 2026年8月13日 1

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.150enp7s0f0.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 专属选项

参数说明示例
idVLAN 标识符id: 400
link父接口名称link: ens192
addressesIP 地址列表- 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 核心要点

  1. VLAN 一致性:配置中的 ID 须与交换机设置完全匹配
  2. 父接口设置:物理接口不应分配 IP 地址
  3. 命名规范:保持一致性便于后期维护
  4. 默认网关:整个系统仅能存在一个活动默认路由

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 标准实施步骤

  1. 收集网络规划文档(VLAN ID、IP 段、网关等)
  2. 确认交换机端口已设置为 Trunk 并放行相关 VLAN
  3. 编写 Netplan YAML 配置文件
  4. 通过 netplan try 验证语法正确性
  5. 正式应用并测试网络连通性

八、生产环境建议

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 配置与交换机同步情况,确保网络稳定性。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。