0

我有两台专用服务器,没有硬件防火墙。我想转发通过端口 1008 进入主服务器的所有请求,以由同一网络上的另一台专用服务器完成。我知道我需要设置某种 TCP 代理,但我昨天第一次听说 IPTables。有什么快速提示吗?

4

3 回答 3

2

最简单的方法是使用只是 TCP 代理的东西。使用 iptables 可以实现这一点,但并不容易。

从 A 向 B 转发请求很容易(使用 DNAT),但很难让 C 的响应通过 B 返回 A(因为 DNAT 不会更改发件人地址)。然后 A 会忽略响应,因为它们来自 C 而不是 B。

本质上,这样做的方法是将 B 设置为 C 的默认网关,并使用转发,但是,这会在 B 中增加一个故障点;如果 B 发生故障,C 的出站流量(包括对直接发送给 C 的请求的响应)最终将进入黑洞。

我认为使用 IPtables 可以没有这种路由技巧,但是您需要具有相同的 SNAT'd 和 DNAT'd 连接,这充其量是棘手的。

通常在这种情况下,大多数人将另一台主机(防火墙)放在两台机器前面并让它做出 DNAT 决策 - 当然这也会引入故障点,这就是为什么在关键设置中,防火墙通常具有冗余备份(它的配置是同步的,有时它的连接跟踪表是同步的)

于 2008-11-29T21:20:52.043 回答
1

首先,我建议您安装防火墙。我使用Shorewall管理 iptables 已经很长时间了,而且它很容易配置。其次,如果您使用诸如 Shorewall 之类的东西,则有关于如何进行 DNAT(端口转发)的简单指南

于 2008-11-29T20:15:32.737 回答
1

Carson 是对的:在服务器和客户端之间放置一个桥接防火墙。然后,防火墙(IP 表)可以将流量重定向到不同的端口和不同的机器。

由于防火墙是一个网桥,您不必更改网络设置,但必须为网桥接口分配一个 IP 地址,用于每个网络客户端和服务器所在的 IP 地址。否则重定向将不起作用。

警告:最初指向连接的机器必须在线(意味着:它的 IP 地址必须在使用中),否则重定向将不起作用。

如果重定向是作为高可用性故障转移的一种手段,我会考虑使用负载平衡器(集群)而不是防火墙,这会导致 linux 虚拟服务器(用于一般方法)或负载平衡器软件,如 Apache(使用 mod proxy_balancer)、balance 或 pount(如果只需要平衡 http 请求)。还有像 f5 这样的硬件设备用于负载平衡。

于 2008-12-01T11:49:18.653 回答