1. 网桥基础

什么是网桥

网桥将多个网络在数据链路层连接起来。
网桥的前身是集线器或中继器。网桥和集线器的区别:集线器上各端口都是共享同一条背板总线的,网桥的两个端口分别有一条独立的交换信道,不是共享一条背板总线,可隔离冲突域。

Linux下的bridge,工作于数据链路层,对下层而言是一个桥设备,进行数据的转发;对上层而言,它就像普通的ethernet设备一样,有自己的IP和MAC地址,上层可以把它加入路由系统,并利用它发送接收数据。
当把一个网络接口加入到Bridge中,Bridge成为该接口的主设备,该接口成为Bridge的从设备。当把一个网络接口加入到Bridge中,实际上是Bridge接管了该接口首发包的过程。(设置dev->prive_flags加上IFF_BRIDGE_PORT,这样它就不能再作为其他br的从设备了;并设置dev->rx_handler为br_handler_frame())
发包:Bridge调用从设备dev->ops->ndo_start_xmit(skb,dev))发包;
收包:接收接口通过netif_receive_skb(skb)函数调用dev->rx_handler也就是br_handler_frame()交给Bridge处理包。

2. 网桥应用

Linux 网桥配置命令brctl

在Linux中配置网络一般使用 brctl命令,使用此命令首先要安装:bridge-utils软件包。

  1. [inbi@debian~]#apt-get install bridge-utils
  2. [inbi@debian~]#modprobe bridge
  3. [inbi@debian~]#echo "">/proc/sys/net/ipv4/ip_forward
  4. #安装bridge-utils软件包,并加载bridge模块和开启内核转发。
  5. [inbi@debian~]#brctl
  6. #直接输入brctl命令将显示帮助信息!
  7. Usage: brctl [commands]
  8. commands:
  9. addbr <bridge> add bridge
  10. delbr <bridge> delete bridge
  11. addif <bridge> <device> add interface to bridge
  12. delif <bridge> <device> delete interface from bridge
  13. setageing <bridge> <time> set ageing time
  14. setbridgeprio <bridge> <prio> set bridge priority
  15. setfd <bridge> <time> set bridge forward delay
  16. sethello <bridge> <time> set hello time
  17. setmaxage <bridge> <time> set max message age
  18. setpathcost <bridge> <port> <cost> set path cost
  19. setportprio <bridge> <port> <prio> set port priority
  20. show show a list of bridges
  21. showmacs <bridge> show a list of mac addrs
  22. showstp <bridge> show bridge stp info
  23. stp <bridge> {on|off} turn stp on/off

增加网桥
[inbi@debian~]#brctl addbr br0
#增加一个网桥
[inbi@debian~]#ifconfig eth0 0.0.0.0 promisc
[inbi@debian~]#ifconfig eth1 0.0.0.0 promisc
[inbi@debian~]#brctl addif br0 eth0 eth1
#将两块已有的网卡添加到网桥,此时这两个网卡工作于混杂模式,所以不需要IP了,因为网桥是工作在链路层的。
[inbi@debian~]#brctl show
#查看已有网桥

你也可以为 br0 设置一个IP,已访问这台机器。
[inbi@debian~]#ifconfig br0 10.10.1.1 netmask 255.255.0.0 up
删除网桥
[inbi@debian~]#brctl delif br0 eth0 eth1
#增加网桥中的接口
[inbi@debian~]#brctl delbr br0
#删除网桥
关闭生成树
[inbi@debian~]#brctl stp br0 off
#关闭生成树协议,减少数据包污染,因为我这里只有一个路由器哦!
配置桥开机激活
[inbi@debian~]#echo "modprobe bridge">>/etc/rc.local
#开机加载 bridge 模块,或者echo "bridge">>/etc/modules
[inbi@debian~]#cp /etc/network/interfaces /etc/network/interfaces.default
#备份下,方便以后使用啊!

  1. [inbi@debian~]#vim /etc/network/interfaces
  2. auto lo eth0 eth1 br0
  3. iface lo inet loopback
  4. iface br0 inet static
  5. address 10.10.10.1
  6. netmask 255.255.0.0
  7. gateway 10.10.10.254
  8. pre-up ip link set eth0 promisc on
  9. pre-up ip link set eth1 promisc on
  10. pre-up echo "">/proc/sys/net/ipv4/ip_forward
  11. bridge_ports eth0 eth1

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

参考:http://fp-moon.iteye.com/blog/1468650

