BATMAN.adv系列02:网络搭建,有线接入BATMAN.adv网络

原创文章,转发请注明链接和作者。(而且作者很懒,没有检查错别字)

摘要

本文主要讲解如何通过openwrt的路由器搭建batman网络,包括通过有线接入batman网络。本文假定路由器已经成功安装了openwrt系统,由于安装系统的较多,本文不再赘述。

1      batman-adv的安装

首先需要确保自己的路由器安装了batman-adv安装方法有很多种,这里推荐2种。通过以下命令可以查看是否安装了batman-adv

opkg list | grep kmod-batman-adv

如果常规安装了通常会有以下输出:

kmod-batman-adv - 4.9.172+2018.1-7

1.2       okpg安装法

输入opkg install kmod-batman-adv即可安装batman-adv

输入opkg install batctl可以安装一个batman-adv的管理工具,虽然不是必须,但是推荐安装一下

1.3       编译安装

此方法类似于重新编译openwrt,因此需要参考内核编译的相关内容,这里以WNDR4300为例讲解,以下操作在Linux中进行,作者采用的是ubunt18

  1. 下载Openwrt源码,然后进入源码的根目录
  2. 更新安装包:
    ./scripts/feeds update –a
  3. 安装软件包到feeds文件夹:
    ./scripts/feeds install –a
  4. 添加Batman源码和Batman调试工具batctl
    scripts/feeds install kmod-batman-adv
    scripts/feeds install batctl
  5. 通过输入下文进入配置:
    make menuconfig
  6. 根据自己的路由器型号选择型号:
    Subtarget ---> Generic devices with NAND flash
    Target System ---> Atheros AR7xxx/AR9xxx
    Target Profile ---> NETGEAR WNDR4300v1
  7. 将Batman源码添加进编译选项中
    Kernel modules ---> Network Support ---> kmod-batman-adv
  8. 添加Batman的调试工具batctl
    Network --->batctl
  9. 添加iperf带宽测试工具。
    Network - - - >iperf
  10. 为OpenWrt系统添加LuCI,方便通过网络界面控制
    LuCI ---> Collections ---> luci
  11.   (可选)为例方便控制我们可以添加以下服务

    Network  ---> SSH ---> openssh-client
    Network  ---> SSH ---> openssh-client-utils
    Network  ---> SSH ---> openssh-keygen
    Network  ---> SSH ---> openssh-server
    Network  ---> SSH ---> openssh-sftp-client
    Network  ---> SSH ---> openssh-sftp-server

  12. 开始编译,其中V=s表示显示详细信息,-jx表示x个线程(推荐与核心数相同):
    make V=s -j4

第一次编译的时间较长,由电脑的CPU确定。

完成上述工作后,需要将编译好的系统植入路由器。读者根据当前路由器情况选择一种更新固件的办法:

1、路由器还是原生系统或者忘记密码了希望重置整个openwrt系统:

  百度或谷歌搜索将编译好的镜像烧录至路由器的办法,本文不提供

2、已经烧录好了openwrt,想换成本文刚刚编译好的系统:

  (不同路由器路径会不同)可以在/bin/targets/ar71xx/nand/可以找到一个文件openwrt-ar71xx-nand-wndr4300-squashfs-sysupgrade.tar。登陆路由器管理界面之后进入:System--->Backup.Flash Firmware,选择openwrt-ar71xx-nand-wndr4300-squashfs-sysupgrade.tar刷入。好像还有别的升级办法,具体自己搜索。

 

 

 

 

 

 

2      组建无线batman网络

这一步主要是使得各个路由器可以通过batman网络互联。

下面会涉及到对许多文件的修改,可以使用ssh连接路由器后用vim命令打开文件并且修改,也可以通过fts或者sftp等方式把文件下载到电脑中然后修改并上传。

2.1       对/etc/config/wireless文件的修改

1、本次修改以2.4G 无线网络为例。修改2.4G Wifi的硬件配置如下,本设置相当于是对wifi工作的频率等物理信息进行设置,标红的部分下文会有讲解:

config wifi-device 'radio0'

      option type 'mac80211'

      option channel '9'

      option hwmode '11g'

      option path 'platform/ar934x_wmac'

      option htmode 'HT40'

      option country 'US'

其中channel应该根据自己的要求设置,应该选择一个干扰比较少的信道。

option hwmode '11g' :表示是802.11g

不了解802.11协议中带宽的可以参考:https://kknews.cc/zh-hk/tech/qe8x8nr.html

 

2、然后将2.4G的网络配置修改如下,本设置相当于是对网络中协议相关的部分进行设置,标红的部分下文会有讲解:

config wifi-iface 'wmesh'

      option device 'radio0'

      option ifname 'adhoc0'

      option network 'batnet'

      option mode 'adhoc'

      option ssid 'mesh'

      option mcast_rate '18000'

      option bssid '02:CA:FE:CA:CA:40'

      option encryption 'none'

 

option device 'radio0':表明设定设备为'radio0'

option ifname 'adhoc0':将设备的接口设定为adhoc0

option network 'batnet':设定使用的是batman网络

option mode 'adhoc':表明2.4G的网络工作在adhoc模式

