zoukankan      html  css  js  c++  java
  • armLinux网桥

      网桥也叫桥接器,是连接两个局域网的一种存储/转发设备,它能将一个大的LAN分割为多个网段,或将两个以上的LAN互联为一个逻辑LAN,使LAN上的所有用户都可访问服务器。
    扩展局域网最常见的方法是使用网桥。最简单的网桥有两个端口,复杂些的网桥可以有更多的端口。网桥的每个端口与一个网段相连。咱也不懂这概念,只是知道一点点怎么搭建网桥的方法,记录一下。
     
    1. 准备工作:
      内核支持网桥,需要配置和修改如下参数,内核版本是Linux-3.0.8
      a. 源码修订:
        net/wireless/core.c
        

        net/wireless/util.c

        

        net/bridge/br_if.c

        

           

          net/bridge/br_notify.c

         

           

          net/bridge/br_stp_if.c

          

        b. 打开内核选项:

          我这里选的是M,编译成ko,后面手动加载到系统。

          

                     

       c. 编译内核:

          先整体编译,再进入内核目录,编译驱动。

          make 

          make ARCH=arm CROSS_COMPILE=arm-linux- modules 

          编译成功会生成如下几个驱动文件,这是我们需要的: 

          cp ./net/bridge/bridge.ko ../modules/ -rf
          cp ./net/llc/llc.ko ../modules/ -rf
          cp ./net/802/stp.ko ../modules/ -rf
          cp ./net/mac80211/mac80211.ko ../modules/ -rf
          cp ./net/wireless/cfg80211.ko ../modules/ -rf

          注意,mac80211和cfg80211选项我也是在内核里面配置成<M>,单独编译出来,因为后续的WiFi模组驱动的加载有些需要用到,所以也编译成单独的ko。

        到此,内核的修改和配置问题已经完成。

    2. 需要用到的命令brctl

      可以在busybox里面配置:

      

    3.  正式配置网桥:

      用到的硬件平台和网卡设备:

      一个arm板,两个WiFi模组。

      a. 加载WiFi模组的驱动,将两个WiFi都up起来

        /sbin/insmod /app/lib/modules/cfg80211.ko

          /sbin/insmod /app/lib/modules/mac80211.ko

        记得这两个依赖的mac和cfg也要加载。

        ifconfig wlan0 up

        ifconfig wlan1 up 

        记住这两个WiFi不要给IP,wlan0作为AP,wlan1作为STA。我的理解是两个设备都绑定到br0,共用br0的设备,至于网络的网段,网络的ip分配,都是AP端连接的路由决定的。这两个网卡都只作为br0的绑定,

    整个板配置完成之后,相当于只有br0一个网卡,也只有一个IP。

      b. 新建网桥br0,并将两个网卡加入到网桥。

        /sbin/insmod /app/lib/modules/llc.ko

        /sbin/insmod /app/lib/modules/stp.ko

        /sbin/insmod /app/lib/modules/bridge.ko

        先加载内核编译的驱动,以支持网桥功能。

        /sbin/brctl addbr br0
        ifconfig br0 172.16.11.8

        新建一个网桥br0,给网桥一个固定的IP。当然这个网段要和你连接的路由器在同一网段。

      c. 两个网卡,一个作为STA,连接路由器,另外一个作为AP,桥接到网络之后,对外发射新的AP信号。

        /sbin/brctl addif br0 wlan0    #wlan0 加入网桥br0

        /app/hostapd  -B  hostapd.conf  #wlan0作为AP,开启AP,这里不需要起udhcpd,成功建立之后,ip的分配由路由器决定。

        此处的hostapd.conf参考:

    interface=wlan0
    driver=nl80211
    ctrl_interface=/var/run/hostapd
    ssid=Bridge
    #country_code=US
    ieee80211n=1
    hw_mode=a
    channel=36
    bridge=br0
    #require_ht=1
    #ht_capab=[HT20-][SHORT-GI-20][SHORT-GI-20] 
    auth_algs=1
    #wpa=3
    #wpa_pairwise=TKIP CCMP
    #wpa_passphrase=12345678

        /sbin/brctl addif br0 wlan1    #wlan1加入到网桥

        /app/wpa_supplicant -Dnl80211 -iwlan1 -c /app/wpa-wlan.conf -b br0 &   #wlan1开启STA模式,不需要起udhcpc,此时的ip由br0的静态ip来决定。

        此处的wpa-wlan.conf参考:

    ctrl_interface=/var/run/wpa_supplicant
    update_config=1
    ap_scan=1
    fast_reauth=1
    
    network={
    ssid="aaa"
    psk="12345678"
    }

     看结果:

         两个网卡,加入到了br0

         

         两个网卡设备,整机只有一个br0的IP地址。

        

    到此,wlan1连接到路由器之后,wlan0发射的AP可以直接连接,自动分配到IP。网桥的功能实现。

      

        

        

          

        

        

        

        

      

          

        

     

        

  • 相关阅读:
    算法训练 图形显示
    P1002 谁拿了最多奖学金
    java并发编程实战笔记---(第五章)基础构建模块
    java并发编程实战笔记---(第四章)对象的组合
    java并发编程实战笔记---(第三章)对象的共享
    java并发编程实战笔记---(第二章)线程安全:正确性
    栈溢出
    聊聊分布式事务
    路径问题
    apache 软件历史版本查询
  • 原文地址:https://www.cnblogs.com/TiddlerYu/p/14852112.html
Copyright © 2011-2022 走看看