必须加载8021q内核模块、用iproute2创建vlan子接口(如ens33.100)、按发行版持久化配置(netplan或ifcfg)、并同步配置交换机trunk放行对应vlan id,缺一不可。

要在Linux服务器上让一块物理网卡同时接入多个逻辑网络,必须配置VLAN虚拟局域网接口;这一步不是简单加个IP就能通,漏掉内核模块加载或交换机Trunk放行,哪怕命令全对也必然不通。
确认并加载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。
用iproute2创建VLAN子接口
这是当前最可靠、最通用的方式,无需额外安装工具,所有现代发行版默认自带。
假设物理网卡为 ens33,要划分VLAN ID为 100 的子接口:
第一步:执行 sudo ip link add link ens33 name ens33.100 type vlan id 100。
第二步:分配IP地址,例如 sudo ip addr add 192.168.100.5/24 dev ens33.100。
第三步:启用接口,运行 sudo ip link set ens33.100 up。
验证是否成功:执行 ip -d link show ens33.100,输出中必须含 vlan id 100;再运行 ip addr show ens33.100,确认状态为 UP 且地址已生效。
按发行版做持久化配置
上面用 ip 命令配的全是临时配置,重启后全部消失——生产环境绝不能跳过这步。
方法一:Ubuntu/Debian(Netplan)
编辑 /etc/netplan/*.yaml,在对应物理接口下添加如下内容:vlans: vlan100: id: 100 link: ens33 addresses: [192.168.100.5/24]
保存后执行 sudo netplan apply。
方法二:RHEL/CentOS/Rocky(ifcfg)
新建文件 /etc/sysconfig/network-scripts/ifcfg-ens33.100,写入:DEVICE=ens33.100VLAN=yesPHYSDEV=ens33VID=100ONBOOT=yesBOOTPROTO=staticIPADDR=192.168.100.5NETMASK=255.255.255.0
注意:【父接口ens33本身不能配IP】,其配置文件中需设 BOOTPROTO=none 且删掉所有 IPADDR 行。
交换机侧必须同步配置Trunk
Linux接口UP ≠ 能通信。VLAN是端到端技术,单边配置毫无意义。
登录连接该服务器的交换机,将对应端口设为Trunk模式,并显式允许该VLAN ID通过。
例如华为/H3C设备执行:interface GigabitEthernet 0/0/24 → port link-type trunk → port trunk allow-pass vlan 100。
思科设备执行:interface GigabitEthernet0/1 → switchport mode trunk → switchport trunk allowed vlan 100。
配置完务必保存,否则重启交换机后失效。











