树莓派配置双网卡分别为AD HOC和AP模式

news2024/12/30 4:28:36

树莓派配置双网卡分别为AD HOC和AP模式

  1. 需求说明:为了实现分级网络管理,将多个无人机分簇,簇间使用AD HOC进行无中心自组织的网络,簇内使用AP-AC模式进行中心化网络。因此,需要配置一台设备,同时完成AD HOC+AP模式的网络配置。
  2. 配置说明:树莓派3B+,安装了64位官方操作系统,插上了一个USB网卡RTL8811CU。
  3. 预期效果
    a. AD HOC可以ping通对方
    b. AP模式可以连接

一、树莓派更新源

  1. 更新源
    a. 首先使用 uname -a 查看系统,结果如下
    在这里插入图片描述
    b. 依照该教程进行源的替换:树莓派官方32位和64位系统换源

  2. 更新和安装库
    a. 更新

sudo apt-get update
sudo apt-get upgrade

b. 安装 dnsmasq

sudo apt update
sudo apt install dnsmasq
  1. 安装USB 网卡驱动
    参考我的另外一个博客,进行安装。

  2. 查看网卡和支持类型

ifconfig
iwconfig
iw list

二、配置wlan0为AD HOC模式

  1. 在配置文件中进行调整:
sudo nano /etc/network/interfaces

使用如下内容来替换文件中的 wlan0 配置部分:

auto wlan0
iface wlan0 inet static
    address 192.168.100.2
    netmask 255.255.255.0
	network 192.168.100.0
    broadcast 192.168.100.255
    wireless-channel 1
    wireless-essid CPS-IBSS
    wireless-mode ad-hoc
  1. 修改无线配置文件:编辑 /etc/wpa_supplicant/wpa_supplicant.conf,确保不包含任何与AP相关的配置。
  2. 使用以下命令重启无线服务:
sudo ifdown wlan0
sudo ifup wlan0

三、配置wlan1为AP模式

  1. 创建或编辑hostapd的配置文件 /etc/hostapd/hostapd.conf,使用以下内容:
interface=wlan1
driver=nl80211
ssid=CPS-AP-A
hw_mode=g
channel=6
ieee80211n=1
wmm_enabled=1
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]

macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=CPS123456
wpa_pairwise=TKIP
rsn_pairwise=CCMP
  1. 编辑 /etc/default/hostapd 文件,指定配置文件位置:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
  1. 编辑 /etc/dnsmasq.conf,添加以下内容:
interface=wlan1
dhcp-range=192.168.101.10,192.168.101.100,255.255.255.0,24h
  1. 设置静态 IP 地址。编辑 /etc/dhcpcd.conf 文件,添加以下配置:
interface wlan1
static ip_address=192.168.101.1/24
nohook wpa_supplicant
  1. 启动和启用服务
    a. 重启 dhcpcd
sudo service dhcpcd restart

b. 启动 hostapd 和 dnsmasq

sudo systemctl start hostapd
sudo systemctl enable hostapd
sudo systemctl restart dnsmasq
  1. 配置防火墙(如果需要)
    如果树莓派连接到互联网,并且您希望分享互联网连接,可能需要设置NAT规则:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

编辑 /etc/rc.local 文件,在“exit 0”之前添加以下行以恢复IPTABLES规则:

iptables-restore < /etc/iptables.ipv4.nat

四、测试结果

  1. 重启之后,有一定几率出现wlan0没有变为AD HOC模式,而是managed模式。
  2. 如果一切正常,则是AD HOC模式+AP模式。HOC之间可以互相ping通,AP模式也可以被其他设备连接并互相ping通。
    问题
    之前使用了三台设备组成AD HOC网络,可以正常ping通,但是有如下问题:
  3. 必须3台设备同时在线,一台设备关闭ad hoc或者关机,另外两台就无法ping通。
  4. 尝试更换essid名字、ip,无法解决。
  5. 尝试使用动态ad hoc网络协议,不成功。
  6. 尝试清除路由缓存,不成功。
  7. 总之就是问题不知道出现在哪里,按理说AD HOC自组织网络,怎么断掉一个就不行了呢?
    计划尝试解决
  8. 难道是至少三台设备?后续用4台设备,然后断开一台设备进行测试。

