因无人机通信需要,通过内置网卡热点构建AP-AC簇内网络,外置网卡构建Ad-Hoc簇间网络。
簇间网络设置
iwconfig查看网卡型号
ifconfig查看网卡ip
配置网卡信息
sudo nano /etc/network/interfaces
例如:(假设ad-hoc网络为192.168.120.0/24,A为192.168.120.1,B为192.168.120.2)
auto wlx90de803014a8 #该处填写自己的网卡名称
iface wlx90de803014a8 inet static
address 192.168.120.1 #ad-hoc模式下ip地址
netmask 255.255.255.0 #子网掩码
network 192.168.120.0 #网络范围
broadcast 192.168.120.255 #广播域
wireless-channel 1
wireless-essid CPS-IBSS
wireless-mode ad-hoc
簇内网络设置
AP设置
开启wifi热点,使用工具修改热点网关地址以及ip地址范围
nm-connection-editor
点击HotSpot进行ipv4设置
例如A的热点地址为192.168.121.1 子网掩码为255.255.255.0 网关为192.168.121.1
则A的热点为AC提供的网段为192.168.121.0/24
路由转发设置
AC通信会自动经过AP,所以无需为AC编写路由转发路径,但需确定各个簇内网段,例如A簇所在的网段为192.168.121.0/24,B簇所在的网段为192.168.122.0/24。
主无人机路由转发配置
开启路由转发
sudo sysctl -w net.ipv4.ip_forward=1
修改路由表,例如此处A簇到B簇需要经过Ad-hoc网络到B主无人机,则需要在路由中写下到192.168.122.0/24网络需要经过192.168.120.2
sudo ip route add 192.168.122.0/24 via 192.168.120.2 #在A主无人机上添加,192.168.120.2是B的簇间网络ip
该方式添加的路由转发信息会在重启后失效,需改写配置文件,例:
sudo nano /etc/network/interfaces
auto wlx90de803014a8
iface wlx90de803014a8 inet static
address 192.168.120.1
netmask 255.255.255.0
network 192.168.120.0
broadcast 192.168.120.255
wireless-channel 1
wireless-essid CPS-IBSS
wireless-mode ad-hoc
#以下为新添部分
post-up ip route add 192.168.122.0/24 via 192.168.120.2
post-down ip route del 192.168.122.0/24 via 192.168.120.2
由于AP的防火墙设置默认会屏蔽外界对AC的通信,因此需要关闭AP的防火墙机制
sudo iptables -I FORWARD -p icmp -j ACCEPT #允许所有的icmp包通信
重启网络服务
sudo systemctl restart networking
再测试,可以通过AB,使得a1能够ping通b1。