概述

在说Linux网桥之前,先介绍几个概念,有助于对网桥的功能及实现有更深的理解。

一个交换网络的逻辑图:

1. 冲突域

一个冲突域由所有能够看到同一个冲突或者被该冲突涉及到的设备组成。以太网使用C S M A / C D(Carrier Sense Multiple Access with Collision Detection,带有冲突监测的载波侦听多址访问)技术来保证同一时刻,只有一个节点能够在冲突域内传送数据。网桥或者交换机,构成了一个冲突域的边界。缺省情况下,网桥中的每个端口实际上就是一个冲突域的结束点。

2. 广播域

一个广播域由所有能够看到一个广播数据包的设备组成。一个路由器,构成一个广播域的边界。网桥能够延伸到的最大范围就是一个广播域。缺省的情况下,一个网桥或交换机的所有端口在同一个广播域中。VLAN技术可以把交换机或者网桥的不同端口分割成不同的广播域。一般情况下, 一个广播域代表一个逻辑网段。

3. 网桥中的CAM表

网桥和交换机一样,为了能够实现对数据包的转发,网桥保存着许多(MAC,端口)项。所有的这些项组成一个表,叫做CAM表。每个项有超时机制,如果一定时间内未接收到以这个MAC为源MAC地址的数据包,这个项就会被删除。


网桥工作机制

网桥工作在数据链路层,作用就是减少冲突域的,它根据MAC帧的目的地址对收到的帧进行转发和过滤。当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的MAC地址。然后再确定将该帧转发到哪一个接口,或者是把它丢弃。

网桥设备依靠内部转发表来转发MAC帧,它可以把两个总线型网络连接起来在既能减缓冲突域的同时各个主机之间还可以通信(还是以广播的形式发送数据)。网桥比起集线器来算是有点智能的了,它的内部维护了一张转发表也叫转发数据库或路由目录。这个内部表可以是自动学习的也可以是手动生成,表内部标识着有那些主机连接在1号口上,有那些主机连接在2号口上。如下图:

这样一来当A主机发送信息给B主机时都是广播发送的,所以B主机会接收到信息。而网桥的1号接口也会接收到这个广播信息,然后就会查看内部表,会发现目标地址就存在于1号口,所以就不会转发到另一个总线网络中,就这样减少了冲突域。如果是A发送给C网桥发现C在2号口就会把信息广播过去。

虽然网桥的出现带来的一些好处,如减少缓冲突域、扩大了物理范围、提高了可靠性等等。但是网桥也是有一些缺点,如:一对接收的帧要先存储和查找转发表,然后才转发,而转发之前还必须执行CSMA/CD算法避免碰撞,这就增加了延迟。二用户数不可太多,不然就会因为传播过多的广播而产生网络堵塞,也就是所谓的广播风暴。


Linux网桥相关命令

Linux内核在2.2就已经实现了网桥的功能,但是要配置网桥需要安装bridge-utils工具。

$ yum install bridge-utils

常用的操作命令:

# 创建网桥br0;$ brctl addbr br0 # 查看网桥;$ brctl showbridge name bridge id STP enabled interfacesbr0 8000.000000000000 no # 给网桥添加网卡,可以理解为给网桥添加接口;$ brctl addif br0 eth0 # 查看MAC地址;$ brctl showmacs br0 # 从网桥中删除网卡;$ brctl delif br0 eth0 # 开启或关闭网桥STP生成树协议;$ brctl stp br0 on$ brctl stp br0 off

Linux网桥的使用

比如下面有这么一个场景:

有五台主机。其中一台主机装有Linux ,安装了网桥模块,而且有四块物理网卡,分别连接同一网段的其他主机。我们希望其成为一个网桥,为其他四台主机(IP分别为192.168.1.2 ,192.168.1.3,192.168.1.4,192.168.1.5) 之间转发数据包。同时,为了方便管理,希望网桥能够有一个IP(192.168.1.1),那样管理员就可以在192.168.1.0/24网段内的主机上telnet到网桥,对其进行配置,实现远程管理。

网桥在同一个逻辑网段转发数据包。针对上面的拓扑,这个逻辑网段就是192.168.1.0/24网段。我们为这个逻辑网段一个名称,br_192。首先需要配置这样一个逻辑网段。

$ brctl addbr br_192

实际上,我们可以把逻辑网段192.168.1.0/24看作使一个VLAN ,而br_192则是这个VLAN的名称。

建立一个逻辑网段之后,我们还需要为这个网段分配特定的端口。在Linux中,一个端口实际上就是一个物理网卡。而每个物理网卡的名称则分别为eth0,eth1,eth2,eth3。我们需要把每个网卡一一和br_192这个网段联系起来,作为br_192中的一个端口。

$ brctl addif br_192 eth0$ brctl addif br_192 eth1$ brctl addif br_192 eth2$ brctl addif br_192 eth3

网桥的每个物理网卡作为一个端口,运行于混杂模式,而且是在链路层工作,所以就不需要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

然后给br_192的虚拟网卡配置IP:192.168.1.1,那样就能远程管理网桥。

$ ifconfig br_192 192.168.1.1

给br_192配置了IP之后,网桥就能够工作了。192.168.1.0/24网段内的主机都可以telnet到网桥上对其进行配置。以上配置的是一个逻辑网段,实际上Linux网桥也能配置成多个逻辑网段(相当于交换机中划分多个VLAN)。


