如何使用不同的网络接口访问相同的IP

如何使用不同的网络接口访问相同的IP

我的 RaspberryPi 中连接了三个 WLAN 接口:

  • wlan0
  • wlan1
  • wlan2

它们中的每一个都连接到不同的SSID

  • gopro-0
  • gopro-1
  • gopro-2

GoPro 相机设置为 WiFi 路由器,具有始终相同的 IP 地址: 10.5.5.9

使用此配置,如果我调用:

curl http://10.5.5.9

那么wlan0将使用第一个接口(简化假设)。如果我想调用相机gopro-2,我必须调用:

curl http://10.5.5.9 --interface wlan2

有用。然而,存在一个问题,即并非所有命令都允许我指定接口(即ffmpeg- 或者我不知道它)。

是否有可能以某种方式欺骗Linux并代表某个IP地址要转发到10.5.5.9特定接口?

例如:

10.5.4.100 -> 10.5.5.9 @ wlan0
10.5.4.101 -> 10.5.5.9 @ wlan1
10.5.4.102 -> 10.5.5.9 @ wlan2

我希望任何解决方案甚至其他方法能够让我使用常规 HTTP GET/POST 方法在不同接口上调用相同的 IP。

答案1

我对于不同类型的设备也遇到了同样的问题,并找到了一种方法来解决这个问题。您需要 iptables mangle 和 ip Route 的组合

为每个接口指定一个与设备位于同一子网中的唯一 IP(以下为 192.168.44.8)。在此示例中,第一台设备的虚拟 IP 为 192.168.44.9

我的物理设备的 4 个不同接口均位于 192.168.44.1,通过这种模式和虚拟 IP,我可以可靠地与所有这些设备进行通信。

iptables -t mangle -A PREROUTING -d 192.168.44.9 -j MARK --set-mark 0x01

iptables -t nat -A PREROUTING -m mark --mark 0x01 -d 192.168.44.9 -j DNAT --to-destination 192.168.44.1

iptables -t nat -A POSTROUTING -m mark --mark 0x01 --destination 192.168.44.1 -j SNAT --to-source 192.168.44.8

完成此操作后,现在添加以下路线。

ip route add 192.168.44.0/24 dev eth4 table 1
ip rule add from all fwmark 1 table 1
ip route flush cache

您可以多次重复此模式,只需根据您拥有的接口数量不断增加标记和地址即可。

希望这对其他处理不同网络接口上重复地址的人有用。

答案2

我认为方法是使用 iptables,并为其设置路由。这是您提出的问题的类似答案:

https://serverfault.com/questions/345111/iptables-target-to-route-packet-to-specific-interface

这在 OpenBSD/pf 中稍微简单一些。

答案3

此线程上描述了完全相同的问题: https://forum.developer.parrot.com/t/multiple-parrot-anafi-control-via-olympe-on-linux-configure-ip/9590/2

它提供了一个完整的解决方案,确实使用了iptables规则和路由

相关内容