brctl 简单用法
Linux brctl 的以太网桥命令例子
原文链接
我的博客
在 Linux 中,这个命令用来创建、操作以太网桥。通常在你的服务器上具有多个以太网,且你希望对它们进行组合,呈现某种逻辑网络时,使用 brctl 命令。
比如,你有一个 eth0 以及 eth1,你可以组合它们,让他们呈现为 br0,那么在处理网络流量时,会同时使用 eth0 以及 eth1
在本文档中,会有如下内容:
- 使用
addbr创建新的以太网桥 - 使用
show展示可用的以太网桥 - 使用
delbr删除现有的以太网桥 - 添加接口到现有的桥
- 添加多个接口到现有的桥
- 跟踪桥的
MAC地址 - 对桥上的
MAC地址设置老化时间
使用 addbr 创建新的以太网桥
下面的例子,我们创建了 dev,stage 以及 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 地址。