三层IP转发/ NAT在两个接口之间

我有一个奇怪的configuration,让我们看看你是否可以给我一些build议:)

我有两个networking(10.X / 24和20.X / 24)由他们之间的Linux机器连接。 这个linux有两个接口,每个接口都有一个这样的networking。 到这些networking的设备没有网关,我不能改变,既不安装像vpn等附加软件…我也不能改变子网掩码。

我想要的是交stream每个networking的一个设备,我在想的是configuration一个像IP FORWARDING,但改变SRC和DST,我认为这更像是一个NAT。 这个想法是,如果我从20.50(来自networkingA的设备)ping到20.254(不存在),它将该分组redirect到10.50,将src更改为10.254。 这就像虚拟IP一样。

主要想法是做这个翻译:

inputeth0(networkingA)SRC 20.50 DST 20.254 – > output eth1 SRC 10.254 DST 10.50

inputeth1(networkingB)SRC 10.50 DST 10.254 – >输出eth0 SRC 20.254 DST 20.50

请记住,addresces 10.254和20.254不存在,我用它们与其他networking联系,因为我不能设置一个网关,要求未知的networking既不添加静态路由。

让我们看看是否有人能给我最好的办法。

谢谢!

您需要将这些IP分配给您的网关盒子,如:

ip addr add 192.168.10.254/24 dev eth0 ip addr add 192.168.20.254/24 dev eth1 

然后,您可以使用NAT规则进行翻译,例如:

 iptables -t nat -A PREROUTING -i eth0 -s 192.168.20.50 -d 192.168.20.254 -j DNAT --to-destination 192.168.10.50 iptables -t nat -A POSTROUTING -o eth1 -d 192.168.10.50 -j MASQUERADE 

其他翻译可以做类似的。 另外,上述规则是根据您的翻译示例编写的。 您可以使用/24表示概括检查子网。