我在我的机器上在 2 个不同的接口上设置了 2 条不同的路由来到达单个目的地。
当我 ping 目标网络上的一台机器时,数据包会通过优先级最高的路由。有没有办法将数据包发送到到达该目的地的每条路由?
我正在使用 ROS2,它会自动丢弃重复的消息。我们的想法是通过两种方式与我们的云进行通信以实现可靠性。一种通过直接 4G 进行连接eth1
,另一种通过地面节点(IP 无线电)eth0
通过以太网连接。这个想法是实际上同时向这两个接口发送消息。理想情况下,我也需要同时阅读它们。
答案1
我对 ROS2 没有任何特殊的经验,但对于任何普通的 Linux 发行版,您可以使用iptables
或nftables
复制流量。当然,您需要能够在接收端处理重复的数据包。
对于两者,您可以通过其中一个接口设置默认路由,然后执行如下操作
nft add rule mangle prerouting dup to $secondaryGatewayIP
iptables -t mangle -A PREROUTING -j TEE --gateway $secondaryGatewayIP
这些规则将复制所有流量,这可能不是您想要的。您始终可以使用更具限制性的过滤器来将重复限制为仅发送到您的服务器的流量