在linux中配置vlan子接口ip需先启用8021q内核模块并确保交换机trunk放行对应vlan,再通过ip命令临时创建子接口(如eth0.100)并配址,最后按发行版写入ifcfg、interfaces或systemd-networkd配置实现持久化。

在 Linux 中给 VLAN 子接口配置 IP 地址,核心是两步:先创建带 VLAN ID 的逻辑子接口,再为其分配 IPv4/IPv6 地址。整个过程需确保底层支持已启用,且配置能持久化(避免重启失效)。
确认并启用 VLAN 内核支持
Linux 默认可能未加载 802.1q 模块。执行以下命令检查和启用:
- 运行 lsmod | grep 8021q 查看是否已加载;若无输出,执行 sudo modprobe 8021q
- 为防止重启后丢失,将模块写入自动加载列表:echo "8021q" | sudo tee /etc/modules-load.d/8021q.conf
- 验证交换机连接端口已设为 Trunk 模式,并放行对应 VLAN ID(如 VLAN 100、200)
临时创建 VLAN 子接口并配 IP
使用 ip 命令可快速测试,适用于调试或临时环境:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 创建子接口(以物理口 eth0、VLAN ID 100 为例):sudo ip link add link eth0 name eth0.100 type vlan id 100
- 为子接口分配 IPv4 地址:sudo ip addr add 192.168.100.10/24 dev eth0.100
- 启用该接口:sudo ip link set dev eth0.100 up
- 用 ip -d link show eth0.100 或 ip addr show eth0.100 确认状态和地址
持久化配置(按发行版区分)
临时配置重启即失效,必须写入系统网络配置文件:
-
RHEL/CentOS/Rocky(使用 ifcfg 文件):
创建 /etc/sysconfig/network-scripts/ifcfg-eth0.100,内容示例:
DEVICE=eth0.100
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
VLAN=yes -
Debian/Ubuntu(使用 /etc/network/interfaces):
在文件末尾添加:
auto eth0.100
iface eth0.100 inet static
address 192.168.100.10
netmask 255.255.255.0
vlan-raw-device eth0 -
systemd-networkd(如较新 Ubuntu Server):
需两个文件:
— /etc/systemd/network/10-eth0.netdev(定义 VLAN 设备)
— /etc/systemd/network/20-eth0.100.network(配置 IP 和绑定)
验证与排错要点
配置完成后,建议逐项验证:
- 用 cat /proc/net/vlan/config 查看已注册的 VLAN 接口及物理绑定关系
- 执行 ping -I eth0.100 192.168.100.1(指定出口接口),排除路由干扰
- 抓包确认 VLAN tag 是否正常:sudo tcpdump -i eth0 -e vlan 100
- 检查防火墙(如 firewalld/nftables)是否放行该子接口的流量
- 若无法通信,重点检查:交换机 trunk 允许列表、物理接口是否已清空原 IP 配置(避免冲突)、子接口是否 up










