前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >brctl快速入门与基础

brctl快速入门与基础

作者头像
全栈工程师修炼指南
发布2022-09-28 19:57:23
2.2K0
发布2022-09-28 19:57:23
举报

[TOC]

0x00 快速入门

命令brctl主要运用于 Linux 网桥配置,Linux网关模式下将有线LAN和无线LAN共享网段实现局域网内互联;

什么是网桥? 答:网桥是一种在链路层实现中继,对帧进行转发的技术,根据MAC分区块,可隔离碰撞,将网络的多个网段在数据链路层连接起来的网络设备(类似于VLAN)。

思路其实很简单: 就是将虚拟出一个bridge口,将对应的有线LAN和无线LAN都绑定在这个虚拟bridge口上,并给这个bridge口分配一个地址,其他子网微机配置网关为bridge口的地址便可以了。当,因为是设备是网关模式,路由和nat也是必须的了。如果设备本身便是网桥模式那么路由和nat便可以省掉了

安装网桥管理工具包:bridge-utile

代码语言:javascript
复制
yum install bridge-utils -y
apt-get install bridge-utils

#加入到内核(手动)
modprobe bridge
echo "1">/proc/sys/net/ipv4/ip_forward  #设置转发支持(iptables NAT转发也需要此)

#配置桥开机激活 
echo "modprobe bridge">>/etc/rc.local @#开机加载 bridge 模块,或者echo "bridge">>/etc/modules
cp /etc/network/interfaces /etc/network/interfaces.default #

#或者编译安装bridge-utils
(1)进入到/usr/src 目录下,下载bridge-utils-1.4.tar.gz :
#cd /usr/src
#wget http://launchpad.net/bridgeutils/main/1.4/+download/bridge-utils-1.4.tar.gz

(2)解压缩:
#tar zxvf bridge-utils-1.4.tar.gz
进入bridge-utils-1.4目录:
#cd bridge-utils-1.4

(3)编译安装:
#autoconf
生成configure文件:
#./configure
#make
#make install
编译安装完成。最后将命令brctl复制到/sbin下:
#cp/usr/local/sbin/brctl/sbin
0x01 brctl 命令
代码语言:javascript
复制
Usage: brctl [commands]

#参数
addbr [name] #添加网桥
delbr [name] #删除网桥
addif [name] [interface] #将接口添加进入网桥
show [name]  #网桥信息查看

        addbr           <bridge>                add bridge
        delbr           <bridge>                delete bridge
        addif           <bridge> <device>       add interface to bridge
        delif           <bridge> <device>       delete interface from bridge
        setageing       <bridge> <time>          #设置老化时间,即生存周期
        setbridgeprio   <bridge> <prio>         #设置bridge的优先级
        setfd           <bridge> <time>         #设置bridge转发延迟时间
        sethello        <bridge> <time>         set hello time
        setmaxage       <bridge> <time>         # #设置消息的最大生命周期
        sethashel       <bridge> <int>          set hash elasticity
        sethashmax      <bridge> <int>          set hash max
        setmclmc        <bridge> <int>          set multicast last member count
        setmcrouter     <bridge> <int>          set multicast router
        setmcsnoop      <bridge> <int>          set multicast snooping
        setmcsqc        <bridge> <int>          set multicast startup query count
        setmclmi        <bridge> <time>         set multicast last member interval
        setmcmi         <bridge> <time>         set multicast membership interval
        setmcqpi        <bridge> <time>         set multicast querier interval
        setmcqi         <bridge> <time>         set multicast query interval
        setmcqri        <bridge> <time>         set multicast query response interval
        setmcqri        <bridge> <time>         set multicast startup query interval
        setpathcost     <bridge> <port> <cost>  set path cost
        setportprio     <bridge> <port> <prio>  set port priority
        setportmcrouter <bridge> <port> <int>   set port multicast router
        show            [ <bridge> ]            #显示网新信息
        showmacs        <bridge>                ##显示MAC地址
        showstp         <bridge>                show bridge stp info
        stp             <bridge> {on|off}       turn stp on/off
0x02 实际案例

示例1.添加网桥并将接口进行接入,将有线和无线都设置为10.0.0.*网段,即可通过网上邻居进行访问;

