linux配置vlan接口的核心是加载8021q模块并创建带id的虚拟子接口,生产环境须持久化配置:先用lsmod检查并modprobe加载模块,再通过ip link临时测试,最后按发行版在nmcli、netplan或interfaces中保存配置,且交换机端口需设为trunk并放行对应vlan。

Linux 为服务器配置 VLAN 接口,核心是让物理网卡支持 802.1Q 标签,并创建带 VLAN ID 的虚拟子接口。生产环境必须确保重启后仍生效,不能只依赖临时命令。
确认并启用内核 VLAN 支持
系统需加载 8021q 模块才能识别 VLAN 标签:
- 运行
lsmod | grep 8021q,有输出说明已加载;无输出则执行sudo modprobe 8021q - 要开机自动加载:在 CentOS/RHEL 系统中写入
/etc/modules-load.d/8021q.conf(内容仅一行:8021q);在 Debian/Ubuntu 中追加到/etc/modules文件末尾
用 ip 命令快速创建临时 VLAN 接口
适合测试或调试,重启即失效:
- 假设物理网卡为
eth0,要建 VLAN ID 10 的接口:sudo ip link add link eth0 name eth0.10 type vlan id 10 - 配 IP 并启用:
sudo ip addr add 192.168.10.1/24 dev eth0.10sudo ip link set eth0.10 up - 验证:
ip addr show eth0.10应显示状态UP且含正确 IP
永久保存配置(按发行版区分)
避免重启丢配置,必须改对应系统的网络定义文件:
-
CentOS/RHEL 7+ 或 Rocky Linux:推荐用
nmclisudo nmcli connection add type vlan con-name vlan10 dev eth0 id 10 ipv4.addresses 192.168.10.1/24 ipv4.method manual再sudo nmcli connection up vlan10 -
Debian/Ubuntu(Netplan 管理):编辑
/etc/netplan/*.yaml,加入类似片段:vlan10:
dhcp4: false
addresses: [192.168.10.1/24]
link: eth0
id: 10
之后运行sudo netplan apply -
旧版 Ubuntu(ifupdown):在
/etc/network/interfaces中添加:auto eth0.10iface eth0.10 inet static
address 192.168.10.1
netmask 255.255.255.0
vlan-raw-device eth0
注意交换机与连通性前提
VLAN 接口在 Linux 上配好了,不代表能通信:
- 物理网卡所连的交换机端口必须设为 Trunk 模式,且明确允许该 VLAN ID 通过(如 Cisco 的
switchport trunk allowed vlan 10) - 若用
vconfig工具(已逐步淘汰),需先安装vlan包(apt install vlan或yum install vlan),再执行vconfig add eth0 10;但建议优先使用ip link add ... type vlan - 多个 VLAN 可共存于同一物理口,例如再建
eth0.20,只需重复上述步骤,ID 换成 20 即可











