我的问题似乎很简单,但我不能把我的头围绕。 我的设置是这样的:
运行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
那就是诀窍。 希望它能帮助别人。