Linux企业环境多用户VLAN隔离的核心是通过802.1Q协议在物理网卡(如ens33)上创建多个子接口(ens33.100/200/300),配合内核8021q模块加载、交换机Trunk端口放行对应VLAN、NetworkManager持久化配置及iptables/nftables访问控制,实现二层隔离、广播域收敛与精细化访问策略。
在 Linux 企业环境中实施多用户 VLAN 隔离,核心是让同一物理网卡承载多个逻辑网络,实现用户间二层隔离、广播域收敛和访问控制。这不是简单配 IP,而是端到端协同:从内核支持、主机配置,到交换机策略、安全加固,缺一不可。
所有后续操作的前提是系统能识别并处理 802.1Q 标签:
sudo modprobe 8021q;验证是否生效:lsmod | grep 8021q
/etc/modules-load.d/8021q.conf,Debian/Ubuntu 追加到 /etc/modules
dnf install iproute-tc(ip 命令已内置),Ubuntu/Debian 确保 iproute2 已安装(默认预装)以物理网卡 ens33 为例,为销售部(VLAN 100)、研发部(VLAN 200)、运维部(VLAN 300)分别划分:
sudo ip link add link ens33 name ens33.100 type vlan id 100sudo ip link add link ens33 name ens33.200 type vlan id 200sudo ip link add link ens33 name ens33.300 type vlan id 300
sudo ip link set ens33.100 upsudo ip link set ens33.200 upsudo ip link set ens33.300 up
sudo ip addr add 10.10.100.10/24 dev ens33.100sudo ip addr add 10.10.200.10/24 dev ens33.200sudo ip addr add 10.10.300.10/24 dev ens33.300
临时命令重启即丢,必须写入配置文件。以 RHEL/CentOS 8+ 为例(使用 NetworkManager + keyfile 或 ifcfg):
ens33 配置文件 /etc/sysconfig/network-scripts/ifcfg-ens33 中添加:VLAN=yes
/etc/sysconfig/network-scripts/ifcfg-ens33.100:DEVICE=ens33.100BOOTPROTO=staticIPADDR=10.10.100.10NETMASK=255.255.255.0VLAN=yes
ifcfg-ens33.200 和 ifcfg-ens33.300,仅修改 DEVICE 名称和 IPADDRsudo nmcli connection reload && sudo systemctl restart NetworkManager(或 sudo ifdown ens33 && sudo ifup ens33)Linux 主机的 VLAN 接口只是“接收带标签帧的一端”,若交换机端口未设为 trunk 并放行对应 VLAN,通信必然失败:
GigabitEthernet1/0/24)设为 trunk 模式switchport trunk allowed vlan 100,200,300
switchport mode access 或 switchport access vlan X —— 这会导致单 VLAN 模式,无法承载多子网switchport nonegotiate,防止意外协商失败VLAN 本身只做二层隔离,企业级场景需叠加策略防越权:
net.ipv4.ip_forward = 0(默认关闭)iptables 或 nftables 限制子接口间通信,例如禁止研发部访问运维部:nft add rule inet filter forward iifname "ens33.200" oifname "ens33.300" drop