摘要
本文主要講解如何通過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
- 下載Openwrt源碼,然后進入源碼的根目錄
- 更新安裝包:
./scripts/feeds update –a - 安裝軟件包到feeds文件夾:
./scripts/feeds install –a - 添加Batman源碼和Batman調試工具batctl
scripts/feeds install kmod-batman-adv
scripts/feeds install batctl - 通過輸入下文進入配置:
make menuconfig - 根據自己的路由器型號選擇型號:
Subtarget ---> Generic devices with NAND flash
Target System ---> Atheros AR7xxx/AR9xxx
Target Profile ---> NETGEAR WNDR4300v1 - 將Batman源碼添加進編譯選項中
Kernel modules ---> Network Support ---> kmod-batman-adv - 添加Batman的調試工具batctl
Network --->batctl - 添加iperf帶寬測試工具。
Network - - - >iperf - 為OpenWrt系統添加LuCI,方便通過網絡界面控制
LuCI ---> Collections ---> luci - 11. (可選)為例方便控制我們可以添加以下服務
Network ---> SSH ---> openssh-sftp-server - 開始編譯:
make V=s -j4
第一次編譯的時間較長,由電腦的CPU確定。
完成上述之后可以在/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相同。
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網絡,多個接口的情況相似,以下有幾個需要注意的點:
- 配置文件中的編號和實際中LAN口的編號會有所不同,配置完之后去Network下來菜單中的Switch中看一眼,這一點下面會再次強調。
- 因為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就可以了