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 协议:优化路由路径,适合大型网络。

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

相关推荐
阿俊仔(摸鱼版)4 小时前
Ubuntu上安装Docker
linux·ubuntu·docker
故事与他6454 小时前
Thinkphp(TP)框架漏洞攻略
android·服务器·网络·中间件·tomcat
Pandaconda5 小时前
【后端开发面试题】每日 3 题(二十)
开发语言·分布式·后端·面试·消息队列·熔断·服务限流
郑州吴彦祖7725 小时前
【Java】UDP网络编程:无连接通信到Socket实战
java·网络·udp
BigBookX5 小时前
在 Ubuntu 中配置开机自启动脚本并激活 Anaconda 环境
linux·运维·ubuntu
kfepiza5 小时前
netplan是如何操控systemd-networkd的? 笔记250324
linux·网络·笔记·ubuntu
九转苍翎6 小时前
Java EE(12)——初始网络
网络·java-ee
青花锁7 小时前
Ubuntu 系统部署 Ollama + DeepSeek + Docker + Ragflow
linux·ubuntu·docker·deepseek
Honeysea_708 小时前
网络编程和计算机网络五层模型的关系
网络·计算机网络
独行soc8 小时前
2025年渗透测试面试题总结- shopee-安全工程师(题目+回答)
java·网络·python·科技·面试·职场和发展·红蓝攻防