IP 表端口转发

IP 表端口转发

我在负载均衡器后面有 4 台服务器,但其中只有 1 台运行特定服务。我希望其中 3 台根据端口将请求转发给第 4 台。因此,目前所有 4 台都在端口 80 上运行 nginx,但只有 1 台在端口 7070 上运行所需服务。

所有 4 个都是运行 CentOS 5 的 Amazon EC2 实例,位于 Amazon 弹性负载均衡器后面。我已设置负载均衡器以将端口 7070 转发到所有计算机。我需要服务器 1、2 和 3 将对端口 7070 的请求转发到服务器 4(正在运行该服务)上的端口 7070。

我确实在 sf 上尝试了一些现有的问题/答案,但无论出于什么原因,我立即失去了与服务器的连接并不得不重新启动;看到这些服务器正在运行实时服务,我突然对尝试碰运气的方法感到紧张!

需要说明的是,服务器 1、2 和 3 未在端口 7070 上运行任何程序,但服务器 4 却在端口 7070 上运行。它们均未运行任何其他类型的端口转发,因此目前尚未设置 IP 表。

谢谢。

答案1

至于为什么根据之前的说明这对您不起作用,我猜 iptables 默认阻止了所有内容。如果您按照此站点上的一组现有说明进行操作(说这个),它们可能也没有包含确保您所需的端口也已打开的说明。您需要为 SSH 打开 22 个端口,为您的 Web 服务器打开 80 个端口,可能还有其他端口。

合理引导:https://help.ubuntu.com/community/IptablesHowTo

请注意,此命令将确保即使您阻止自己,已建立的会话(例如,您当前的 SSH 会话)也将继续工作:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

由于您使用的是 EC2,我建议您在负载平衡生产集之外启动第 5 个实例进行测试。有时设置开发/生产分割很困难或昂贵,但使用 EC2 则不然。如果您损坏了某些东西,那么这六美分是值得的。

请注意,重新启动会清除您的测试规则;一旦您设置了经过测试并批准的内容,请务必使用iptables-save

相关内容