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
地址。