五、最终测试结果

  1. 对上述的猜测进行测试,果然是最少需要三台设备才能组成AD HOC网络。测试过程为,准备4台设备正常ping,去除任意一台也可以正常ping,但是同时去除2台就无法ping成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1655143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初识指针(3)<C语言>

前言 前面两篇文章已经介绍了一些关于指针的基础知识&#xff0c;下面我们可以涉及一些指针较容易混淆的概念&#xff0c;本篇文章将介绍数组名的理解、指针输入打印数组的不同格式、一维数组传参的本质&#xff0c;冒泡排序&#xff0c;二级指针&#xff0c;指针数组等。 数组…

【BST】Behavior Sequence Transformer for E-commerceRecommendation in Alibaba

一、提出背景 传统的Embedding&MLP模型结构将原始特征嵌入到低维向量中&#xff0c;然后将其concat后输入MLP进行最终推荐。DIN提出使用注意力机制来捕获候选项与用户先前点击的项之间的相似性。 然而&#xff0c;大多数这些工作只是连接不同的特征&#xff0c;而没有捕获用…

如何在您的域名中使用 Google Apps 创建 SPF 记录

关于 SPF 记录 SPF 记录是一种域名服务&#xff08;DNS&#xff09;记录&#xff0c;用于标识哪些邮件服务器被允许代表您的域发送电子邮件。它与在您的 DNS 区域中添加 MX 或 A 记录一样简单。 为什么它很重要&#xff1f; 如今&#xff0c;几乎所有滥用电子邮件消息都携带…

AMBA总线介绍

AMBA&#xff08;Advanced Microcontroller Bus Architecture&#xff09;是由ARM&#xff08;Advanced RISC Machines&#xff09;公司设计的一种高性能、高带宽的总线架构。AMBA总线广泛应用于各种嵌入式系统中&#xff0c;包括数字信号处理器、图形处理器、嵌入式处理器以及…

泽众财务RPA机器人常见五个应用场景

泽众RPA&#xff08;即机器人流程自动化&#xff0c;Robotic Process Automation, RPA&#xff09;解决方案是依托于各类先进信息技术手段的虚拟劳动力 &#xff08;数字劳动力&#xff09;&#xff0c;根据预先设定的程序操作指令对任务进行自动化处理&#xff0c;实现业务流程…

QGraphicsView实现简易地图11『指定层级-定位坐标』

前文链接&#xff1a;QGraphicsView实现简易地图10『自适应窗口大小』 提供一个地图初始化函数&#xff0c;指定地图显示的中心点和地图缩放层级 能够让地图显示某一层级的瓦片&#xff0c;并将中心点坐标显示在视图中心。 1、动态演示效果 7级地图-大连-老虎滩 定位到 8级地图…

【Shell】shell编程之条件语句

目录 一、条件测试操作 1.test命令 2.文件测试 3.整数值比较 4.字符串比较 5.逻辑测试 二、if语句的结构 1.单分支结构 2.双分支结构 3.多分支结构 三、case语句 总结 一、条件测试操作 1.test命令 测试表达式是否成立&#xff0c;若成立返回0&#xff0c;否则返回…

Apache DolphinScheduler 4月简报:社区发展与技术革新速递

各位热爱 DolphinScheduler 的小伙伴们&#xff0c;4 月份的 DolphinScheduler 社区月报更新啦&#xff01;这里将记录 DolphinScheduler 社区每月的重要更新&#xff0c;欢迎关注&#xff01; 月度 Merge 之星 感谢以下小伙伴 4 月为 Apache DolphinScheduler 所做的精彩贡献…

Graph RAG:基于知识图谱的检索增强技术与优势对比

身处信息爆炸时代&#xff0c;如何从海量信息中获取准确全面的搜索结果&#xff0c;并以更直观、可读的方式呈现出来是大家期待达成的目标。传统的搜索增强技术受限于训练文本数量、质量等问题&#xff0c;对于复杂或多义词查询效果不佳&#xff0c;更无法满足 ChatGPT 等大语言…

spark sql 与scala混合开发实现数据入mongodb

