在Linux系统中,桥接(Bridge)是一种将多个网络接口连接在一起,使它们能够像单个网络接口一样工作的技术,常用于虚拟化环境(如KVM、Docker)或实现网络流量转发,要查看Linux系统中的桥接设备及其配置信息,可以使用多种命令和工具,以下是详细的操作方法和命令说明。

使用 brctl
命令查看桥接信息
brctl
是传统的桥接配置工具,适用于较老的Linux内核版本,但部分系统仍需安装该工具,首先确保已安装 bridge-utils
包(基于Debian/Ubuntu的系统可通过 sudo apt install bridge-utils
安装,基于RHEL/CentOS的系统可通过 sudo yum install bridge-utils
安装)。
查看所有桥接设备
brctl show
输出示例:
bridge name interface
docker0 veth12345
veth67890
bridge name
:桥接设备的名称(如docker0
)。interface
:连接到该桥接的物理或虚拟接口。
查看特定桥接的详细信息
brctl show <bridge_name>
例如查看 docker0
的详细信息:
brctl show docker0
输出会包含桥接的ID、STP状态、接口列表等。

查看桥接的STP(生成树协议)状态
brctl showstp <bridge_name>
输出示例:
docker0
bridge id 8000.0242a8b3cdef
designated root 8000.0242a8b3cdef
root port 0
...
bridge id
:桥接的唯一标识符。designated root
:生成树协议的根桥ID。
查看桥接的接口统计信息
brctl showmacs <bridge_name>
输出示例:
port mac addr is local? ageing time
1 0242a8b3cdef yes 0.00
2 0a1b2c3d4e5f no 120.00
port
:接口编号。mac addr
:接口的MAC地址。is local
:是否为本地接口。
使用 ip
命令查看桥接信息
ip
命令是现代Linux系统中更推荐的网络管理工具,功能更全面且无需额外安装。
查看所有桥接设备
ip link show type bridge
输出示例:
1: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 bridge 8000.0242a8b3cdef
link/ether 02:42:a8:b3:cd:ef brd ff:ff:ff:ff:ff:ff
bridge
:表示该设备为桥接类型。0242a8b3cdef
:桥接的MAC地址(前8位为桥接类型标识)。
查看桥接的接口列表
ip link show
通过过滤 master <bridge_name>
查看连接到特定桥接的接口:
ip link show master docker0
输出示例:
3: veth12345: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master docker0 state UP
link/ether 1a:2b:3c:4d:5e:6f brd ff:ff:ff:ff:ff:ff
master docker0
:表示该接口属于docker0
桥接。
查看桥接的IP地址和路由信息
ip addr show <bridge_name>
ip addr show docker0
输出示例:
1: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 bridge 8000.0242a8b3cdef
inet 172.17.0.1/24 brd 172.17.0.255 scope global docker0
valid_lft forever preferred_lft forever
inet
:桥接的IPv4地址及子网掩码。
查看桥接的转发和过滤表
bridge link
输出示例:
1: veth12345: master docker0 state UP priority 32 cost 100
3: veth67890: master docker0 state UP priority 32 cost 100
master
:所属桥接名称。priority
:接口优先级(影响STP)。
使用 sysfs
文件系统查看桥接信息
Linux内核通过 /sys/class/net/
目录暴露网络设备的详细信息,桥接设备的子目录包含其配置和状态文件。
查看所有桥接设备
ls /sys/class/net/ | grep bridge
输出示例:
docker0
查看桥接的详细信息
cat /sys/class/net/<bridge_name>/operstate
cat /sys/class/net/docker0/operstate
输出示例:
up
operstate
:桥接的运行状态(up
或down
)。
查看桥接的接口列表
ls /sys/class/net/<bridge_name>/brif/
ls /sys/class/net/docker0/brif/
输出示例:
veth12345 veth67890
使用 bridge
命令查看桥接信息
bridge
命令是 iproute2
包的一部分,功能更强大,支持查看桥接的详细统计和协议信息。
查看所有桥接设备
bridge link
查看桥接的MAC地址表
bridge fdb show
输出示例:
02:42:a8:b3:cd:ef dev docker0 master docker0 permanent
0a:1b:2c:3d:4e:5f dev veth12345 master docker0 age 120
master
:所属桥接名称。permanent
:静态MAC地址。
查看桥接的VLAN过滤信息
bridge vlan show
桥接配置信息对比表
以下是常用查看命令的对比:
命令 | 功能描述 | 示例 |
---|---|---|
brctl show |
显示所有桥接设备 | brctl show |
ip link show type bridge |
显示桥接设备类型 | ip link show type bridge |
bridge link |
显示桥接接口和属性 | bridge link |
bridge fdb show |
显示桥接MAC地址表 | bridge fdb show |
cat /sys/class/net/<bridge>/operstate |
显示桥接状态 | cat /sys/class/net/docker0/operstate |
相关问答FAQs
Q1: 如何确认桥接是否启用了STP(生成树协议)?
A1: 使用 brctl showstp <bridge_name>
或 bridge link
查看STP状态,若输出中包含 stp_state
且为 forwarding
,则表示STP已启用;若为 disabled
,则表示未启用,也可以通过 cat /sys/class/net/<bridge_name>/bridge/stp_state
查看,输出 1
表示启用,0
表示禁用。
Q2: 如何查看桥接的流量统计信息(如接收/发送字节数)?
A2: 使用 ip -s link show <bridge_name>
或 cat /sys/class/net/<bridge_name>/statistics/rx_bytes
和 /sys/class/net/<bridge_name>/statistics/tx_bytes
查看流量统计。
ip -s link show docker0
输出会包含 RX
和 TX
部分的字节数、包数等统计信息。