我的问题似乎很简单,但我就是想不明白。我的设置如下:
运行 RHEL 6.4 的服务器。它有两个网络接口:
ib0:infiniband 网络(请不要问为什么:)192.168.1.0/24,大多数服务器都在这里。IP:192.168.1.51
eth0:以太网网络 192.168.3.0/24,最终用户在这里(还有一些服务器)。IP:192.168.3.51。
此服务器充当服务器和用户之间的网关。它启用了标准 IP 转发:
net.ipv4.ip_forward = 1
...仅此而已。它运行良好,这里没有什么可抱怨的。
所以现在我需要做以下事情:来自 192.168.3.0 网络的用户和来自 192.168.1.0 网络的服务器都需要访问外部网络 1.0.0.0/16。此网络由另一个部门管理 - 他们在他们那边部署了一个路由器并为我提供了物理链路。他们的路由器有一个 IP 192.168.3.250。
因此,我在网关服务器上设置了静态路由,如下所示:
ip route add 1.0.0.0/16 via 192.168.3.250
...并且来自 192.168.3.0 网络的最终用户可以访问 1.0.0.0。但是,来自 192.168.1.0 网络的服务器无法访问它。
总的来说,我不太擅长路由和网络,所以我怀疑我应该为我的 192.168.1.0 网络启用 NAT(??),但是当我阅读 iptables 手册时,我的头开始很疼……而且,问题是,该服务器应该继续充当 infiniband 和以太网之间的网关,最好尽可能减少开销。
所以问题是:我该怎么做?
答案1
好的,因此,通过无数次错误,我们设法使用 iptables NAT 使其工作。
以下是我的 /etc/sysconfig/iptables 中的配置行:
-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
成功了。希望它能帮助到别人。