目标:捕获和检查原始 ROS 2 网络流量。
教程级别:高级
时间:20 分钟
内容
概述
先决条件
运行演示
安装
tcpdump
启动说话者和听者
显示未加密的发现数据包
显示未加密的数据包
启用加密
显示加密的发现数据包
显示加密数据包
概述
ROS 2 通信安全是关于保护节点之间的通信。之前的教程启用了安全性,但你如何真正判断流量是否被加密?在本教程中,我们将通过捕获实时网络流量来展示加密和未加密流量之间的区别。
注意
rmw_fastrtps_cpp
默认使用共享内存传输https://fast-dds.docs.eprosima.com/en/latest/fastdds/transport/shared_memory/shared_memory.html ,以提高端点在同一主机系统中时传输层的性能。安全飞地仍然适用,数据将被加密。但是,您无法捕获实时网络流量,因为数据不会出现在网络接口上。如果您使用 rmw_fastrtps_cpp
,则需要通过本教程并在发布者和订阅者之间使用不同的主机系统,或者通过启用 UDP 传输 https://fast-dds.docs.eprosima.com/en/latest/fastdds/transport/udp/udp.html#enabling-udp-transport 和设置 Fast-DDS XML 配置 https://github.com/ros2/rmw_fastrtps#full-qos-configuration 来禁用共享内存传输。
先决条件
本指南仅在 Linux 上运行,并假设您已安装 ROS 2。
运行演示
安装 tcpdump
在新的终端窗口中开始安装 tcpdump https://www.tcpdump.org/manpages/tcpdump.1.html ,这是一个用于捕获和显示网络流量的命令行工具。虽然本教程描述了 tcpdump
命令,您也可以使用 Wireshark https://www.wireshark.org/ ,这是一个类似的图形工具,用于捕获和分析流量。
sudo apt update
sudo apt install tcpdump
在单台机器上通过多个 ssh
会话运行以下命令。
启动说话者和听者
请重新启动讲述者和监听器,每个在自己的终端中。安全环境变量未设置,因此这些会话未启用安全性。