首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用不同的网络接口访问同一个IP

如何使用不同的网络接口访问同一个IP
EN

Unix & Linux用户
提问于 2017-03-22 07:03:52
回答 2查看 1.8K关注 0票数 3

我的RaspberryPi中有三个无线局域网接口:

  • wlan0
  • wlan1
  • wlan2

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

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

GoPro摄像头被设置为一个WiFi路由器,总是有相同的IP地址:10.5.5.9

如果我调用:

代码语言:javascript
复制
curl http://10.5.5.9

然后首先使用wlan0接口(简化假设)。如果我想调用相机gopro-2,我必须调用:

代码语言:javascript
复制
curl http://10.5.5.9 --interface wlan2

它起作用了。但是,有一个问题是,并非所有命令都允许我指定接口(即ffmpeg --或者我不知道)。

是否有可能以某种方式欺骗Linux并委托某些IP地址在特定接口上转发给10.5.5.9

例如:

代码语言:javascript
复制
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 /POST方法在不同的接口上调用相同的IP。

EN

回答 2

Unix & Linux用户

发布于 2019-01-07 04:44:14

对于不同类型的设备,我也有同样的问题,并想出了一种方法。您需要iptable、mangle和ip路由的组合。

在与设备相同的子网上给每个接口一个唯一的IP(下面是192.168.44.8)。在本例中,第一个设备的虚拟IP为192.168.44.9

我的物理设备在4个不同的接口上都在192.168.44.1,使用这种模式和虚拟IP,我可以可靠地与它们进行通信。

代码语言:javascript
复制
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

在此基础上,现在添加以下路由。

代码语言:javascript
复制
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

您可以多次重复此模式,只需为有多少接口保留标记和地址即可。

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

票数 3
EN

Unix & Linux用户

发布于 2017-03-22 07:18:35

我认为方法是使用iptable,并为此设置路线。以下是你提出的问题的类似答案:

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

在OpenBSD/pf中,这一点不那么复杂。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/352997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档