两个networking之间的奇怪路由

我的问题似乎很简单,但我不能把我的头围绕。 我的设置是这样的:

运行RHEL 6.4的服务器 它有两个networking接口:

ib0:infinibandnetworking(请不要问为什么:) 192.168.1.0/24,大部分的服务器都在这里。 IP:192.168.1.51

eth0:以太网networking192.168.3.0/24,最终用户在这里(和几个服务器)。 IP:192.168.3.51。

该服务器充当服务器和用户之间的网关。 它有一个标准的IP转发function:

net.ipv4.ip_forward = 1 

…没有别的。 它工作得很好,在这里没有抱怨。

所以现在我需要做以下工作:来自192.168.3.0networking的用户和来自192.168.1.0networking的服务器都需要访问外部networking1.0.0.0/16。 这个networking由另一个部门pipe理 – 他们已经部署了一个路由器,为我提供了一个物理链路。 他们的路由器有一个IP 192.168.3.250。

所以,我在我的网关服务器上设置了一个静态路由:

 ip route add 1.0.0.0/16 via 192.168.3.250 

…和我的最终用户从192.168.3.0networking能够访问1.0.0.0。 但是,来自192.168.1.0networking的服务器无法访问它。

一般来说,我并不擅长路由和networking,所以我怀疑我应该为192.168.1.0networking(?)启用NAT,但是当我正在阅读iptables手册时,我的头开始变得非常糟糕。另外,问题是,这个服务器应该继续充当infiniband和以太网之间的网关,最好是尽可能less的开销。

所以问题是:我该怎么做?

那么,通过无数的错误设法使它使用iptables NAT。

这是我的/ etc / sysconfig / iptables中的configuration行:

 -A POSTROUTING -s 192.168.1.0/24 -d 1.0.0.0/16 -p tcp -o eth0 -j SNAT --to-source 192.168.3.51 -A POSTROUTING -s 192.168.1.0/24 -d 1.0.0.0/16 -p udp -o eth0 -j SNAT --to-source 192.168.3.51 

那就是诀窍。 希望它能帮助别人。