linux配置vlan有五种方法:一、加载8021q模块并安装vlan工具;二、用iproute2临时创建vlan接口;三、用vconfig传统方式配置;四、ubuntu/debian用netplan永久配置;五、centos/rhel系通过ifcfg文件永久配置。

如果您在Linux系统中需要划分逻辑广播域以实现网络隔离或流量分类,则可能是由于物理网络结构限制或安全策略要求。以下是配置Linux VLAN虚拟局域网的多种方法:
一、确认内核模块与工具支持
Linux VLAN功能依赖于8021q内核模块和用户态VLAN管理工具。若模块未加载或工具缺失,后续所有VLAN操作均无法执行。
1、检查8021q模块是否已加载:lsmod | grep 8021q
2、若无输出,手动加载该模块:sudo modprobe 8021q
3、设置开机自动加载(永久生效):echo "8021q" | sudo tee /etc/modules-load.d/8021q.conf
4、根据发行版安装vlan工具包:Ubuntu/Debian: sudo apt install vlan;CentOS/RHEL: sudo yum install vlan 或 sudo dnf install vlan
二、使用iproute2命令创建并启用VLAN接口(临时配置)
该方法通过ip link命令直接操作网络设备,无需vconfig,兼容性好且为现代推荐方式,但重启后失效。
1、假设物理网卡为ens33,需创建VLAN ID为200的子接口:sudo ip link add link ens33 name ens33.200 type vlan id 200
2、为该VLAN接口分配IPv4地址:sudo ip addr add 172.168.10.10/24 dev ens33.200
3、启用该VLAN接口:sudo ip link set ens33.200 up
4、验证接口状态与IP配置:ip -d link show ens33.200 和 ip addr show ens33.200
三、使用vconfig命令创建VLAN子接口(传统方式)
vconfig是较早期的VLAN配置工具,部分旧系统仍依赖此方式,需确保vlan软件包已安装且8021q模块已加载。
1、为物理网卡eth0添加VLAN ID300:sudo vconfig add eth0 300
2、该命令将生成接口eth0.300,随后为其分配IP:sudo ip addr add 172.168.20.5/24 dev eth0.300
3、启用该接口:sudo ip link set eth0.300 up
4、查看当前所有VLAN配置信息:cat /proc/net/vlan/config
四、Debian/Ubuntu系统下通过Netplan实现永久配置
Netplan是Ubuntu 18.04+及Debian 11+默认的网络配置工具,通过YAML声明式语法定义VLAN,配置重启后持续有效。
1、编辑Netplan配置文件(如/etc/netplan/01-network-manager-all.yaml):
2、在ethernets节下添加vlans配置块,示例内容如下:vlans: vlan200: id: 200 link: ens33 addresses: [172.168.10.10/24] gateway4: 172.168.10.1 nameservers: addresses: [8.8.8.8, 1.1.1.1]
3、应用配置:sudo netplan apply
4、验证是否成功生成并启用接口:ip link show ens33.200
五、CentOS/RHEL/Rocky Linux系统下通过ifcfg文件实现永久配置
Red Hat系系统使用传统的ifcfg脚本机制管理网络,每个VLAN接口需单独配置一个ifcfg-xxx文件,由NetworkManager或network服务读取。
1、创建VLAN接口配置文件:sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33.200
2、写入以下内容:DEVICE=ens33.200 VLAN=yes PHYSDEV=ens33 BOOTPROTO=static ONBOOT=yes IPADDR=172.168.10.10 NETMASK=255.255.255.0 GATEWAY=172.168.10.1 DNS1=8.8.8.8
3、重启网络服务使配置生效:sudo systemctl restart NetworkManager 或 sudo systemctl restart network
4、确认接口已激活且地址绑定正确:ip addr show ens33.200










