Linux 网桥功能使用

网桥是在数据链路层,将两个LAN连接起来,根据MAC地质来转发帧,可以看作是低层的路由器。

安装网桥配置工具

检测系统中是否有有bridge 工具:rpm -qa | grep bridge

我这里执行这个命令失败。然后直接跳过检测,执行网桥创建。

~ # brctl addbr br0
brctl: bridge br0: Package not installed

提示我未安装。那么我们直接安装bridge工具,这里通过编译内核模块来进行安装。

cp arch/arm/configs/hi3518ev201_full_defconfig  .config
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig
make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- modules

menuconfig中我们需要配置 Networking support -> Networing options -> 802.1d Ethernet Bridging 内核模块,这里选择,不编译进内核,我们直接通过手动加载ko的方式来使用。

将下列的模块复制到板卡上系统上,使用ismod依次加载llc.kostp.kobridge.ko。或者直接使用modprobe bridge.ko自动安装.ko及依赖,前提是要现在/lib/modules/$(uname -r)下执行depmod

cp $(find . -name "*bridge*.ko") ../modules/
cp $(find . -name "*stp*.ko") ../modules/
cp $(find . -name "*llc*.ko") ../modules/

再次创建网桥br0,这是已经不会报错了。

/lib/modules/3.4.35 # insmod llc.ko
/lib/modules/3.4.35 # insmod stp.ko
/lib/modules/3.4.35 # insmod bridge.ko
/lib/modules/3.4.35 # brctl addbr br0

这里是怎么知道还需要加载llc.kostp.ko的呢?

因为直接加载bridge.ko会失败,报如下错误:

/mnt # ismod ./bridge.ko
-sh: ismod: not found
/mnt # insmod bridge.ko
bridge: Unknown symbol llc_mac_hdr_init (err 0)
bridge: Unknown symbol stp_proto_register (err 0)
bridge: Unknown symbol stp_proto_unregister (err 0)
insmod: can't insert 'bridge.ko': unknown symbol in module, or unknown parameter

这时,将所有的.ko文件放到/lib/modules/$(uname -r)目录下,然后执行depmod,再对需要查看的ko文件modinfo bridge.ko。这里可以看到bridge.ko依赖两个模块。这里就可以知道我们还需要什么模块了。

/lib/modules/3.4.35 # modinfo bridge.ko
filename:       bridge.ko
license:        GPL
vermagic:       3.4.35 mod_unload ARMv5 p2v8
depends:        stp,llc

配置网桥

参考:

https://blog.51cto.com/lihongweibj/1657851

https://www.lizhongyi.com/archives/linux-双网卡桥接模式配置/

创建网桥逻辑接口

/lib/modules/3.4.35 # brctl addbr br0
/lib/modules/3.4.35 # ifconfig -a
br0       Link encap:Ethernet  HWaddr 02:67:3A:73:0D:1BBROADCAST MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:0RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)eth0      Link encap:Ethernet  HWaddr 76:06:E1:4F:95:86inet addr:192.168.47.100  Bcast:192.168.47.255  Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:1312 errors:0 dropped:0 overruns:0 frame:0TX packets:170 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:239162 (233.5 KiB)  TX bytes:18232 (17.8 KiB)Interrupt:12

添加网口到网桥

/lib/modules/3.4.35 # brctl addif br0 eth0
device eth0 entered promiscuous mode
/lib/modules/3.4.35 # brctl addif br0 ra0
device ra0 entered promiscuous mode

设置网卡设备为混杂模式

ifconfig eth0 0.0.0.0
ifconfig ra0 0.0.0.0

设置网桥IP

ifconfig br0 172.16.1.1/24

eth0为板卡的Lan口,ra0是板卡上的无线网卡。此时eth0连接的是虚拟机,手机连接到ra0上的。通过在虚拟机上ping手机IP,可以ping通,证明网桥已经工作了。
此时,两个端口之间可以互相通信,数据包由网桥转发,如果需要两端能和网桥通信,需要将网桥的IP地址和端口外的网络设置在一个网段。

相关参考。

设置开机脚本

/etc/init.d/S99app1:

#!/bin/shecho "Start User Init ...!"modprobe bridge.kobrctl addbr br0
brctl addif br0 eth0
brctl addif br0 ra0ifconfig eth0 0.0.0.0
ifconfig ra0 0.0.0.0
ifconfig br0 172.16.1.1/24

