- Bridge 命令详解
- 1. 简要概述
- 1.1 功能描述
- 1.2 不可替代的核心作用
- 1.3 与其他命令的功能对比
- 2. 选项及含义
- 3. 子命令详解
- 3.1
bridge fdb(MAC 转发表)- 3.1.1 选项
- 3.1.2
bridge fdb show 详细输出字段 - 3.1.3
bridge fdb add - 3.1.4
bridge fdb del - 3.1.5
bridge fdb flush
- 3.2
bridge link(端口管理)- 3.2.1 选项
- 3.2.2
bridge link show - 3.2.3
bridge link set
- 3.3
bridge vlan(VLAN 过滤)- 3.3.1 选项
- 3.3.2
bridge vlan show - 3.3.3
bridge vlan add/del
- 3.4
bridge mdb(组播组管理)- 3.4.1 选项
- 3.4.2
bridge mdb show
- 3.5
bridge monitor(实时监控)
- 4. 常用功能配置和查询
- 4.1 创建网桥并添加端口
- 4.2 查看网桥信息
- 4.3 配置 VLAN 网桥
- 4.4 FDB 表管理
- 5. 常用场景示例配置
- 场景 1:Docker/容器网桥网络
- 场景 2:VXLAN + Bridge 容器网络
- 场景 3:OVS 替代方案(纯 Linux Bridge)
- 场景 4:hairpin 模式(让虚拟网卡能与自己通信)
- 场景 5:VLAN 过滤隔离多租户
- 场景 6:从网桥移除端口
- 6. 参考网址
- 附录:命令速查表
Bridge 命令详解
1. 简要概述
1.1 功能描述
bridge 是 Linux 内核提供的二层网桥管理命令,用于创建、配置和监控软件网桥设备。网桥(Bridge)是 Linux 实现 VLAN 和容器网络的核心组件,工作在 OSI 第二层(数据链路层),通过 MAC 地址学习实现不同接口之间的数据包转发。
主要功能:
| 功能 |
说明 |
| 网桥创建/删除 |
创建虚拟网桥设备,替代传统 brctl 命令 |
| 端口管理 |
将物理/虚拟网卡接入网桥或从网桥移除 |
| MAC 地址表管理 |
查看、添加、删除 FDB(Forwarding Database)条目 |
| STP 配置 |
生成树协议配置(可选) |
| VLAN 过滤 |
基于 VLAN 的二层流量控制 |
| 组播组管理 |
IGMP Snooping 配置 |
1.2 不可替代的核心作用
| 功能 |
说明 |
| FDB 管理 |
bridge fdb 是唯一完整管理 MAC 转发表的命令,ip neigh 只管理 ARP/ND 表 |
| 网桥与 VLAN 集成 |
与 ip link 配合实现 802.1Q VLAN 网桥 |
| VXLAN/Bridge 联动 |
将 vxlan0、veth 等虚拟接口加入网桥,实现容器/VM 网络互通 |
| 本地 MAC 隧道路由 |
通过 self / master 关键字区分本地生成和学习到的 MAC 条目 |
1.3 与其他命令的功能对比
| 功能 |
bridge |
ip neigh |
ebtables |
| MAC 地址表管理 |
✅ FDB 完整管理 |
✅ 仅 ARP/ND 表 |
❌ |
| VLAN 过滤 |
✅ |
❌ |
✅ |
| 二层转发规则 |
✅ 基础 |
❌ |
✅ 高级 |
| STP 生成树 |
✅ |
❌ |
❌ |
| 网桥端口管理 |
✅ |
❌ |
❌ |
2. 选项及含义
2.1 主命令选项
bridge [ OPTIONS ] OBJECT { COMMAND | help }
| 选项 |
含义 |
-Version |
显示版本信息 |
-statistics |
显示统计信息(-s) |
-details |
显示详细信息 |
2.2 子命令 Objects
| 对象 |
说明 |
link |
网桥端口配置(等同于 ip link 的网桥相关功能) |
fdb |
MAC 转发表(Forwarding Database)管理 |
mdb |
组播组数据库管理 |
monitor |
实时监控网桥事件 |
vlan |
VLAN 过滤表管理 |
3. 子命令详解
3.1 bridge fdb(MAC 转发表)
3.1.1 选项
| 选项 |
含义 |
show |
显示 FDB 表 |
add |
添加静态 MAC 条目 |
del |
删除 MAC 条目 |
append |
追加 MAC 条目 |
replace |
替换 MAC 条目 |
flush |
清空指定条件的 MAC 条目 |
3.1.2 bridge fdb show 详细输出字段
bridge fdb show [ dev DEVICE ] [ br BRIDGE ] [ vlan VLAN_ID ]
输出字段解释:
00:00:00:00:00:00 dev vxlan0 dst 239.1.1.1 via eth6 self permanent↓ ↓ ↓ ↓ ↑ ↑ ↑MAC地址 设备 远端VTEP 物理出口 自身 永久条目aa:5c:2f:24:2d:47 dev vxlan0 master br-v0 dynamic↓ ↓ ↓ ↓ ↑ ↓MAC地址 设备 主master 网桥 学习到的
| 字段 |
说明 |
dev <设备> |
MAC 地址关联的网桥端口 |
dst <IP> |
VXLAN 远端 VTEP IP(仅 VXLAN 设备) |
via <物理口> |
物理出口设备 |
master |
该端口所属的网桥 |
self |
本地生成的静态条目(如 bridge fdb add 添加) |
dynamic |
动态学习到的条目(通过数据流量学习) |
permanent |
永久条目(不会被老化) |
Tunneled |
通过隧道封装收到的条目 |
extern_learn |
外部学习的条目(如 OVSDB 同步) |
3.1.3 bridge fdb add
bridge fdb add MAC_ADDR dev DEVICE { master | self } [ br BRIDGE ][ vlan VLAN_ID ] [ sticky ] [ static ]
示例:
# 添加静态 MAC 到网桥端口
bridge fdb add 00:11:22:33:44:55 dev eth0 master br0# 添加静态 MAC 到本地端口(不依赖于网桥)
bridge fdb add 00:11:22:33:44:55 dev vxlan0 self# 添加 VXLAN 远端 MAC
bridge fdb add 00:00:00:00:00:00 dev vxlan0 dst 192.168.1.100# 添加永久 MAC(sticky=永不过期)
bridge fdb add 00:11:22:33:44:55 dev eth0 master br0 sticky
3.1.4 bridge fdb del
bridge fdb del MAC_ADDR dev DEVICE [ br BRIDGE ] [ vlan VLAN_ID ]
示例:
bridge fdb del 00:11:22:33:44:55 dev eth0
bridge fdb del 00:00:00:00:00:00 dev vxlan0 dst 192.168.1.100
3.1.5 bridge fdb flush
bridge fdb flush dev DEVICE [ br BRIDGE ] [ vlan VLAN_ID ]
示例:
# 清空指定设备的动态 MAC 条目
bridge fdb flush dev vxlan0 dynamic# 清空指定网桥的 MAC 条目
bridge fdb flush br br0
3.2 bridge link(端口管理)
3.2.1 选项
| 选项 |
含义 |
show |
显示网桥端口信息 |
set |
设置端口参数 |
add |
添加端口(已废弃,使用 ip link set master) |
3.2.2 bridge link show
bridge link show [ dev DEVICE ] [ master BRIDGE ]
输出示例:
2: eth0 state UP : master br0 priority 32 cost 0↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ifindex 设备名 状态 主master 优先级 STP代价
| 字段 |
说明 |
state UP/DOWN |
端口状态 |
master <网桥> |
所属网桥 |
priority |
STP 优先级(默认 32768) |
cost |
STP 路径代价 |
guard |
BPDU _guard 状态 |
hairpin |
hairpin 模式(允许发往同一端口的回环流量) |
3.2.3 bridge link set
bridge link set dev DEVICE [ cost COST ] [ priority PRIO ] [ state STATE ][ guard { on | off } ] [ hairpin { on | off } ][ fastleave { on | off } ] [ root_block { on | off } ]
示例:
# 设置端口 STP 优先级
bridge link set dev eth0 priority 64# 设置端口 STP 代价
bridge link set dev eth0 cost 100# 启用 hairpin 模式(让流量可以从同一端口进出)
bridge link set dev veth0 hairpin on# 启用快速离开(用于组播)
bridge link set dev eth0 fastleave on
3.3 bridge vlan(VLAN 过滤)
3.3.1 选项
| 选项 |
含义 |
show |
显示 VLAN 表 |
add |
添加 VLAN 条目 |
del |
删除 VLAN 条目 |
tunnel |
VLAN 隧道配置 |
3.3.2 bridge vlan show
bridge vlan show [ dev DEVICE ] [ br BRIDGE ]
输出示例:
port vlan-id
eth0 1 PVID Egress Untagged10, 20, 30
br0 1
3.3.3 bridge vlan add/del
bridge vlan add dev DEVICE vid VLAN_ID [ pvid ] [ untagged ] [ self ] [ master ]
bridge vlan del dev DEVICE vid VLAN_ID [ self ] [ master ]
示例:
# 添加 VLAN 到端口
bridge vlan add dev eth0 vid 10# 设置 PVID(Port VLAN ID)
bridge vlan add dev eth0 vid 1 pvid untagged# 删除 VLAN
bridge vlan del dev eth0 vid 10
3.4 bridge mdb(组播组管理)
3.4.1 选项
| 选项 |
含义 |
show |
显示组播组数据库 |
add |
添加组播组条目 |
del |
删除组播组条目 |
3.4.2 bridge mdb show
bridge mdb show [ dev DEVICE ] [ br BRIDGE ]
输出示例:
dev vxlan0 grp 239.1.1.1 temp query src 192.168.1.10↓ ↓ ↓ ↓ ↓ ↓设备 组播地址 临时/永久 查询 源IP
3.5 bridge monitor(实时监控)
bridge monitor [ FILE ] [ all | link | fdb | mdb | vlan ] [ br BRIDGE ]
示例:
# 监控所有网桥事件
bridge monitor# 监控 FDB 变化
bridge monitor fdb# 监控端口状态变化
bridge monitor link# 输出到文件
bridge monitor all > /var/log/bridge.log &
4. 常用功能配置和查询
4.1 创建网桥并添加端口
# 1. 创建网桥
ip link add br0 type bridge# 2. 将端口加入网桥
ip link set eth0 master br0
ip link set vxlan0 master br0# 3. 启用网桥和端口
ip link set br0 up
ip link set eth0 up
ip link set vxlan0 up
4.2 查看网桥信息
# 查看网桥概要
bridge link show# 查看网桥详情(包括 STP)
bridge -d link show# 查看网桥的 FDB 表
bridge fdb show# 查看特定网桥的 FDB
bridge fdb show br br0# 查看特定端口的 FDB
bridge fdb show dev vxlan0
4.3 配置 VLAN 网桥
# 1. 创建 VLAN 网桥
ip link add br0.10 type bridge vlan_filtering 1# 2. 添加端口并配置 VLAN
ip link set eth0 master br0
bridge vlan add dev eth0 vid 10 pvid untagged# 3. 启用
ip link set br0 up
ip link set eth0 up
4.4 FDB 表管理
# 查看动态学习到的 MAC
bridge fdb show dynamic# 查看静态配置的 MAC
bridge fdb show permanent# 添加静态 MAC
bridge fdb add 00:11:22:33:44:55 dev eth0 master br0# 删除 MAC
bridge fdb del 00:11:22:33:44:55 dev eth0# 清空所有动态 MAC
bridge fdb flush dev br0 dynamic
5. 常用场景示例配置
场景 1:Docker/容器网桥网络
# 创建 bridge 网络
docker network create -d bridge my-bridge# 对应命令:
ip link add docker0 type bridge
ip link set docker0 up# 查看容器网络 MAC 表
bridge fdb show | grep docker0
场景 2:VXLAN + Bridge 容器网络
# 1. 创建 VXLAN 设备
ip link add vxlan0 type vxlan id 42 dstport 4789 group 239.1.1.1 dev eth0
ip link set vxlan0 up# 2. 创建网桥
ip link add br-v0 type bridge
ip link set br-v0 up# 3. 将 vxlan0 加入网桥
ip link set dev vxlan0 master br-v0# 4. 查看 FDB(验证)
bridge fdb show | grep vxlan0
# 输出:
# 00:00:00:00:00:00 dev vxlan0 dst 239.1.1.1 via eth0 self permanent
# aa:bb:cc:dd:ee:ff dev vxlan0 master br-v0 dynamic
场景 3:OVS 替代方案(纯 Linux Bridge)
# 基础二层网络
ip link add br0 type bridge
ip link set eth0 master br0
ip link set eth1 master br0
ip link set br0 up# 启用 STP(如果有多路径)
ip link set br0 type bridge stp_state 1# 配置端口优先级
bridge link set dev eth0 priority 64
bridge link set dev eth0 cost 100
场景 4:hairpin 模式(让虚拟网卡能与自己通信)
# 启用 hairpin(让 veth0 可以和自己通信)
bridge link set dev veth0 hairpin on# 常用于:虚拟网卡测试、镜像流量场景
场景 5:VLAN 过滤隔离多租户
# 创建启用 VLAN 过滤的网桥
ip link add br0 type bridge vlan_filtering 1# 配置端口 VLAN
bridge vlan add dev eth0 vid 100 pvid untagged
bridge vlan add dev eth1 vid 200# 只允许特定 VLAN 通过
bridge vlan add dev eth0 vid 1-100# 查看 VLAN 表
bridge vlan show
场景 6:从网桥移除端口
# 方式 1:ip link(推荐)
ip link set eth0 nomaster# 方式 2:bridge fdb
bridge fdb del 00:11:22:33:44:55 dev eth0 master br0# 方式 3:bridge link set
bridge link set dev eth0 nomaster
6. 参考网址
| 资料 |
链接 |
| iproute2 官方文档 |
https://www.man7.org/linux/man-pages/man8/bridge.8.html |
| bridge fdb 手册 |
https://www.man7.org/linux/man-pages/man8/bridge-fdb.8.html |
| bridge-vlan 手册 |
https://www.man7.org/linux/man-pages/man8/bridge-vlan.8.html |
| Linux 网桥文档 |
https://www.kernel.org/doc/Documentation/networking/bridge.txt |
| VLAN Filtering |
https://wiki.linuxfoundation.org/networking/bridge |
| Red Hat 网桥指南 |
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/managing-networking-bridges_configuring-and-managing-networking |
附录:命令速查表
FDB 管理
| 操作 |
命令 |
| 查看所有 MAC |
bridge fdb show |
| 查看动态 MAC |
bridge fdb show dynamic |
| 查看端口 MAC |
bridge fdb show dev <设备> |
| 添加静态 MAC |
bridge fdb add <MAC> dev <设备> master <网桥> |
| 删除 MAC |
bridge fdb del <MAC> dev <设备> |
| 清空 MAC |
bridge fdb flush dev <设备> |
端口管理
| 操作 |
命令 |
| 查看端口 |
bridge link show |
| 添加到网桥 |
ip link set <设备> master <网桥> |
| 移出网桥 |
ip link set <设备> nomaster |
| 设置 hairpin |
bridge link set dev <设备> hairpin on |
VLAN 管理
| 操作 |
命令 |
| 查看 VLAN |
bridge vlan show |
| 添加 VLAN |
bridge vlan add dev <设备> vid <VLAN> |
| 删除 VLAN |
bridge vlan del dev <设备> vid <VLAN> |
| 设置 PVID |
bridge vlan add dev <设备> vid <VLAN> pvid untagged |
监控
| 操作 |
命令 |
| 实时监控 |
bridge monitor |
| 监控 FDB |
bridge monitor fdb |
| 监控端口 |
bridge monitor link |