ROS多机通信(三)——Ubuntu Ad-Hoc 组网通信配置指南

基本概念

Ad-Hoc 网络是一种简单的点对点无线网络,设备(称为节点)可以直接相互通信或者通过中继间接通信,而无需依赖中央接入点。在这种网络中,所有设备是对等的,没有固定的路由器或基础设施支持。

特点

  • 快速部署:无需基础设施,适合快速建立网络。
  • 简单配置:设置过程简单,易于操作。
  • 安全性较低:常使用较弱的加密方式(如 WEP),安全性不高。
  • 基本 Ad-Hoc 模式通常支持单跳通信,多跳通信需通过 B.A.T.M.A.N. 或 OLSR 等路由协议实现。

以下是在 Ubuntu 系统上实现 Ad-Hoc 组网通信的详细步骤。通过配置无线接口,创建一个Ad-Hoc的无线网络,与其他设备进行通信。本指南提供三种配置方式:

  1. 基本 Ad-Hoc 模式:适用于简单、临时的设备间通信。(只支持单跳通信)
  2. B.A.T.M.A.N. 协议:适用于移动性高、拓扑变化频繁的网络。
  3. OLSR 协议:适用于大型、相对稳定的网络。

使用 B.A.T.M.A.N. 或 OLSR 协议后,Ad-Hoc 网络具备 Mesh 网络特性,支持网状拓扑和多跳传输(支持多跳通信)

准备工作

  • 硬件要求:确保您的 Ubuntu 系统配备支持 Ad-Hoc 模式的无线网卡,并已正确安装驱动。
  • 权限要求 :需要管理员权限,使用 sudo 执行命令。
  • 工具检查 :确认已安装 iwconfigip 命令(通常默认可用)。若使用 B.A.T.M.A.N. 或 OLSR,需额外安装相关工具。

配置步骤

1. 检查无线接口

首先,确认您的无线接口名称(例如 wlan0wlp2s0):

bash 复制代码
iwconfig

或者

bash 复制代码
ip link

记下您的接口名称,后续步骤将以 wlan0 为例。

2. 停止 Network Manager(可选)

Network Manager 可能会干扰手动配置,可暂时停止:

bash 复制代码
sudo systemctl stop NetworkManager

提示 :如果希望 Network Manager 永久不管理该接口,可编辑 /etc/NetworkManager/NetworkManager.conf,在 [ifupdown] 下添加 managed=false

3. 配置基本 Ad-Hoc 模式

将无线接口设置为 Ad-Hoc 模式并指定网络名称和频道:

bash 复制代码
sudo ip link set wlan0 down           # 关闭接口
sudo iwconfig wlan0 mode ad-hoc       # 设置为 Ad-Hoc 模式
sudo iwconfig wlan0 essid "MyAdHocNet"  # 设置网络名称(自定义)
sudo iwconfig wlan0 channel 6         # 设置频道(1-11 可选)
sudo ip link set wlan0 up             # 启用接口

或者

bash 复制代码
sudo ip link set wlan0 down # 关闭网卡
sudo iw wlan0 set type ibss # 设置 Ad-Hoc 模式并加入网络
sudo iw wlan0 ibss join MyAdHocNetwork 2412 # 设置 Ad-Hoc 模式并加入网络
sudo ip link set wlan0 up # 开启网卡

MyAdHocNet 是自定义的网络名称,所有设备需保持一致。

设置静态 IP 地址

为接口分配一个静态 IP,确保与其他设备在同一网段:

bash 复制代码
sudo ip addr add 192.168.1.1/24 dev wlan0

示例中 IP 为 192.168.1.1,其他设备可设为 192.168.1.2192.168.1.3 等。

验证连接

在其他设备上重复上述步骤,配置相同的网络名称(ESSID)和频道,然后测试连接:

bash 复制代码
ping 192.168.1.2  # 替换为其他设备的 IP

如果返回正常,说明基本 Ad-Hoc 网络已成功建立。

(可选)添加安全性

为网络设置简单加密(WEP,仅建议测试使用,因安全性较低):

bash 复制代码
sudo iwconfig wlan0 key s:yourpassword  # 设置密钥

所有设备需使用相同密钥。

4. 使用 B.A.T.M.A.N. 协议增强网络

什么是 B.A.T.M.A.N.?

B.A.T.M.A.N.(Better Approach To Mobile Ad-hoc Networking)是一种去中心化的路由协议,适用于多跳移动自组织网络。它通过分散路由决策,减少控制开销,适合拓扑频繁变化的场景。

安装 B.A.T.M.A.N. 工具
bash 复制代码
sudo apt update
sudo apt install batman-adv batctl
sudo modprobe batman-adv  # 加载内核模块
配置步骤
  1. 设置无线接口为 Ad-Hoc 模式(同上):
bash 复制代码
sudo ip link set wlan0 down
sudo iwconfig wlan0 mode ad-hoc
sudo iwconfig wlan0 essid "MyAdHocNet"
sudo iwconfig wlan0 channel 6
sudo ip link set wlan0 up
  1. 创建并配置 B.A.T.M.A.N. 接口:
bash 复制代码
sudo batctl if add wlan0
sudo ip link set bat0 up
  1. bat0 接口分配静态 IP:
bash 复制代码
sudo ip addr add 192.168.1.1/24 dev bat0
  1. 验证配置:
