我想在以下设置中设置一个带有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的正确方法。 系统只能有一个接口连接给定的子网。
假设您的系统(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