跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

如何在Linux利用Nmcli配置带有VLAN子接口的虚拟化桥接网络实现流量隔离

在Linux中用nmcli配置带VLAN子接口的虚拟化桥接网络,本质是构建物理网卡→VLAN子接口→网桥→虚拟机/容器的三层嵌套结构,实现单物理端口承载多隔离二层网络,适用于KVM、Docker等场景。 在 Linux 中用
nmcli
配置“带 VLAN 子接口的 虚拟化 桥接网络”,本质是构建一个三层嵌套结构:物理网卡 → VLAN 子接口 → 网桥 → 虚拟机/容器。这种结构让单个物理端口能承载多个隔离的二层网络,特别适合 KVM、Docker 或 OpenStack 等场景。 确认基础支持与环境准备 确保系统已启用 VLAN 和 NetworkManager 持久化能力: 加载
8021q
内核模块:
sudo modprobe 8021q
,并写入
/etc/modules
或
/etc/modules-load.d/vlan.conf
保证开机加载 安装必要工具:
sudo dnf install -y NetworkManager-vlan vlan ethtool
(RHEL/Rocky)或
sudo apt install -y vlan network-manager-dev
(Debian/Ubuntu) 检查物理网卡状态:
nmcli device status
,确认目标接口(如
eno1
)处于
connected
或
disconnected
状态,但未被其他活跃连接占用 创建 VLAN 子接口并绑定到网桥 不要直接把物理网卡加进网桥;先建 VLAN 接口,再将其作为从属设备加入网桥: 添加 VLAN 连接(例如 VLAN ID 100):
sudo nmcli connection add type vlan con-name vlan100 dev eno1 id 100
禁用该 VLAN 接口的 IP 自动获取(避免冲突):
sudo nmcli connection modify vlan100 ipv4.method disabled ipv6.method ignore
创建网桥(如
br-vlan100
):
sudo nmcli connection add type bridge con-name br-vlan100 ifname br-vlan100 stp no
将 VLAN 接口设为网桥的从属设备:
sudo nmcli connection add type bridge-slave con-name vlan100-slave ifname eno1.100 master br-vlan100
注意:
eno1.100
是 NetworkManager 自动创建的内核 VLAN 设备名,无需手动用
ip link add
创建。 配置网桥的网络参数与启用流程 网桥本身需要承担三层出口角色,因此要为其分配 IP 并启用 DHCP 或静态路由: Docker Desktop(linux) 当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。 下载 设置 IPv4 方式(如使用 DHCP):
sudo nmcli connection modify br-vlan100 ipv4.method auto
若需静态地址:
sudo nmcli connection modify br-vlan100 ipv4.addresses "192.168.100.10/24" ipv4.gateway "192.168.100.1" ipv4.dns "8.8.8.8" ipv4.method manual
关闭原物理连接(如 “Wired connection 1”):
sudo nmcli connection down "Wired connection 1"
启用新桥接连接:
sudo nmcli connection up br-vlan100
执行后可通过
ip a show br-vlan100
和
bridge link
验证桥接关系与端口状态。 在虚拟化平台中使用该桥接网络 以 KVM libvirt 为例,虚拟机 XML 中指定桥接设备即可获得 VLAN 隔离的直通网络: 编辑虚拟机网络配置:
确保宿主机防火墙放行对应 VLAN 流量(如
firewalld
中添加
br-vlan100
到 trusted zone) 验证:启动虚拟机,在其内部配置同网段 IP(如
192.168.100.100/24
),应能与宿主机
br-vlan100
地址互通,且无法跨 VLAN 通信(除非有三层路由) 该结构天然实现二层隔离——不同 VLAN 的虚拟机即使连在同一物理网卡上,也无法直接二层通信,满足多租户或业务分区需求。

相关文章