代码语言:javascript
复制
brctl addbr bridge   #添加了一个bridge名称的网桥
brctl addif bridge eth0  #并将接口加入到其中;
brctl addif bridge ath0 #无线接口

ifconfig eth0  0.0.0.0 #
ifconfig bridge 10.0.0.1 netmask 255.255.255.0 up #设置哇

#添加防火墙规则
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 192.168.2.173

示例2.有五台主机。其中一台主机装有linux 安装了网桥模块,而且有四块物理网卡,分别连接同一网段的其他主机,我们希望其成为一个网桥(192.168.1.1.),为其他四台主机(IP分别为192.168.1.2 ,192.168.1.3,192.168.1.4,192.168.1.5) 之间转发数据包

同时为了方便管理,使用网桥能一个IP就可以在192.168.1.0/24网段内的主机上telnet到网桥,及连接不同网段的主机;

代码语言:javascript
复制
# 实际上,我们可以把逻辑网段192.168.1.0/24看作使一个VLAN ,而br0则是这个VLAN的名称。
brctl addbr br0        # (建立一个逻辑网段,名称为br0)

#在Linux中,一个端口实际上就是一个物理网卡,假如网桥的每个物理网卡的名称则分别为eth0,eth1,eth2,eth3
brctl addif br0 eth0               (让eth0成为br0的一个端口)
brctl addif br0 eth1               (让eth1成为br0的一个端口)
brctl addif br0 eth0               (让eth2成为br0的一个端口)
brctl addif br0 eth3               (让eth3成为br0的一个端口)

#网桥的每个物理网卡作为一个端口,运行于混杂模式,而且是在链路层工作,所以就不需要IP了。
ifconfig eth0 0.0.0.0
ifconfig eth1 0.0.0.0
ifconfig eth2 0.0.0.0
ifconfig eth3 0.0.0.0

#然后给br0的虚拟网卡配置IP:192.168.1.1。那样就能远程管理网桥。
ifconfig br0 192.168.1.1
#给br0配置了IP之后,网桥就能够工作了。192.168.1.0/24网段内的主机都可以telnet到网桥上对其进行配置。
#以上配置的是一个逻辑网段,实际上Linux网桥也能配置成多个逻辑网段(相当于交换机中划分多个VLAN)。

示例3.设置Linux让网桥运行配置网桥;

代码语言:javascript
复制
brctl addbr br0
brctl stp br0 off #不需要STP(生成树协议)等。因为我们只有一个路由器,是绝对不可能形成一个环的,则关闭它
#关闭生成树协议,减少数据包污染,因为我这里只有一个路由器哦!

brctl addif br0 eth0 eth1 #添加两个(或更多)以太网物理接口

#原来我们的两个以太网物理接口变成了网桥上的两个逻辑端口。那两个物理接口过去存在,未来也不会消失
#现在他们成了逻辑网桥设备的一部分了,所以不再需要IP地址。下面我们将这些IP地址释放掉
$ifconfig eth0 down
$ifconfig eth1 down
$ifconfig eth0 0.0.0.0 up
$ifconfig eth1 0.0.0.0 up

#最后,启用网桥并配置其地址
$ifconfig br0 10.0.3.129 up

#如果需要关闭和删除网桥
brctl delif br0 eth1 eth0;
ifconfig br0 down;
brctl delbr br0;

示例4.配置eth0 eth1 br0开机启动,eth0、eth1未设置IP信息,在启动br0网卡时,开启了eth0,eth1的混杂模式,并桥接了它们。

代码语言:javascript
复制
[inbi@debian~]$vim /etc/network/interfaces
auto lo eth0 eth1 br0  #将接口加入
iface lo inet loopback #设置本地地址为回路
iface br0 inet static
    address 10.10.10.1
    netmask 255.255.0.0
    gateway 10.10.10.254
    pre-up ip link set eth0 promisc on
    pre-up ip link set eth1 promisc ono
    pre-up echo "1">/proc/sys/net/ipv4/ip_forward
    bridge_ports eth0 eth1
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 快速入门
  • 0x01 brctl 命令
  • 0x02 实际案例
相关产品与服务
NAT 网关
NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档