带有一个IP地址的双接口PC

我想在以下设置中设置一个带有2个networking接口的机器:

LAN1 <—> PC <—> LAN2

棘手的部分是PC应该可以从LAN1和LAN2访问,IP地址相同,LAN1和LAN2 不能连接。 到目前为止我已经尝试过:

1)在两个接口上build立网桥; 但是桥梁通常是为了转发stream量而devise的,我不想要这样的行为。

2)使用模式3build立绑定接口。这可以在两个接口上发送任何回应。

你们知道有其他的select吗?

谢谢,

桑德

我认为你的意思是:

  • eth0连接到一个具有192.168.0.0/24的networking
  • eth1连接到另一个也有192.168.0.0/24的networking
  • 一边的networking是与另一边的networking不同的广播域
  • 您的PC在两个networking中都具有相同的IP地址(例如:192.168.0.1/24)

是对的吗?

这不是设置networking的正确方法。 系统只能有一个接口连接给定的子网。

假设您的系统(192.168.0.1)想要联系另一个系统(192.168.0.2)。 应该使用哪个接口? 没有办法告诉。 如果目标IP存在于两个子网中,哪个是正确的目标系统要联系? 没有办法告诉。

您将需要以不同的方式为每个接口编号,如下所示:

  • eth0 – 192.168.0.1/24
  • eth1 – 192.168.1.1/24

然后在eth1接口上执行SNAT和DNAT,这样你的系统就认为它正在与另一个networking进行通信,但是iptables实际上是在input/输出时用不同的源/目标IP来重写数据包。

我自己在这里find了一个整洁的工作解决scheme,将它分享给有类似问题的人。

毕竟,我需要一座桥; 你可以使用ebtables很容易地操作这个行为。 为了确保网桥不转发数据包,我需要做的就是将ebtables“forward”策略更改为“drop”。 这使得在eth0上进入的数据包永远不会在eth1上发送出去,而你的盒子上仍然有很好的桥接function(双方都可以访问一个IP)。

PC现在在两个接口上侦听相同的IP,并根据其ARPparsing来select在哪个接口上发送数据包。

码:

 ebtables -P FORWARD DROP brctl addbr br0 brctl addif br0 eth0 brctl addif br0 eth1