bridge命令是Linux系统中用于网络桥接的核心工具,它允许用户将多个网络接口(如物理网卡、虚拟网卡)绑定在一起,形成一个逻辑上的网络桥,从而实现数据帧的透明转发,bridge命令通常与brctl工具配合使用,但现代Linux发行版更推荐直接通过iproute2套件中的bridge命令进行管理,后者功能更强大且支持更多高级特性,bridge命令的操作对象包括网桥设备的创建、删除、端口管理、STP(生成树协议)配置、VLAN过滤等,广泛应用于虚拟化环境(如Kubernetes、Docker)、网络隔离、流量监控等场景。

bridge命令的基本功能
bridge命令的主要功能包括网桥的创建与销毁、端口的添加与移除、网桥属性的配置以及网络流量的统计,通过bridge link命令可以查看网桥端口的详细信息,包括MAC地址、状态、VLAN ID等;而bridge fdb命令则用于管理网桥的转发数据库(FDB),记录MAC地址与端口的映射关系,在虚拟化场景中,bridge命令常用于创建虚拟交换机,例如将虚拟机的虚拟网卡(如veth pair的一端)添加到网桥中,使其与物理网络互通。
常用bridge命令及参数解析
-
创建与删除网桥
- 创建网桥:
ip link add name br0 type bridge
该命令会创建一个名为br0的网桥设备,默认启用STP协议以防止网络环路。 - 删除网桥:
ip link del dev br0
删除网桥时会自动移除所有关联的端口,确保网络配置的完整性。
- 创建网桥:
-
端口管理
-
添加端口:
ip link set dev eth1 master br0
将物理网卡eth1添加到br0网桥中,成为其转发端口。
(图片来源网络,侵删) -
移除端口:
ip link set dev eth1 nomaster
将eth1从网桥中移除,恢复为独立网络接口。 -
查看端口状态:
bridge link show
输出包含端口的MAC地址、链路状态、VLAN过滤设置等信息,如下表所示:端口 MAC地址 状态 VLAN ID 过滤模式 eth1 00:1a:2b:3c:4d:5f up 1 enabled veth0 00:1a:2b:3c:4d:6e up 无 disabled
-
-
STP与VLAN配置
- 禁用STP:
bridge stp br0 no
适用于无环路的简单网络,减少协议开销。 - 启用VLAN过滤:
bridge vlan add vid 10 dev eth1
为端口eth1添加VLAN ID 10,实现基于VLAN的流量隔离。
- 禁用STP:
-
流量监控
(图片来源网络,侵删)- 查看网桥统计信息:
bridge link show
输出端口的接收/发送字节数、错误包数等数据,用于网络故障排查。
- 查看网桥统计信息:
高级应用场景
在虚拟化环境中,bridge命令常与网络命名空间(netns)结合使用,实现容器网络的隔离,创建一对veth设备,一端加入容器的网络命名空间,另一端加入宿主机的网桥,从而实现容器与外部网络的通信,bridge命令支持流量控制(TC)和镜像端口功能,可用于网络流量分析与调试,通过tc命令配置网桥端口的带宽限制,或使用mirror参数将特定端口的流量复制到监控端口。
相关问答FAQs
Q1: 如何通过bridge命令检查网桥的MAC地址表?
A1: 使用bridge fdb show命令可以查看网桥的转发数据库(FDB),其中包含动态学习的MAC地址与对应端口的映射关系。bridge fdb show dev br0会显示br0网桥中所有MAC地址的条目,包括MAC地址、端口、老化时间等信息,若需手动添加静态条目,可执行bridge fdb add <MAC地址> dev <端口>。
Q2: bridge命令与brctl的主要区别是什么?
A2: bridge命令是iproute2套件的一部分,功能更现代化,支持VLAN过滤、多播路由等高级特性,且与Linux内核的netfilter框架集成更好;而brctl是传统的桥接工具,功能相对基础,已逐渐被bridge命令取代,bridge命令支持实时查看端口统计信息,而brctl需要依赖/proc/net/dev文件,更新延迟较高,bridge命令的语法更简洁,如ip link add name br0 type bridge比brctl addbr br0更符合Linux网络工具的统一规范。