网桥bridge的更多相关文章

  1. ubuntu网桥设置

    什么是桥接? 桥接(Bridging),是指依据OSI网络模型的链路层的地址,对网络数据包进行转发的过程,工作在OSI的第二层.一般的交换机,网桥就有桥接作用. 一般的交换机,网桥就有桥接作用.就交换 ...

  2. QEMU网络模式(一)——bridge

    网络配置 QEMU支持的网络模式 qemu-kvm主要向客户机提供了4种不同模式的网络. 1)基于网桥(bridge)的虚拟网卡; 2)基于NAT的虚拟网络 3)QEMU内置的用户模式网络(user ...

  3. 前端学HTTP之网络基础

    × 目录 [1]网络 [2]OSI [3]TCP/IP 前面的话 HTTP协议对于前端工程师是非常重要的.我们在浏览网站时,访问的每一个WEB页面都需要使用HTTP协议实现.如果不了解HTTP协议,就 ...

  4. 计算机网络学习笔记--数据链据层之MAC子层(整理)

    概述: 为什么需要介质访问控制子层(MAC)? 介质访问控制子层(MAC)是局域网体系结构中划分的子层,多路访问链路采用共享介质连接所有站点.发送站点通过广播方式发送数据并占用整个带宽,如果有多个站点 ...

  5. docker容器分配静态IP

    最近因为工作要求需要用学习使用docker,最后卡在了网络配置这一块.默认情况下启动容器的时候,docker容器使用的是bridge策略比如: docker run -ti ubuntu:latest ...

  6. CCNA网络工程师学习进程(2)基本的网络设备

      在组网技术中用到的设备有中继器(Repeater).集线器(Hub).网桥(Bridge).交换机(Switch).路由器(Router).分别工作在OSI参考模型中的物理层.数据链路层和网络层. ...

  7. KVM 介绍(3):I/O 全虚拟化和准虚拟化 [KVM I/O QEMU Full-Virtualizaiton Para-virtualization]

    学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...

  8. 『TCP/IP详解——卷一:协议』读书笔记——01

    从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...

  9. Linux就这个范儿 第13章 打通任督二脉

    Linux就这个范儿 第13章 打通任督二脉 0111010110……你有没有想过,数据从看得见或看不见的线缆上飞来飞去,是怎么实现的呢?数据传输业务的未来又在哪里?在前面两章中我们学习了Linux网 ...

随机推荐

  1. vb.net中将DataGridView与数据源绑定

    在< .net中将DataGridView内的数据导出为Excel表格>中说了如何导出数据到Excel,今天这篇文章将讲述如何绑定数据源,在控件中显示我们需要的信息. 在敲机房收费系统的时 ...

  2. myeclipse发布项目到tomcat时项目名称与web应用名称不一致问题

    工程名称原来为old,发布到tomcat webapps下后为old, 右键点击你的项目,然后选择重构---->重命名,项目名称改为new,但是发布名还是原来的名字.如果想让发布后的目录名为ne ...

  3. es6 - 回调深渊

    带着以下疑问来解答以下问题,你会学到很多 1. 回调深渊为什么会出现,为什么需要回调 ? 2. ES6为什么会出现Promise? 3. 回调的作用是什么? 跟闭包有关吗? ES5 ~ ES6 回调深 ...

  4. Quartz.Net的使用(简单配置方法)定时任务框架

    Quartz.dll 安装nuget在线获取dll包管理器,从中获取最新版 Quartz.Net是一个定时任务框架,可以实现异常灵活的定时任务,开发人员只要编写少量的代码就可以实现“每隔1小时执行”. ...

  5. 工具篇:如何使用junit.jar进行测试

    一.网上下载:junit.jar包 下载地址:https://sourceforge.net/projects/junit/?source=typ_redirect 二.导入指定项目中 三.在指定方法 ...

  6. 搭建Android开发环境之旅

    1.首先要下载相关的软件 1). JDK 6 以上 2). eclipse( Version 3.6.2  or higher ) 点击下载 3). SDK(android-sdk_r18-windo ...

  7. Android File类 根据官方文档理解(转)

    File有四个构造函数        public File(File dir,String name)             参数为File和String,File制定构造的新的File对象的路径 ...

  8. 〖Android〗巧用/system/etc/mkshrc文件,把busybox常用命令映射(链接)出来;

    在/system/etc/mkshrc文中尾部添加以下代码即可: # for busybox for n in $(busybox --list) do eval alias $n=\'busybox ...

  9. 利用ThreadLocal建立高质量事务处理

    ThreadLocal此类是一个以当前线程为key的map对象的构想. 当我们在web开发中,多个浏览器访问的时候,servlet为它们各开线程执行相应代码,而事务的执行依赖于特定的一个Connect ...

  10. 【LeetCode】99. Recover Binary Search Tree

    Recover Binary Search Tree Two elements of a binary search tree (BST) are swapped by mistake. Recove ...