brctl 简单用法

Linux brctl 的以太网桥命令例子

原文链接
我的博客
Linux 中,这个命令用来创建、操作以太网桥。通常在你的服务器上具有多个以太网,且你希望对它们进行组合,呈现某种逻辑网络时,使用 brctl 命令。

比如,你有一个 eth0 以及 eth1,你可以组合它们,让他们呈现为 br0,那么在处理网络流量时,会同时使用 eth0 以及 eth1

在本文档中,会有如下内容:

  1. 使用 addbr 创建新的以太网桥
  2. 使用 show 展示可用的以太网桥
  3. 使用 delbr 删除现有的以太网桥
  4. 添加接口到现有的桥
  5. 添加多个接口到现有的桥
  6. 跟踪桥的 MAC 地址
  7. 对桥上的 MAC 地址设置老化时间

使用 addbr 创建新的以太网桥

下面的例子,我们创建了 devstage 以及 prod 三个以太网桥:

$ brctl addbr dev
$ brctl addbr stage
$ brctl addbr prod

注意: 在本阶段,这几个以太网桥还是空白的桥,没有其他的以太网依附在上面。

使用 show 展示可用的以太网桥

使用 brctl show,可以看到当前服务器上可用的以太网桥:

$ brctl show
bridge name     bridge id           STP enabled     interfaces
dev             8000.000000000000   no                 
prod            8000.000000000000   no
stage           8000.000000000000   no

可以看到,现在在 interfaces 下面内容为空,这意味着这些桥现在没有以太网设备。

使用 delbr 删除以太网桥

下面删除以太网桥 stage:

$ brctl delbr stage

$ brctl show
bridge name     bridge id           STP enabled     interfaces
dev             8000.000000000000   no                 
prod            8000.000000000000   no

要注意,如果桥处于 up 状态,那么首先需要 down 掉桥,才能删除它。

添加接口到现有的桥

下面的例子将会添加以太网 eth0 到桥 dev:

brctl addif dev eth0

注意: 不要在任何实际的机器上执行这个命令,因为你可能会使这个设备的网络链接断开。如果你能够通过终端访问时,以这个作为一个测试用例。

这个例子中:

  • 将会使 eth0 成为 dev 桥设备的一个端口
  • 因此所有到达 eth0 的数据帧将会认为是到达这个桥上
  • 同时,当有数据帧从 dev 桥发出时,它将会使用 eth0,当 dev 具有多个接口时,eth0 将会是一个潜在的候选者来将数据帧从桥上发送出去

在添加 eth0 到桥后, brctl show 展示如下:

$ brctl show
bridge name     bridge id           STP enabled     interfaces
dev             8000.000000000000   no              eth0
prod            8000.000000000000   no

如果在添加接口之后,机器出现了问题,执行下面的命令恢复:

$ brctl delbr dev

注意: 如果你尝试添加一个回环接口到桥,会有如下无效语句提示: # brctl addif dev lo can't add to bridge dev: Invalid argument

同样,你也不能够添加系统中不存在的接口到桥:

$ brctl addif dev eth123
interface eth123 does not exist!

添加多个接口

下面的例子添加多个接口到 dev:

brctl addif dev eth0 eth1

再次执行 brctl show 可以看到这些接口:

$ brctl show
bridge name     bridge id           STP enabled     interfaces
dev             8000.000000000000   no              eth0
                                                    eth1
prod            8000.000000000000   no

注意: 如果一个以太网接口已经是一个桥的一部分,那么你不能添加它到另一个桥。一个网络只能是单个桥的一部分:

$ brctl addif prod eth1
device eth1 is already a member of a bridge; can't enslave it to bridge prod

跟踪桥的 MAC 地址

使用 brctl showmacs,我们可以查看桥学到的所有 MAC 地址。

设置桥的 MAC 地址的老化时间

下面的例子,设置 dev 桥的 MAC 地址老化时间为120秒:

$ brctl setaging dev 120

设置完上面的语句后,如果一个数据帧 dev 桥超过120秒没有看到,那么 dev 将会从转发数据库中删除该 MAC 地址。

posted @ 2021-12-14 23:46  ArvinDu  阅读(3990)  评论(0编辑  收藏  举报