RaspberryPi 自组网

RaspberryPi 自组网

利用 batman-adv进行mesh组网,让多个Raspberry进行网络互通。
需要自己安装一个网卡用来联网
使用树莓派自带的wlan口wlan0进行组网

配置过程中需要下载软件安装包,因此需要联网

连接网络

我用的是有屏幕连接,连接之后,在wpa_supplicant中配置了我的wifi信息,包括wifi名称和密码以及优先级(非必须)
其次在interfaces中配置了端口wlan0的信息。
步骤如下:

配置wap_supplicant文件

在命令行中输入

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

进入界面后,添加下面语句

ctrl_interface=DIR=/var/run/wpa_supplicnat GROUP=netdev
update_config=1
country=CN

network={
				ssid=''XXXX''
				psk=''XXXX''
				priority=10
				}

ssid是WiFi的名称,psk是WiFi的密码,priority是优先级,有多个WiFi的时候可以设置优先级,选择联网的匹配顺序,priority值越大,优先级越高。

配置interfaces文件

在命令行中输入

sudo nano /etc/network/interfaces

进入界面后,添加下面语句

auto wlan1
allow-hotplug wlan1
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf  #让wlan1端口通过WiFi配置文件进行联网

#配置wlan0 设置为ad-hoc模式,方便组网
auto wlan0
iface wlan0 inet static
address  99.0.0.1
netmask 255.255.255.0
network 99.0.0.0
broadcast 99.0.0.255
wireless-channel 1
wireless-essid test-adhoc
wireless-mode ad-hoc

auto wlan0 //表示如果有wlan设备,使用wlan0设备名
allow-hotplug wlan0 //表示wlan设备可以热插拨
iface wlan0 inet dhcp //表示如果有WLAN网卡wlan0 (就是WIFI网卡), 则用dhcp获得IP地址

这里使用iface wlan0 inet static //将wlan0配置为静态地址,用来和其余树莓派进行组网
设置多个Pi的IP地址应该在同一网段(例如99.0.0.0)

wireless-channel 01 
wireless-essid test-adhoc #ad-hoc网络的名称,可以任取,但要保持一致
wireless-mode ad-hoc #将模式设置为ad-hoc模式

所有树莓派的这几个信息设置应该保持一致,将channel设置为01,当然也可以设置成其他频道,但所有Pi应该保持一致
可以在命令窗口使用以下语句进行查看有哪些channel可用

sudo iwlist wlan0 channel

完成apt-get的安装更新

在命令窗口中输入

sudo apt-get update && sudo apt-get upgrade -y

完成apt-get的安装
然后重启

sudo reboot -n

设置batman-adv

安装batman-adv软件

sudo apt-get install -y batctl

配置start-batman-adv.sh文件

在命令行中输入以下命令

sudo nano ~/start-batman-adv.sh

在打开的窗口中输入以下命令

#!/bin/bash
# batman-adv interface to use
sudo batctl if add wlan0
sudo ifconfig bat0 mtu 1468

# Tell batman-adv this is a gateway client
sudo batctl gw_mode client

# Activates batman-adv interfaces
sudo ifconfig wlan0 up
sudo ifconfig bat0 up

保存并退出

将start-batman-adv.sh文件变成可执行文件

在窗口中输入命令

sudo chmod +x ~/start-batman-adv.sh
确保加载batman-adv内核模块
echo 'batman-adv' | sudo tee --append /etc/modules
停止dhcp 进程尝试管理无线局域网接口wlan0:
echo 'denyinterfaces wlan0' | sudo tee --append /etc/dhcpcd.conf

将启动start-batman-adv.sh文件写入开机启动项中

sudo nano /etc/rc.local

在exit 0前插入

/home/pi/start-batman-adv.sh &

之后重启树莓派即可

查看网络节点

在命令窗口输入

sudo barctl n

可以查看到包含的树莓派设备的ad-hoc端口的MAC地址,如果想要识别出来每个MAC地址对应的是哪个树莓派
可以在etc文件夹下建立一个文件

sudo nano /etc/bat-hosts

在弹出的窗口中输入以下命令

MAC 名称

即 将对应的MAC地址映射成为对应设置的名称
在命令窗口输入

sudo batctl n

可以观察到此时显示的已经是设置的名称而不是MAC地址,可以更方便的分辨对应的设备

ping

在命令窗口输入

ping xxxxxx #对应树莓派的ip地址

如果ping通表示已经互通

linux下ping命令的使用

-d:使用Socket的S0_DEBUG功能;
-c<完成次数>:设置完成要求回应的次数;
-f:极限检测;
-i<间隔秒数>:指定收发信息的间隔时间;
-I<网络界面>:使用指定的网络界面送出数据包; #(大i)
-l<前置载入>:设置在送出要求信息之前,先行发出的数据包;
-n:只输出数值;
-p<范本样式>:设置填满数据包的范本样式;
-q:不显示指令执行过程,开头和结尾的相关信息除外;
-r:忽略普通的Routing Table,直接将数据包送到远端主机上;
-R:记录路由过程;
-s<数据包大小>:设置数据包的大小;
-t<存活数值>:设置存活数值TTL的大小;
-v:详细显示指令的执行过程。

参考

参考以下链接中的部分设置,同时加入了自己的设置,以此满足自己的需求
https://github.com/binnes/WiFiMeshRaspberryPi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值