linux服务器可通过802.1q vlan在单网卡上创建多逻辑子网,需检查内核模块、配置子接口、持久化设置,并确保交换机trunk放行对应vlan id。

Linux服务器可以通过VLAN(802.1Q)技术,在单块物理网卡上承载多个逻辑子网,无需额外硬件即可实现网络隔离、灵活路由和资源复用。
一、确认内核与工具支持
现代主流Linux发行版默认启用VLAN支持,但需检查关键模块是否加载:
- 运行 lsmod | grep 8021q,若无输出则执行 modprobe 8021q 并写入 /etc/modules 持久化
- 确保已安装 vconfig(旧版)或更推荐的 iproute2 工具集(含 ip link 命令)
- 验证系统允许创建子接口:检查 /proc/sys/net/ipv4/ip_forward 是否为1(如需三层转发)
二、创建并配置VLAN子接口
以物理网卡 eth0 为例,划分 VLAN 10(192.168.10.0/24)和 VLAN 20(192.168.20.0/24):
- 添加VLAN设备:ip link add link eth0 name eth0.10 type vlan id 10
- 配置IP地址:ip addr add 192.168.10.100/24 dev eth0.10
- 启用接口:ip link set eth0.10 up
- 同理创建 eth0.20,分配对应网段地址
- 配置完成后用 ip -d link show 查看VLAN ID绑定状态
三、持久化配置(以 systemd-networkd 或 netplan 为例)
重启后配置不丢失需写入系统网络管理框架:
- 使用 netplan(Ubuntu 18.04+ 默认):在 /etc/netplan/01-netcfg.yaml 中定义如下结构:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
vlans:
eth0.10:
id: 10
link: eth0
addresses: [192.168.10.100/24]
routes:
- to: default
via: 192.168.10.1
eth0.20:
id: 20
link: eth0
addresses: [192.168.20.100/24]
- 执行 sudo netplan apply 生效;避免混用传统 ifconfig 和 netplan
四、配合交换机与实际应用要点
VLAN功能依赖端到端支持,关键注意事项:
- 接入交换机端口必须配置为 Trunk 模式,放行对应VLAN ID(如允许 VLAN 10,20)
- 若服务器需同时访问多个VLAN且承担路由角色,开启 IP 转发并配置策略路由或 iptables NAT 规则
- 容器或虚拟机可直接绑定到 vlan 子接口(如 Docker 的 --network=bridge + host 网络指定 vlan 设备)
- 注意防火墙规则需按子接口(而非物理口)设置,例如 iptables -A INPUT -i eth0.10 -j ACCEPT











