两个网络之间的奇怪路由

两个网络之间的奇怪路由

我的问题似乎很简单,但我就是想不明白。我的设置如下:

运行 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

成功了。希望它能帮助到别人。

相关内容