两个接口之间的第 3 层 IP 转发/NAT

两个接口之间的第 3 层 IP 转发/NAT

我有一个奇怪的配置,看看你是否能给我一些建议:)

我有两个网络(10.X/24 和 20.X/24),它们之间由一台 Linux 机器连接。这台 Linux 有两个接口,每个接口都连接到其中一个网络。连接到这些网络的设备没有网关,我无法更改它,也无法安装 VPN 等附加软件……我也无法更改子网掩码。

我想要的是让每个网络的一个设备进行通信,我当时想配置类似 IP FORWARDING 的东西,但要更改 SRC 和 DST,我认为这更像是 NAT。这个想法是,如果我从 20.50(网络 A 中的设备)ping 到 20.254(不存在),它会将此数据包重定向到 10.50,将 src 更改为 10.254。这有点像虚拟 IP。

主要思想是做这样的翻译:

输入 eth0(网络 A)SRC 20.50 DST 20.254 --> 输出 eth1 SRC 10.254 DST 10.50

输入 eth1(网络 B)SRC 10.50 DST 10.254 --> 输出 eth0 SRC 20.254 DST 20.50

请记住,地址 10.254 和 20.254 不存在,我使用它们与其他网络联系,因为我无法设置网关来询问未知网络,也无法添加静态路由。

让我们看看是否有人可以给我提供最好的方法。

谢谢!

答案1

您需要将这些 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符号概括子网检查。

相关内容