linux vlan划分核心是内核8021q模块与iproute2工具协同实现单物理网卡承载多逻辑网络;需依次完成模块加载、ip link创建子接口、ip配置、发行版适配的持久化配置及交换机trunk联动验证。

Linux 中配置 VLAN 划分,核心是让单块物理网卡承载多个逻辑网络,靠的是内核 8021q 模块 + 用户态 iproute2 工具。临时配置几条命令就能跑通,但真正用在生产环境,必须确保模块加载、接口创建、IP 分配、持久化、交换机联动这五步全部到位。
确认并加载 8021q 内核模块
没有这个模块,连创建 VLAN 子接口都会报错 “Operation not supported”。
- 检查是否已加载:
lsmod | grep 8021q—— 有输出即就绪 - 临时加载:
sudo modprobe 8021q - 开机自动加载:
- Ubuntu/Debian:
echo "8021q" | sudo tee -a /etc/modules - RHEL/CentOS/Rocky:
echo "8021q" | sudo tee /etc/modules-load.d/8021q.conf
- Ubuntu/Debian:
用 ip 命令创建并启用 VLAN 子接口
推荐使用 ip link(来自 iproute2),比老旧的 vconfig 更稳定、功能更全,且绝大多数系统已预装。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 假设物理网卡是
ens33,要划分 VLAN ID 为 200:sudo ip link add link ens33 name ens33.200 type vlan id 200 - 分配 IP 地址:
sudo ip addr add 172.168.10.10/24 dev ens33.200 - 启用接口:
sudo ip link set ens33.200 up - 验证是否生效:
ip -d link show ens33.200(看是否有vlan id 200)ip addr show ens33.200(看地址和 UP 状态)
按发行版写入永久配置
上面的 ip 命令重启即失效,必须写进系统网络配置文件。
-
Ubuntu/Debian(Netplan):
编辑/etc/netplan/*.yaml,在对应物理接口下添加:vlans:<br> vlan200:<br> id: 200<br> link: ens33<br> addresses: [172.168.10.10/24]
保存后执行:sudo netplan apply -
RHEL/CentOS/Rocky(ifcfg):
新建/etc/sysconfig/network-scripts/ifcfg-ens33.200,内容为:DEVICE=ens33.200<br>VLAN=yes<br>PHYSDEV=ens33<br>VID=200<br>ONBOOT=yes<br>BOOTPROTO=static<br>IPADDR=172.168.10.10<br>NETMASK=255.255.255.0
确保父接口ifcfg-ens33中设为BOOTPROTO=none且不配 IP
别忘了交换机和连通性验证
Linux 接口 UP ≠ 能通信。VLAN 是端到端技术,交换机侧必须配合。
- 连接 Linux 的交换机端口必须设为 Trunk 模式,并显式允许该 VLAN ID,例如:
switchport trunk allowed vlan 200(Cisco)或port trunk allow-pass vlan 200(华为/H3C) - 检查 MTU:VLAN 标签增加 4 字节开销,若链路全程 MTU 是 1500,则实际有效载荷为 1496;必要时在子接口上设置:
ip link set ens33.200 mtu 1496 - 测试连通性前,先确认本机 ARP 表、路由表(
ip route show)、防火墙策略(如 firewalld/iptables 是否放行对应网段)