Linux 网桥功能使用相关推荐

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

    概述 在说Linux网桥之前,先介绍几个概念,有助于对网桥的功能及实现有更深的理解. 一个交换网络的逻辑图: 1. 冲突域 一个冲突域由所有能够看到同一个冲突或者被该冲突涉及到的设备组成.以太网使用C ...

  2. TCP原理之:linux网桥

    TCP原理之:linux网桥 0. 前言 Linux内核提供了对网桥的支持,通过建立网桥设备能够将系统中的多个网络接口相连通,实现网络接口之前的通信.为了便于理解,我们可以将网桥想象成现实中的交换机, ...

  3. Linux 网桥配置br-lan、eth0、eth1、ra0、rai0

    Linux网关模式下将有线LAN和无线LAN共享网段实现局域网内互联: 思路其实很简单:就是将虚拟出一个bridge口,将对应的有线LAN和无线LAN都绑定在这个虚拟bridge口上,并给这个brid ...

  4. linux网桥的简单理解和配置

    linux网桥的简单理解和配置 Linux网桥是linux虚拟网络设备之一.网上很多分析linux网桥的文章,例如代码层面的分析.这里不牵扯复杂的分析和配置,主要是面向虚拟机链接一个用途,小白我的备忘 ...

  5. linux网桥简单理解和持久化配置

    文章目录 前言 一.Linux 网桥是什么? 二.网桥主要作用 三.网桥配置命令及安装(CentOS系统) 1 网桥配置命令 2.持久化网桥配置 前言 linux bridge是网络虚拟化中非常重要的 ...

  6. linux 网桥搭建

    # brctl addbr br0                    (建立一个逻辑网段,名称为br0) # brctl stp br0 off (可选,STP生成树协议,可以避免形成一个环) # ...

  7. [转载] Linux网桥浅析

    linux网桥浅析 原文链接:http://hi.baidu.com/_kouu/item/25787d38efec56637c034bd0 什么是桥接? 简单来说,桥接就是把一台机器上的若干个网络接 ...

  8. linux 网桥br0配置

    网桥 桥接:把一台机器上的若干个网络接口"连接"起来.其结果是,其中一个网 口收到的报文会被复制给其他网口并发送出去.以使得网口之间的报文能够互 相转发.网桥就是这样一个设备,它有 ...

  9. 写一个程序来模拟网桥功能。

    一.实验内容 模拟实现网桥的转发功能,以从文件中读取帧模拟网桥从网络中收到一帧,即从两个文件中读入一系列帧,从第一个文件中读入一帧然后从第二个文件中再读入一帧,如此下去.对每一帧,显示网桥是否会转发. ...

  10. Linux网桥实现分析

    1.    前言 本文结合网络上关于Linux网桥的说明. Linux平台的代码阅读记录,整理的一篇总结性文档.由于时间仓促,分析可能存在不足之外,望大家见谅和指正. 对于接触过Linux 网络的童鞋 ...

最新文章

  1. TensorRT Samples: CharRNN
  2. 内核启动流程分析(四)源码浅析
  3. 功能内聚C语言例子,为每种类型的模块内聚举一个具体的例子
  4. Spring事务 Transaction rolled back because it has been marked as rollback-only
  5. java 图形校验_java图形验证码生成工具类 web页面校验验证码
  6. 安卓linux环境 查看进程,查看基于Android 系统单个进程内存、CPU使用情况的几种方法...
  7. php用到的mysql语句_PHP中常用到的一些MySQL语句_php
  8. (mac)阿里云ECS服务器配置过程
  9. 线性代数学习笔记(二)
  10. Android应用性能优化之优化列表头像过度绘制[一]
  11. Derby安装使用说明
  12. Android.mk的一些FAQ
  13. python写一个定时关机软件
  14. steam加速_Steam玩家们快看看,追梦加速器的试用体验者怎么说?
  15. 【libmodbus-vs2019】测试使用
  16. 服务器远程训练,远程服务器 Linux 用cityscape训练DeepLabv3模型(Pytorch版)
  17. mybatis删除成功返回0_【出租/转租】2020.08.08亦庄周边信息汇总。增1个,删0个。(转租成功后私信我删除你的信息)...
  18. vue报错 | Duplicate keys detected: ‘0’. This may cause an update error.
  19. BC #38 / HDU5208 Where is Bob · 数位dp
  20. 在macOS系统下外接硬盘安装windows10虚拟机

热门文章

  1. Python办公自动化之Excel报表自动化,看这一篇就够了!
  2. 服务器维修报告单,服务器维修报告.pdf
  3. 15家企业入选2020年中国最佳雇主榜单;《新形势下国企数字化转型之路》白皮书发布 | 美通企业日报...
  4. 软件开源许可协议简介
  5. 星球大战7:原力觉醒[Star Wars Episode VII:The Force Awakens]
  6. L2-016 愿天下有情人都是失散多年的兄妹(25 分)
  7. 数据分析可视化08 案例 2:历史数据变化趋势图设计
  8. Anaconda Prompt :python.exe - 无法找到入口,无法定位程序输入点
  9. 4816: [Sdoi2017]数字表格
  10. kubeadm部署1.11.1的k8s集群