bash 复制代码
sudo batctl n #检查 B.A.T.M.A.N. 网络状态,将显示邻居节点的信息,表明你的设备已加入 B.A.T.M.A.N. 网络
ping 192.168.1.2  # 测试连接

5. 使用 OLSR 协议增强网络

什么是 OLSR?

OLSR(Optimized Link State Routing Protocol)是一种主动式链路状态路由协议,通过优化消息传播提供最佳路由路径,适合大型、相对稳定的网络。

安装 OLSR 工具
bash 复制代码
sudo apt-get install olsrd
配置步骤
  1. 设置无线接口为 Ad-Hoc 模式(同上):
bash 复制代码
sudo ip link set wlan0 down
sudo iwconfig wlan0 mode ad-hoc
sudo iwconfig wlan0 essid "MyAdHocNet"
sudo iwconfig wlan0 channel 6
sudo ip link set wlan0 up
  1. 编辑 OLSR 配置文件:
bash 复制代码
sudo nano /etc/olsrd/olsrd.conf

在文件中,找到 Interface 部分并添加你的无线网卡名称(例如 wlan0):

text 复制代码
Interface "wlan0"
{
  # 可选:调整 HelloInterval 等参数
}
  1. 启动 OLSR 服务:
bash 复制代码
sudo systemctl start olsrd
sudo systemctl enable olsrd  # 可选:开机自启
  1. wlan0 接口分配静态 IP:
bash 复制代码
sudo ip addr add 192.168.1.1/24 dev wlan0
  1. 验证配置:
bash 复制代码
sudo olsrd -d 1   # 查看路由表和拓扑
ping 192.168.1.2  # 测试连接

6. (可选)恢复 Network Manager

完成后,若需恢复 Network Manager:

bash 复制代码
sudo systemctl start NetworkManager

注意:恢复后可能需额外配置以避免冲突。

自动化配置(可选)

若需开机自动配置基本 Ad-Hoc 网络,编辑 /etc/network/interfaces

bash 复制代码
sudo nano /etc/network/interfaces

添加以下内容:

text 复制代码
auto wlan0
iface wlan0 inet static
  address 192.168.1.1
  netmask 255.255.255.0
  wireless-mode ad-hoc
  wireless-essid MyAdHocNet
  wireless-channel 6

保存后重启网络服务:

bash 复制代码
sudo systemctl restart networking

注意:若使用 B.A.T.M.A.N. 或 OLSR,自动化配置需相应调整。

故障排除

  • 无法连接

    • 确认所有设备的 ESSID 和频道一致。
    • 检查 IP 地址是否在同一网段(例如 192.168.1.x)。
    • 检查防火墙是否阻止 ping(ICMP)流量。
  • 查看状态
    基本 Ad-Hoc

    bash 复制代码
    iwconfig wlan0    # 检查 Ad-Hoc 配置
    ip addr show wlan0  # 检查 IP 配置

    B.A.T.M.A.N.

    bash 复制代码
    sudo batctl n          # 查看网络节点

    OLSR

    bash 复制代码
     sudo olsrd -d 1   # 查看路由表和拓扑

注意事项

  • 安全性:Ad-Hoc 模式默认不加密或仅支持 WEP 加密(安全性较低),仅适合受信任环境。B.A.T.M.A.N. 和 OLSR 本身不提供加密,建议结合其他安全措施。
  • 高级加密 :若需 WPA/WPA2,可尝试使用 wpa_supplicant,但配置较复杂。
  • 协议选择
    • 基本 Ad-Hoc:适合简单、临时网络。
    • B.A.T.M.A.N.:适合移动性高、拓扑变化频繁的网络。
    • OLSR:适合大型、相对稳定的网络。
  • 备份配置 :建议在配置前备份网络配置文件(如 /etc/network/interfaces),以便出错时恢复。

总结

本指南提供了在 Ubuntu 上配置 Ad-Hoc 网络的三种方式:

  1. 基本 Ad-Hoc 模式:快速部署,适合临时网络。
  2. B.A.T.M.A.N. 协议:增强移动性和适应性,适合动态网络。
  3. OLSR 协议:优化路由路径,适合大型网络。

根据您的网络需求选择合适的配置方式,确保所有设备配置一致即可开始使用!

相关推荐
数据与人工智能律师8 分钟前
数字资产革命中的信任之锚:RWA法律架构的隐形密码
大数据·网络·人工智能·云计算·区块链
菜包eo1 小时前
二维码驱动的独立站视频集成方案
网络·python·音视频
yzx9910131 小时前
关于网络协议
网络·人工智能·python·网络协议
fangeqin1 小时前
ubuntu源码安装python3.13遇到Could not build the ssl module!解决方法
linux·python·ubuntu·openssl
云卓SKYDROID1 小时前
无人机3控接力模式技术分析
无人机·通道·遥控器·高科技·云卓科技
zsq1 小时前
【网络与系统安全】域类实施模型DTE
网络·安全·系统安全
要开心吖ZSH2 小时前
《Spring 中上下文传递的那些事儿》Part 4:分布式链路追踪 —— Sleuth + Zipkin 实践
java·分布式·spring
幼稚园的山代王2 小时前
RabbitMQ 4.1.1初体验
分布式·rabbitmq·ruby
百锦再3 小时前
RabbitMQ用法的6种核心模式全面解析
分布式·rabbitmq·路由·消息·通道·交换机·代理
一路向北North3 小时前
RabbitMQ简单消息监听和确认
分布式·rabbitmq·ruby