是否可以拥有一个带有2个以太网适配器的Linux机箱,连接到具有相同IP范围的2个网络(无需路由)?


1

忍受我。这与Stack Overflow问题有关

我的Linux事物(实际上是BeagleBoard)有两个接口,eth0和eth1。它需要连接到eth0上的客户端网络(地址范围未知,可能是DHCP,可能是192.168.0.x)。我的软件还需要通过专用链接(即只是设备到设备)连接到eth1上的另一个设备。我想保持私有网络完全分离 - 它不应该在主网络上可见。只有我自己在Beagle上的代码才能与eth1上的设备通话。

我已经想出如何使我的C代码将套接字绑定到特定接口以及IP地址。我也可以将私有链接放在一个单独的子网上,主网络,一切都很开心。

但是,鉴于我不知道主网络的地址范围,并且我想为我的专用链路使用固定IP地址(为简单起见),我如何确保地址范围不会发生冲突?我尝试将私有设备放在与主网络(用于测试)相同的IP地址上,这导致路由问题。

是否可以设置路由,以便重复的IP地址(在主网络和我的专用网络上)可以工作(假设我可以指定接口和IP地址)?还是那个疯狂的谈话?我不需要在网络之间实际“路由”任何东西,我的私人设备不需要看到主网络。我只是需要它仍然工作,即使IP地址碰巧是相同的。

或者,我可以在私人网站上使用其中一个保留的IP地址范围,以便我知道它不会与主网络冲突吗?

我一直在寻找答案,但这似乎是一件不寻常的事情,所有的答案都假设两个以太网接口将连接到不同的子网。

有任何想法吗?包括其他方式做...谢谢!


这并不能严格回答您的问题,但为什么要将它们放在相同的IP范围内?如果一个网络使用192.168。*。*,则另一个网络使用10。*。*。*,反之亦然。
wingedsubmariner 2013年

是的,这确实有效 - 但我们不知道客户的网络将提前使用什么。我们无论如何都必须配置eth0(最有可能是DHCP但可能是静态地址),但我希望避免为每个安装配置私有连接。如果那一方总是一样的话会很棒。
杰里米

好吧,你可以将eth1和其他设备的IP地址设置为你控制的地址(即你的网络上有这些IP地址的服务器),因此永远不会出现在你的客户网络中。您可以设置路由表以使用eth1,而不是通过eth0路由到这些地址应该在哪里。这打破了各种规则,但它会起作用。
wingedsubmariner 2013年

Answers:


2

两部分; 首先是linux特定方面的事情:

创建您的界面非常小心,您的内部接口不会影响Linux路由表。netstatip命令应该是您分析路由信息的朋友。

一旦您的接口不可全局路由,然后在创建套接字后继续使用setsockopt绑定到该接口。这些是您可能需要的两个选项:

SO_BINDTODEVICE
SO_DONTROUTE

另见linux / if.h。

更轻松但不完整回答您的问题; 使用IPv6。


谢谢!Re:IPv6:我看到有各种保留的地址范围。是否有一些地址可以安全地在我的内部接口上使用,并且保证永远不会与某人的局域网上使用的地址范围冲突?
杰里米2014年

不,它们最初是一个定义站点本地IP范围的RFC,但是标准化委员会认为这是不可行的......但是,如果你选择一些随机范围给出8字节地址,那么对于可预见的未来你应该没问题。
Claris 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.