option ssid 'mesh':将wifi名称设置为mesh,对于ssid不了解的可以自行搜索。

option bssid '02:CA:FE:CA:CA:40':将wifi的bssid设置成02:CA:FE:CA:CA:40。对于,对于bssid不了解的可以自行搜索。

注意:在同一个网络中的所有Batman节点,应满足以下几个条件:(1)Wifi的频率相同,channel相同;(2)MAC地址不同,如果MAC地址相同的话,就不能够组网,这是当所有自组网不能组网的时候首先应该被排除的一个条件(3)bssid相同。

可能会有一个“ option disabled '1' ”的选项,见到了记得改成0

2.2       对/etc/config/network的配置

这里我们首先保证路由器直接可以ping通,之后再做桥接

1、添加如下

config interface 'batnet'

        option mtu '1560'

        option proto 'batadv'

        option mesh 'bat0'

        option routing_algo 'BATMAN_V'    

 

config interface 'batnet':添加一个网络接口,名为batnet

  • option proto 'batadv':该接口使用batadv协议
  • option mesh 'bat0':mesh网络为名为bat0
  • option routing_algo 'BATMAN_V'       :使用BATMAN_V路由算法

2、添加如下

config interface 'bat'

      option ifname 'bat0'

      option type 'bridge'

      option proto 'static'

      option mtu '1560'

      option ipaddr '10.0.0.1'

      option netmask '255.0.0.0'

这里设置了一个桥接以及路由器在btaman网络中的IP地址

config interface 'bat':添加一个网络接口,名为bat

option ifname 'bat0':选择一个物理层的接口名为bat0,实际上bat0就是batman-adv对应的物理接口,向该接口发包就会在batman网络中转发

option type 'bridge':设定此网络接口为桥接

option proto 'static':静态IP协议

option ipaddr '10.0.0.1':这里就是设置路由器自己的IP地址,不同路由器应该要有不同的IP,可以根据需要选择合适的网段,通常可以作为内网的网段10.0.0.0~10.255.255.255,172.16.0.0~172.31.255.255,192.168.0.0~192.168.255.255。

option netmask '255.0.0.0':这是根据网段选择的掩码

2.3       测试

记得,做到这一步需要先重启一下

输入batctl n可以查看路由器是找到了btaman网络中的其他路由器。

使用ping命令检查是否可以通过IP连同对应的路由器

3      有线设备接入batman网络

默认情况下,所的有线接口都是桥接在一起,然后通过WAN口访问网络的,现在需要将一个有线接口桥接到bat0网络,这样就可以是的有线设备接入batman网络了。然后对有线设备静态分配一个IP就可以在batman中使用IP连接不同设备了。

这里需要了解VLAN的相关内容,关于VLAN的内容可以参考:
https://baijiahao.baidu.com/s?id=1628398215665219628&wfr=spider&for=pc

这部分设计的配置文件都是/etc/config/network

 

 

 

3.1       系统默认的VLAN设置

打开路由器管理界面就,在Network下来菜单中的Switch可以看到VLAN的配置情况。这里显示untragged的就相当于接入了VLAN,tagged的我们不会用到,无需理会。

我们再从配置文件中查看,选择一个路由器查看/ect/config/network文件可以看到,系统一开始就已经创建了两个VLAN,其中1,2,3,4,0被连接到了VLAN1上,VLAN1在lan接口中被配置成了桥接。这个lan接口可以在路由器管理界面中的在Network下来菜单中的Interface中看到。

 

 

 

3.2       修改配置文件使得有线接入BATMAN网络

这里我们开始修改配置文件使得有线接入BATMAN网络,这里我们只选择一个接口接入BATMAN网络,多个接口的情况相似,以下有几个需要注意的点:

  1. 配置文件中的编号和实际中LAN口的编号会有所不同,配置完之后去Network下来菜单中的Switch中看一眼,这一点下面会再次强调。
  2. 因为VLAN1被lan接口占用了,所有我们应该新建一个VLAN

3.2.1   修改VLAN

本人新建了一个VLAN3,并且将4号接口从VLAN1中移除,接入到了VLAN3中,记得VLAN3中也需要有加入0号口并且处于tageted状态。这样,网卡中同时也会出现一个名为eth0.3的虚拟网卡。(不同路由器可能会有不同的switch设备,最后生成的可能也不一定是eth0.3,可能会是eth1.3等)

 

 

 

3.2.2   桥接入batman网络

将eth0.3加入bat接口,保存,然后重启路由器就可以了

 

 

3.2      有线接口的编号和配置文件中的可能不一样

注意:有线接口的编号和配置文件中的可能不一样

下面有一个本人路由器的例子由上文可知,我在配置文件中选择加入VLAN3的编号是4,但是实际上在Network下来菜单中的Switch界面可以看到,发生变化的接口是LAN1

 

4.1       有线接入设备的设置

这里以ubutnu18为例,设置静态ip就可以了。接入后,所有的BATMAN.adv网络中的有线接口相当于在一个交换机下,同给路由器配置的BATMAN.adv ip地址可以直接访问路由器。

 

posted @ 2019-10-17 12:05  zornlink  阅读(6587)  评论(0编辑  收藏  举报