总之,网桥实现最重要的两点:

1. MAC学习:学习MAC地址,起初,网桥是没有任何地址与端口的对应关系的,它发送数据,还是得想HUB一样,但是每发送一个数据,它都会关心数据包的来源MAC是从自己的哪个端口来的,由于学习,建立地址-端口的对照表(CAM表)。

2. 报文转发:每发送一个数据包,网桥都会提取其目的MAC地址,从自己的地址-端口对照表(CAM表)中查找由哪个端口把数据包发送出去。

后面会分享更多Linux方面的内容,感兴趣的朋友可以关注一下~

linux端口转发_详解Linux网桥功能--概念、工作机制、相关命令及实例说明相关推荐

  1. Linux系统调优详解(三)——CPU状态查看相关命令

    今天继续给大家介绍Linux运维相关知识,本文主要内容是CPU状态查看相关命令. 一./proc查看CPU状态 在Linux系统中,我们还经常使用以下命令来查看CPU状态: cat /proc/cpu ...

  2. linux 删除分区_详解linux系统架构--文件系统体系

    概述 之前已经对Linux系统架构的内核部分单独做了深入介绍,今天就拿Linux系统架构中的文件系统做一下介绍吧~先介绍下概念: 文件系统是文件存放在磁盘等存储设备上的组织方法.Linux系统能支持多 ...

  3. linux 查看网络流量来源_详解Linux查看实时网卡流量的几种方式

    在工作中,我们经常需要查看服务器的实时网卡流量.通常,我们会通过这几种方式查看Linux服务器的实时网卡流量. 1. sar -n DEV 1 2 sar命令包含在sysstat工具包中,提供系统的众 ...

  4. linux的mtr参数详解,linux mtr 命令详解

    1.Mtr介绍: Mtr是 Linux中有一个非常棒的网络连通性判断工具,它结合了ping, traceroute,nslookup 的相关特性. apt-get install mtr -y 安装m ...

  5. linux怎么授权目录,详解Linux如何将一个文件夹的所有内容授权给某一个用户?...

    详解Linux如何将一个文件夹的所有内容授权给某一个用户? 发布时间:2020-09-14 15:23:51 来源:脚本之家 阅读:138 作者:冰阔落 栏目:服务器 [问题分析] 我们可以使用cho ...

  6. python提取邮件附件_详解python实现读取邮件数据并下载附件的实例

    详解python实现读取邮件数据并下载附件的实例 实现结果图: 实现代码: #!/usr/bin/python2.7 # _*_ coding: utf-8 _*_ """ ...

  7. dpkg安装软件流程_详解linux安装软件的几种方法

    一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root用户: 3.cd soft.version.rpm所在 ...

  8. linux打开文件命令_详解Linux中3个文件查找相关命令

    来自:民工哥技术之路 1.which命令 我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which  查看可执行文件的位置. whereis 查看文件的位置. ...

  9. linux 消息对lie_详解linux进程间通信-消息队列

    前言:前面讨论了信号.管道的进程间通信方式,接下来将讨论消息队列. 一.系统V IPC 三种系统V IPC:消息队列.信号量以及共享内存(共享存储器)之间有很多相似之处. 每个内核中的 I P C结构 ...

最新文章

  1. 淘宝精品案例JS、jQuery
  2. C++类构造函数初始化列表
  3. 内排序及时间复杂度分析-插入排序选择排序交换排序归并排序分配和索引排序对比...
  4. UA MATH571A QE练习 R语言 多重共线性与岭回归
  5. matlab 混合C++编程mex方式初级入门
  6. 新手入门深度学习 | 第六篇:TensorFlow2 回调极速入门
  7. 【AI出牌器】第一次见这么“刺激”的斗地主,胜率高的关键因素竟是......
  8. 编码的喜悦……以及Java中的变异测试
  9. 安卓游戏开发推箱子_保持冷静并砍箱子-开发
  10. datatable的数据进行组内排序_排序算法学习分享(四)希尔排序
  11. 部署全局ajax处理
  12. (新手)使用pandas操作EXCEL
  13. HP MSA500 G2安装配置
  14. 计算机论文3000字文献,计算机学术论文3000字计算机学术毕业论文范文模板.pdf
  15. CSS display属性 – 不显示、显示表格、内联块等
  16. java dispatch_Dispatch 方法
  17. 不管发生什么事,最重要的是拥有乐观积极的心态,困难总会过去的。
  18. js 下载 download
  19. php脚本的执行过程(编译与执行相分离)
  20. Qt之程序加密授权[1]

热门文章

  1. X命名空间-标记扩展
  2. Ubuntu 8.04 LTS的离线升级包运用教程
  3. 辐流式重力浓缩池计算_注册考试重点!平流式、竖流式、辐流式、斜板式4大沉淀池构型...
  4. otl_stream查询返回数据_Hive查询的18种方式,你都学会了吗?
  5. 怎样通过vb设置透视表多项选择_四个操作带你玩转数据透视表,秒杀Excel函数,提升你的工作效率...
  6. kde重启_重启崩溃的 KDE
  7. matlab 矩阵引用,MATLAB矩阵生成、引用
  8. 新冠疫苗接种宣传海报PSD素材模板
  9. UI素材模板|优秀的后台管理系统UI面板
  10. 蒸汽朋克简单图形免扣PNG素材,让设计艺术变得简单