1、brctl
1.1 brctl 介绍
brctl 用来管理以太网桥,在内核中建立、维护、检查网桥配置。一个网桥一般用来连接多个不同的网络,这样这些不同的网络就可以像一个网络那样进行通讯。
网桥是一种在链路层实现中继,对帧进行转发的技术,根据MAC分区块,可隔离碰撞,将网络的多个网段在数据链路层连接起来的网络设备。网桥工作在数据链路层,将两个LAN连起来,根据MAC地址来转发帧,可以看作一个“底层的路由器”。
在网桥上每个以太网连接可以对应到一个物理接口,这些以太网接口组合成一个大的逻辑的接口,这个逻辑接口对应于桥接网络。
1.2 brctl 前提
# modprobe bridge ## 加载 bridge 模块
# echo "1">/proc/sys/net/ipv4/ip_forward ## 开启转发,多个网卡之间进行数据交互
2、brctl 安装及常用命令介绍
2.1 安装 bridge-utils
Linux 的相关网桥管理命令是由 网桥管理工具包 bridge-utils 来提供的。所以如果需要实现 Linux 网桥的相关配置,需要首先安装此工具包。
[root@Tang ~]# yum info bridge-utils
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.tuna.tsinghua.edu.cn
Available Packages
Name : bridge-utils
Arch : x86_64
Version : 1.5
Release : 9.el7
Size : 32 k
Repo : base/7/x86_64
Summary : Utilities for configuring the linux ethernet bridge
URL : http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge
License : GPLv2+
Description : This package contains utilities for configuring the linux ethernet
: bridge. The linux ethernet bridge can be used for connecting multiple
: ethernet devices together. The connecting is fully transparent: hosts
: connected to one ethernet device see hosts connected to the other
: ethernet devices directly.
:
: Install bridge-utils if you want to use the linux ethernet bridge.
[root@Tang ~]# yum info bridge-utils
Installed:
bridge-utils.x86_64 0:1.5-9.el7
Complete!
2.2 brctl 相关命令介绍
2.2.1 命令帮助查看 1
[root@Tang ~]# brctl --help
Usage: brctl [commands]
commands:
addbr <bridge> add bridge
delbr <bridge> delete bridge
addif <bridge> <device> add interface to bridge
delif <bridge> <device> delete interface from bridge
hairpin <bridge> <port> {on|off} turn hairpin on/off
setageing <bridge> <time> set ageing time
setbridgeprio <bridge> <prio> set bridge priority
setfd <bridge> <time> set bridge forward delay
sethello <bridge> <time> set hello time
setmaxage <bridge> <time> set max message age
setpathcost <bridge> <port> <cost> set path cost
setportprio <bridge> <port> <prio> set port priority
show [ <bridge> ] show a list of bridges
showmacs <bridge> show a list of mac addrs
showstp <bridge> show bridge stp info
stp <bridge> {on|off} turn stp on/off
2.2.2 命令帮助查看 2
[root@Tang ~]# man brctl
2.2.3 常用命令
# brctl addbr <name> ## 创建一个名为 name 的桥接网络接口
# brctl delbr <name> ## 删除一个名为 name 的桥接网络接口,桥接网络接口必须先 down 掉后才能删除
# brctl show ## 显示目前所有的桥接接口
# brctl addif <brname> <ifname>
## 把一个物理接口 ifname 加入桥接接口 brname 中,所有从 ifname 收到的帧都将被 brname 处理
## 就像网桥处理的一样。所有发往 brname 的帧,ifname 就像输出接口一样。当物理以太网接口加入网桥后,处于混杂模式了,所以不需要配置IP
# brctl delif <brname> <ifname> ## 从 brname 中脱离一个ifname接口
# brctl show <brname> ## 显示一些网桥的信息
# brctl stp <bridge> <state>
## STP 多个以太网桥可以工作在一起组成一个更大的网络,利用 802.1d 协议在两个网络之间寻找最短路径
## STP 的作用是防止以太网桥之间形成回路,如果确定只有一个网桥,则可以关闭 STP
## 控制网桥是否加入 STP 树中
## <state> 可以是'on'或者'yes'表示加入 stp 树中,这样当 lan 中有多个网桥时可以防止回环
##'off'表示关闭stp。
# brctl setbridgeprio <bridge> <priority>
## 设置网桥的优先级,<priority> 的值为0-65535,值小的优先级高,优先级最高的是根网桥。
# brctl setfd <bridge> <time>
## 设置网桥的'bridge forward delay'转发延迟时间,时间以秒为单位
# brctl sethello <bridge> <time>
## 设置网桥的'bridge hello time'存活检测时间
# brctl setmaxage <bridge> <time>
## 设置网桥的'maximum message age'时间
# brctl setpathcost <bridge> <port> <cost>
## 设置网桥中某个端口的链路花费值
# brctl setportprio <bridge> <port> <priority>
## 设置网桥中某个端口的优先级
# brctl addbr brneo ## 创建新网桥 brneo
# brctl delbr brneo ## 删除网桥 brneo
# brctl addif brneo eth0 ## 将接口 eth0 加入网桥 brneo
# brctl delif brneo eth0 ## 将接口 eth0 从网桥 brneo 中删除
# brctl show ## 查看网桥信息
# brctl show brneo ## 查看网桥 brneo 的信息
# brctl stp brneo on ## 开启网桥 brneo 的 STP,避免成环