目录 概述资源解决问题效果环境配置相关包关键代码 测试测试结果 概述 在此提供 spark sql 与scala混合开发实现数据入mongodb 相关思路 将部分重复性功能进行通用化(使用SQL与Scala混合开发模式)。 相关组件 hadoop 3.3.6 spark 3.4.2 kyuubi 1.8.0 基于上术组件开发 资源 …

【笔试训练】day22

1.添加字符 求最少不相等的位数&#xff0c;可以先求最多相等的位数。 在添加字符之前&#xff0c;A和B最多相等的位数是多少&#xff1f;由于A后面可以添加字符&#xff0c;也就使得A字符可以在B的任意一个位置开始比较。遍历一遍这个比较的起点&#xff0c;从这个起点开始跟…

Angular中的路由

Angular中的路由 文章目录 Angular中的路由前言一、创建路由二、创建多个组件路由三、创建子路由四、创建多个组件子路由 前言 在Angular中&#xff0c;路由是用于在不同的视图和组件之间导航的机制。Angular提供了一种强大的路由机制来管理单页应用&#xff08;SPA&#xff0…

Npm Install Docusaurus Demo【npm 安装 docusaurus 实践 】

文章目录 1. 简介2. 前提2.1 安装 git2.2 安装 node 3. 安装4. 项目结构5. 访问5.1 localhost 访问5.2 ip 访问 1. 简介 Docusaurus 是一个facebook的开源项目&#xff0c;旨在帮助开发者构建易于维护和部署的文档网站。它提供了一个简单的方法来创建专业的文档网站&#xff0…

asp.net结课作业中遇到的问题解决3

目录 1、想实现不止鼠标滑过就显示图片&#xff0c;初始化状态下也可以显示图片&#xff0c;且每个图片还会自动变化&#xff0c;该如何实现 2、 同一个项目下的网页之间可以直接在地址栏输入跳转到阅读界面从而实现在这个跳转&#xff0c;那么如何防止这种现象呢&#xff1f;…

python数据分析——pandas DataFrame基础知识1

参考资料&#xff1a;活用pandas库 1、加载数据集 通常调用read_csv函数来加载CSV数据文件。若是.tsv文件也是用read_csv函数。 # 导入库 import pandas as pd # 默认情况下&#xff0c;read_csv函数会读取逗号分隔文件 # Gapminder数据使用制表符分隔 # 可以吧sep参数设置为…

计算机组成原理网课笔记

无符号整数的表示与运算 带符号整数的表示与运算 原反补码的特性对比 移码

推荐非常方便的初始配置nginx的开源工具

官网 https://www.digitalocean.com/community/tools/nginx?global.app.langzhCN直接复制base64字符串在 /etc/nginx 目录执行&#xff0c;会自动生成配置文件&#xff0c;最后执行 使用tar解压新的压缩配置 tar -xzvf nginxconfig.io-xxx.com.tar.gz | xargs chmod 0644在…

中国结(科普)

中国结是一种手工编织工艺品&#xff0c;它身上所显示的情致与智慧正是汉族古老文明中的一个侧面。 [1]它原本是由旧石器时代的缝衣打结&#xff0c;后推展至汉朝的仪礼记事&#xff0c;再演变成今日的装饰手艺。周朝人随身的佩戴玉常以中国结为装饰&#xff0c;而战国时代的铜…

Golang | Leetcode Golang题解之第78题子集

题目&#xff1a; 题解&#xff1a; func subsets(nums []int) (ans [][]int) {set : []int{}var dfs func(int)dfs func(cur int) {if cur len(nums) {ans append(ans, append([]int(nil), set...))return}set append(set, nums[cur])dfs(cur 1)set set[:len(set)-1]df…

Java 11 到 Java 8 的兼容性转换

Java 11 到 Java 8 的兼容性转换 欲倚绿窗伴卿卿&#xff0c;颇悔今生误道行。有心持钵丛林去&#xff0c;又负美人一片情。 静坐修观法眼开&#xff0c;祈求三宝降灵台&#xff0c;观中诸圣何曾见&#xff1f;不请情人却自来。 入山投谒得道僧&#xff0c;求教上师说因明。争奈…